[GHC] #9220: type roles for unboxed arrays

GHC ghc-devs at haskell.org
Wed Nov 12 09:51:24 UTC 2014


#9220: type roles for unboxed arrays
-------------------------------------+-------------------------------------
              Reporter:  rwbarton    |            Owner:  goldfire
                  Type:  bug         |           Status:  new
              Priority:  normal      |        Milestone:  7.10.1
             Component:  Core        |          Version:  7.8.1
  Libraries                          |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:              |  Related Tickets:
  None/Unknown                       |
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------

Comment (by ekmett):

 Simon,

 I have code in production where the contract for a newtype and the wrapper
 you want to have enforced here doesn't hold -- in particular cases where
 the newtype _solely exists_ to create a Storable with different alignment
 and sizing properties. This comes up for all sorts of things, packed
 colors, bit arrays, etc, structures folks are marshaling for std140
 compliance to/from OpenGL uniform buffers...

 It seems dangerous to me to tie a contract about the behavior of a user
 defineable class to representability.

 If we're letting users define Storable instances is seems strange to me to
 conflate the two notions of representation (bit representation of
 Storable) and the heap representation for GHC.

 This puts me very much in the Plan A camp, personally.

 Plan B it seems could just lead to segfaults for existing user instances
 out there.

 With Ptr we're basically handing the user a live grenade, they know
 handling it wrong can lead to segfaults, and they do so with due care.

 With an Array I don't think there is any such expectation of unsafety, and
 folks are expecting things to 'just work'.

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


More information about the ghc-tickets mailing list