[GHC] #8310: Can we change the semantics of `Trustworthy`?

GHC ghc-devs at haskell.org
Tue Oct 15 05:27:35 UTC 2013


#8310: Can we change the semantics of `Trustworthy`?
-------------------------------------+------------------------------------
        Reporter:  ekmett            |            Owner:  dterei
            Type:  feature request   |           Status:  new
        Priority:  normal            |        Milestone:
       Component:  Compiler          |          Version:  7.6.3
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by dterei):

 @monoidal no trouble, yes I've been thinking it over and discussing with
 David
 Mazieres. There is a complication that isn't clear how to resolve.
 Mazieres is
 away in France right now so that's been delaying me.

 The problem. Imagine this situation.
 * `Data.ByteString` is marked and compiled as Trustworthy
 * module `A` imports Data.ByteString
 * module `A` is marked Trustworthy
 * module `A` resides in package P (and P only contains A)

 Assume that A could be inferred as `Safe`.

 Right now if you compile A with the following Safe Haskell flags you get
 these package trust dependencies:

  * Safe: bytestring, base
  * Trustworthy (ByteString imported without safe keyword): p
  * Trustworthy (ByteString imported with safe keyword): p, bytestring
  * (Inferred Safe): bytestring, base

 So if we changed it so `Trustworthy` marked modules could be inferred
 Safe,
 what package trust dependencies should be attached?

 Options:

  1) bytestring, base
  2) p
  3) p, bytestring
  4) p, bytestring, base

 It becomes unintuitive what packages you'll need to trust and that set
 will
 change unpredictably over time.

 Currently, package trust has a clear relationship and direct with
 `Trustworthy`,
 this change either makes that relation indirect, or confuses the boundary
 of
 `Safe` vs. `Trustworthy`.

 I'd love to hear any thoughts you or @ekmett have on this.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8310#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list