On 30/08/2012 02:33, Johan Tibell wrote:
Hi all,

After reading the Safe Haskell paper today, I got the impression that
no one actually wants the .Safe modules currently in vector. If vector
was to be made Safe Haskell friendly, we should instead add .Unsafe
modules (and have the rest of the modules declared Trustworthy).
Having .Unsafe modules is better than having .Safe modules, because

  * there are many more safe functions than unsafe functions, and
  * Haskell is by default safe, so having modules called .Safe is a bit
like having modules called .Pure. There's precedence for having
.Unsafe modules in e.g. bytestring.

If that's the case, and if Roman agrees, I suggest we release a new
major version that

  * removes all the .Safe modules [1],
  * adds new .Unsafe modules, and
  * marks the functions that are now exported through the .Unsafe
modules deprecated in their original (non-.Unsafe) location.

+1 from me, although when we discussed doing this previously Roman was not keen.

I suggest that the deprecation doesn't involve an actual deprecation
pragma in this release [2], but instead just a comment. A future major
release could add the deprecation pragma and another major release
after that could remove the actual functions.

Why not a deprecation pragma initially? That's like adding another level of "soft deprecation"; how long before we also need "extra-soft deprecation" and "ultra-soft deprecation"? (I feel a bog-roll analogy coming on :-)

1. Normally I would suggest a deprecation period before removing
functions from an API, but I just searched through all of Hackage and
there's only a single package (bitvec) that makes use of the .Safe API

We also have:

  Data.Array.IO.Safe
  Control.Monad.ST.Safe
  Foreign.Marshal.Safe

and I think all of these are in the same state: the unsafe APIs in the non-Safe modules are currently deprecated, and the .Safe modules can be removed at some time in the future.

Cheers,
        Simon


_______________________________________________
Haskell-platform mailing list
Haskell-platform@projects.haskell.org
http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-platform

Reply via email to