[reactive] Bug fixes in progress

Sterling Clover s.clover at gmail.com
Sat May 30 01:18:44 EDT 2009


> Yes indeed. I'll have a go right away:
> - When an unsafePerformIO action is aborted (due, presumably, to an
> exception either thrown by or thrownTo the thread running it), the RTS
> puts the entire execution context of the IO code on ice, so if the
> closure is later re-entered no work will have been lost, and actions
> aren't executed twice unless the entire thing is executed twice. The
> implementation is somewhat involved, but this is the Right Thing; it
> makes the semantics of unsafePerformIO nearly identical to ordinary
> pure code with regards to exceptions.
>

This is perhaps a silly idea, but perhaps useful -- there should be a  
version of unsafePerformIO that always does the "right" thing with  
regards to exceptions. From that, the other unamb primitives can  
perhaps be built more obviously? Additionally, this implementation  
would be potentially useful to libraries beyond unamb.

Cheers,
S.


More information about the Reactive mailing list