On 2016-05-11 03:08, Walter Bright wrote:
Why does vibe.d throw?

Also, any throwing code can be converted to nothrow with:

    try
    {
     ...throwing code...
    }
    catch (Exception e)
    {
     ...
    }

There's code in DWT and Tango as well that throws a SyncException exception when failing to acquire a lock.

The code in DWT is basically copy pasted from Tango. Since druntime is derived from Tango I guess we can update the code in DWT and Tango to do what druntime does now, which is to throw an error instead.

It's still a breaking change.

Although I see now that there is a problem with updating the code in DWT. In some cases it catches SyncException with some logic based on that. In one case the try-catch is wrapped in a loop and will continue to try to acquire the look [1]. In another case it catches SyncException and triggers an interrupt [2], which I see now is not implemented [3].

Please advise how these two cases should be implemented when a lock will throw an error instead of exception (since errors should not be caught).

Hmm, maybe I can extend the API. Monitor is not used directly in any of the cases.

[1] https://github.com/d-widget-toolkit/org.eclipse.swt.gtk.linux.x86/blob/master/src/org/eclipse/swt/internal/Lock.d#L55

[2] https://github.com/d-widget-toolkit/org.eclipse.swt.gtk.linux.x86/blob/master/src/org/eclipse/swt/widgets/Synchronizer.d#L192-L198

[3] https://github.com/d-widget-toolkit/org.eclipse.swt.gtk.linux.x86/blob/master/src/org/eclipse/swt/internal/Compatibility.d#L402-L405

--
/Jacob Carlborg

Reply via email to