On 18/06/2012 23:06, Roman Leshchinskiy wrote:
On 18/06/2012, at 19:39, Johan Tibell wrote:

On Mon, Jun 18, 2012 at 9:54 AM, Bas van Dijk <v.dijk....@gmail.com> wrote:
I like the idea of the vector-safe package. Are you also proposing to
add this package to the HP? (I would also be +1 on that)

I think it makes sense as a separate package, but I don't think it
makes sense to add to the HP. SafeHaskell isn't used enough to warrant
that.

I fully agree with Johan and I wouldn't even really want to maintain
this separate package. It is a lot of work for something I don't use
and don't entirely understand. The *.Safe modules in vector are
currently bitrotted since I forget to update them when I add new
operations and I'm not really sure what is and isn't "safe" anyway.
Is anybody interested in this code at all?

I respectfully disagree with this approach, I think it's heading in the wrong direction.

We should be moving towards safe APIs by default, and separating out unsafe APIs into separate modules. That is what SafeHaskell is about: it's not an obscure feature that is only used by things like "Try Haskell", the boundary between safety and unsafety is something we should all be thinking about. In that sense, we are all users of SafeHaskell. We should think of it as "good style" and best practice to separate safe APIs from unsafe ones.

I would argue against adding any unsafe APIs to the Haskell Platform that aren't in a .Unsafe module. (to what extent that applies to vector I don't know, so it may be that I'm causing trouble for the proposal here).

Cheers,
        Simon



I see that the trustworthiness of the .Safe modules is conditional on
whether bound checking is enabled in vector:

#if defined(VECTOR_BOUNDS_CHECKS)
{-# LANGUAGE Trustworthy #-}
#endif

The VECTOR_BOUNDS_CHECKS pragma would not be directly available in
vector-safe. But I guess, by using the install-includes cabal field,
vector can export a header file that exports this symbol when bound
checking is enabled.

That sounds like a reasonable solution.

VECTOR_BOUNDS_CHECKS is defined in vector.cabal as follows:

   if flag(BoundsChecks)
     cpp-options: -DVECTOR_BOUNDS_CHECKS

Doesn't Cabal provide access to the flags that a package has been compiled 
with? It seems like it should and depending on the BoundsChecks flag would be 
cleaner than depending on a CPP symbol.

Roman



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




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

Reply via email to