2298846cd12a72025afc013819c604451be8b96a
[ghc.git] / libraries / ghc-prim / changelog.md
1 ## 0.6.1
2
3 - Shipped with GHC 8.10.1
4
5 - Added to `GHC.Prim`:
6
7         closureSize# :: a -> Int#
8
9 ## 0.6.0
10
11 - Shipped with GHC 8.8.1
12
13 - Added to `GHC.Prim`:
14
15         traceBinaryEvent# :: Addr# -> Int# -> State# s -> State# s
16
17 ## 0.5.3 (edit as necessary)
18
19 - Shipped with GHC 8.6.1
20
21 - Added to `GHC.Prim`:
22
23         addWordC# :: Word# -> Word# -> (# Word#, Int# #)
24
25 - `unpackClosure#` can now unpack any valid Haskell closure.
26   Previously it returned empty pointer and non-pointer arrays
27   for thunks.
28
29 - Add unaligned bytearray access primops (#4442)
30
31          readWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Char# #)
32          readWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Addr# #)
33          readWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Float# #)
34          readWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Double# #)
35          readWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, StablePtr# #)
36          readWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int16# #)
37          readWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int32# #)
38          readWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int64# #)
39          readWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #)
40
41          readWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word16# #)
42          readWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word32# #)
43          readWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word64# #)
44          readWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #)
45
46          writeWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s
47          writeWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s
48          writeWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s
49          writeWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s
50          writeWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> StablePtr# -> State# s -> State# s
51
52          writeWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> Int16# -> State# s -> State# s
53          writeWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> Int32# -> State# s -> State# s
54          writeWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> Int64# -> State# s -> State# s
55          writeWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s
56
57          writeWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> Word16# -> State# s -> State# s
58          writeWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> Word32# -> State# s -> State# s
59          writeWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> Word64# -> State# s -> State# s
60          writeWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s
61
62 ## 0.5.2.0
63
64 - Shipped with GHC 8.4.1
65
66 - Added to `GHC.Prim`:
67
68         compareByteArrays# :: ByteArray# -> Int# -> ByteArray# -> Int# -> Int# -> Int#
69
70 - Don't allocate a thunk for each unpacked UTF-8 character in `unpackCStringUtf8#`
71
72 ## 0.5.1.1 *November 2017*
73
74 - Shipped with GHC 8.2.2
75
76 - Changed strictness properties of `catchRetry#` (#14171)
77
78 ## 0.5.1.0 *July 2017*
79
80 - Shipped with GHC 8.2.1
81
82 - Added to `GHC.Prim`:
83
84         fabsDouble# :: Double# -> Double#
85         fabsFloat# :: Float# -> Float#
86         isByteArrayPinned# :: ByteArray# -> Int#
87         isMutableByteArrayPinned# :: MutableByteArray# s -> Int#
88         anyToAddr# :: a -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)
89
90 - New primitives for compact regions in `GHC.Prim`:
91
92         Compact#
93         compactNew#
94         compactResize#
95         compactContains#
96         compactContainsAny#
97         compactGetFirstBlock#
98         compactGetNextBlock#
99         compactAllocateBlock#
100         compactFixupPointers#
101         compactAdd#
102         compactAddWithSharing#
103         compactSize#
104
105 - Generalised `noDuplicate#` from
106
107         noDuplicate# :: State# (RealWorld) -> State# (RealWorld)
108
109     to
110
111         noDuplicate# :: State# s -> State# s
112
113
114 ## 0.5.0.0
115
116 - Shipped with GHC 8.0.1
117
118 - `GHC.Classes`: new `class IP (a :: Symbol) b | a -> b`
119
120 - `GHC.Prim`: changed type signatures from
121
122         check# :: (State# RealWorld -> (# State# RealWorld, a #)) -> State# RealWorld -> (# State# RealWorld, () #)
123         finalizeWeak# :: Weak# a -> State# RealWorld -> (# State# RealWorld, Int#, State# RealWorld -> (# State# RealWorld, () #) #)
124         mkWeak# :: a -> b -> c -> State# RealWorld -> (# State# RealWorld, Weak# b #)
125
126     to
127
128         check# :: (State# RealWorld -> (# State# RealWorld, a #)) -> State# RealWorld -> State# RealWorld
129         finalizeWeak# :: Weak# a -> State# RealWorld -> (# State# RealWorld, Int#, State# RealWorld -> (# State# RealWorld, b #) #)
130         mkWeak# :: a -> b -> (State# RealWorld -> (# State# RealWorld, c #)) -> State# RealWorld -> (# State# RealWorld, Weak# b #)
131
132 - Removed from `GHC.Prim`:
133
134         parAt# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int#
135         parAtAbs# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int#
136         parAtForNow# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int#
137         parAtRel# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int#
138         parGlobal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int#
139         parLocal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int#
140
141 - Added to `GHC.Prim`:
142
143         getSizeofMutableByteArray# :: MutableByteArray# d -> State# d -> (# State# d, Int# #)
144         subWordC# :: Word# -> Word# -> (# Word#, Int# #)
145         runRW# :: (State# RealWorld -> (# State# RealWorld, o #)) -> (# State# RealWorld, o #)
146
147 - Added to `GHC.Types`:
148
149         data Module = Module TrName TrName
150         data Nat
151         data Symbol
152         data TrName = TrNameS Addr# | TrNameD [Char]
153         data TyCon = TyCon Word# Word# Module TrName