ghc-prim

GHC primitives

Version on this page:0.5.3
LTS Haskell 22.39:0.10.0
Stackage Nightly 2024-10-29:0.11.0
Latest on Hackage:0.11.0

See all snapshots ghc-prim appears in

BSD-3-Clause licensed
Maintained by [email protected]
This version can be pinned in stack with:ghc-prim-0.5.3@sha256:2284e90b0d56dfd389588b5c927e7f22c17f1d6c2291464cb0cc3f9651b0ba23,2319

Module documentation for 0.5.3

This package contains the primitive types and operations supplied by GHC.

Changes

0.5.3 August 2018

  • Shipped with GHC 8.6.1

  • Added to GHC.Prim: addWordC# :: Word# -> Word# -> (# Word#, Int# #)

  • unpackClosure# can now unpack any valid Haskell closure. Previously it returned empty pointer and non-pointer arrays for thunks.

0.5.2.0 March 2018

  • Shipped with GHC 8.4.1

  • Added to GHC.Prim:

      compareByteArrays# :: ByteArray# -> Int# -> ByteArray# -> Int# -> Int# -> Int#
    
  • Don’t allocate a thunk for each unpacked UTF-8 character in unpackCStringUtf8#

0.5.1.1 November 2017

  • Shipped with GHC 8.2.2

  • Changed strictness properties of catchRetry# (#14171)

0.5.1.0 July 2017

  • Shipped with GHC 8.2.1

  • Added to GHC.Prim:

      fabsDouble# :: Double# -> Double#
      fabsFloat# :: Float# -> Float#
      isByteArrayPinned# :: ByteArray# -> Int#
      isMutableByteArrayPinned# :: MutableByteArray# s -> Int#
      anyToAddr# :: a -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)
    
  • New primitives for compact regions in GHC.Prim:

      Compact#
      compactNew#
      compactResize#
      compactContains#
      compactContainsAny#
      compactGetFirstBlock#
      compactGetNextBlock#
      compactAllocateBlock#
      compactFixupPointers#
      compactAdd#
      compactAddWithSharing#
      compactSize#
    
  • Generalised noDuplicate# from

      noDuplicate# :: State# (RealWorld) -> State# (RealWorld)
    

    to

      noDuplicate# :: State# s -> State# s
    

0.5.0.0

  • Shipped with GHC 8.0.1

  • GHC.Classes: new class IP (a :: Symbol) b | a -> b

  • GHC.Prim: changed type signatures from

      check# :: (State# RealWorld -> (# State# RealWorld, a #)) -> State# RealWorld -> (# State# RealWorld, () #)
      finalizeWeak# :: Weak# a -> State# RealWorld -> (# State# RealWorld, Int#, State# RealWorld -> (# State# RealWorld, () #) #)
      mkWeak# :: a -> b -> c -> State# RealWorld -> (# State# RealWorld, Weak# b #)
    

    to

      check# :: (State# RealWorld -> (# State# RealWorld, a #)) -> State# RealWorld -> State# RealWorld
      finalizeWeak# :: Weak# a -> State# RealWorld -> (# State# RealWorld, Int#, State# RealWorld -> (# State# RealWorld, b #) #)
      mkWeak# :: a -> b -> (State# RealWorld -> (# State# RealWorld, c #)) -> State# RealWorld -> (# State# RealWorld, Weak# b #)
    
  • Removed from GHC.Prim:

      parAt# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int#
      parAtAbs# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int#
      parAtForNow# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int#
      parAtRel# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int#
      parGlobal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int#
      parLocal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int#
    
  • Added to GHC.Prim:

      getSizeofMutableByteArray# :: MutableByteArray# d -> State# d -> (# State# d, Int# #)
      subWordC# :: Word# -> Word# -> (# Word#, Int# #)
      runRW# :: (State# RealWorld -> (# State# RealWorld, o #)) -> (# State# RealWorld, o #)
    
  • Added to GHC.Types:

      data Module = Module TrName TrName
      data Nat
      data Symbol
      data TrName = TrNameS Addr# | TrNameD [Char]
      data TyCon = TyCon Word# Word# Module TrName