ghc-prim

GHC primitives

Version on this page:0.5.2.0
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.2.0@sha256:2269804910fcfb0e8f8b518ff9a87ad1832e69aa63a65327d8678ee313dca742,2322

Module documentation for 0.5.2.0

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

Changes

0.5.2.0

  • 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