> I don't think it was ever the intention that 'safe' should have a
> guaranteed serialisation property.  I think the idea was that
> 'threadsafe' was the most desirable, with 'safe' and 'unsafe' only
> available for use if you wanted more efficiency and had some separate
> guarantees that the extra efficiency was not at the expense of
> correctness.
> 
> To be completely explicit, I think that increasing the safety level of
> any foreign import should never make the program fail.

If I recall correctly, the motivation for keeping "safe" was that we
wanted to be able to make calls into non-threadsafe C libraries.  Which,
incedentally, would break the property that Simon mentions above: a
non-threadsafe library would *require* foreign imports to be labelled
"safe" rather than "threadsafe".

However, at the time I don't think we appreciated the implementation
diffiulties arising from "safe".  Also, Wolfgang has pointed out that
you can simulate serialisation in Haskell using MVars.

Cheers,
        Simon
_______________________________________________
FFI mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/ffi

Reply via email to