[GHC] #12875: GHC fails to link all StaticPointers-defining modules of a library in an executable

GHC ghc-devs at haskell.org
Thu Nov 24 09:00:15 UTC 2016


#12875: GHC fails to link all StaticPointers-defining modules of a library in an
executable
-------------------------------------+-------------------------------------
        Reporter:  bgamari           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.2.1
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
                                     |  StaticPointers
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by mboes):

 > Also I don't understand the API. What's unsafe about looking up a static
 pointer? Surely we shouldn't be exposing low-level details like
 fingerprints?

 I think both of these points were already discussed in previous tickets
 (but I don't have pointers handy right now). The only lookup operation we
 have right now is one that doesn't check that you're looking up at the
 right type. That's because we don't yet store in the SPT what the type of
 the pointer really should be.

 As for fingerprints: an alternative is to expose
 {{{
 serializeStaticPtr :: ... => StaticPtr a -> ByteString
 unserializeStaticPtr :: ... => ByteString -> StaticPtr a
 }}}
 As discussed, not a viable API, because then `base` depends on
 `bytestring`. That API would have the compiler make more assumptions than
 it needs to. With the current API the user has the freedom to
 serialize/deserialize in whatever way she wants (including e.g. integers
 created by a perfect hash function). IOW we try to bake into the compiler
 as little as possible, leaving the rest to implementation choices in
 "userland" libraries.

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


More information about the ghc-tickets mailing list