accessors to RTS flag values -- #5364
[ghc.git] / libraries / base / changelog.md
1 # Changelog for [`base` package](http://hackage.haskell.org/package/base)
2
3 ## 4.8.0.0  *TBA*
4
5   * Bundled with GHC 7.10.1
6
7   * Make `Applicative` a superclass of `Monad`
8
9   * Add reverse application operator `Data.Function.(&)`
10
11   * Add `Data.List.sortOn` sorting function
12
13   * Add `System.Exit.die`
14
15   * Weaken RealFloat constraints on some `Data.Complex` functions
16
17   * Add `Control.Monad.(<$!>)` as a strict version of `(<$>)`
18
19   * The `Data.Monoid` module now has the `PolyKinds` extension
20     enabled, so that the `Monoid` instance for `Proxy` are polykinded
21     like `Proxy` itself is.
22
23   * Make `abs` and `signum` handle (-0.0) correctly per IEEE-754.
24
25   * Re-export `Data.Word.Word` from `Prelude`
26
27   * Add `countLeadingZeros` and `countTrailingZeros` methods to
28     `Data.Bits.FiniteBits` class
29
30   * Add `Data.List.uncons` list destructor (#9550)
31
32   * Export `Monoid(..)` from `Prelude`
33
34   * Export `Foldable(..)` from `Prelude`
35     (hiding `fold`, `foldl'`, `foldr'`, and `toList`)
36
37   * Export `Traversable(..)` from `Prelude`
38
39   * Set fixity for `Data.Foldable.{elem,notElem}` to match the
40     conventional one set for `Data.List.{elem,notElem}` (#9610)
41
42   * Turn `toList`, `elem`, `sum`, `product`, `maximum`, and `minimum`
43     into `Foldable` methods (#9621)
44
45   * Replace the `Data.List`-exported functions
46
47     ```
48     all, and, any, concat, concatMap, elem, find, product, sum,
49     mapAccumL, mapAccumR
50     ```
51
52     by re-exports of their generalised `Data.Foldable`/`Data.Traversable`
53     counterparts.  In other words, unqualified imports of `Data.List`
54     and `Data.Foldable`/`Data.Traversable` no longer lead to conflicting
55     definitions. (#9586)
56
57   * Replace the `Control.Monad`-exported functions
58
59     ```
60     sequence_, msum, mapM_, forM_,
61     forM, mapM, sequence
62     ```
63
64     by re-exports of their generalised `Data.Foldable`/`Data.Traversable`
65     counterparts.  In other words, unqualified imports of `Control.Monad`
66     and `Data.Foldable`/`Data.Traversable` no longer lead to conflicting
67     definitions. (#9586)
68
69   * Generalise `Control.Monad.{when,unless,guard}` from `Monad` to
70     `Applicative` and from `MonadPlus` to `Alternative` respectively.
71
72   * Generalise `Control.Monad.{foldM,foldM_}` to `Foldable`
73
74   * `foldr2` (together with `zip` and `zipWith`) is made a bit stricter in the
75     second argument, so that the fusion RULES for it do not change the
76     semantics. (#9596)
77
78   * `scanr`, `mapAccumL` and `filterM` now take part in list fusion (#9355,
79     #9502, #9546)
80
81   * Remove deprecated `Data.OldTypeable` (#9639)
82
83   * New module `Data.Bifunctor` providing the `Bifunctor(bimap,first,second)`
84     class (previously defined in `bifunctors` package) (#9682)
85
86   * New module `Data.Void` providing the canonical uninhabited type `Void`
87     (previously defined in `void` package) (#9814)
88
89   * Update Unicode class definitions to Unicode version 7.0
90
91   * Add `Alt`, an `Alternative` wrapper, to `Data.Monoid`. (#9759)
92
93   * Add `isSubsequenceOf` to `Data.List` (#9767)
94
95   * The arguments to `==` and `eq` in `Data.List.nub` and `Data.List.nubBy`
96     are swapped, such that `Data.List.nubBy (<) [1,2]` now returns `[1]`
97     instead of `[1,2]` (#2528, #3280, #7913)
98
99   * New module `Data.Functor.Identity` (previously provided by `transformers`
100     package). (#9664)
101
102   * Add `scanl'`, a strictly accumulating version of `scanl`, to `Data.List`
103     and `Data.OldList`. (#9368)
104
105   * Add `fillBytes` to `Foreign.Marshal.Utils`.
106
107   * Add new `displayException` method to `Exception` typeclass. (#9822)
108
109   * Add `Data.Bits.toIntegralSized`, a size-checked version of
110     `fromIntegral`. (#9816)
111
112   * New module `Numeric.Natural` providing new `Natural` type
113     representing non-negative arbitrary-precision integers.  The `GHC.Natural`
114     module exposes additional GHC-specific primitives. (#9818)
115
116   * Add `(Storable a, Integeral a) => Storable (Ratio a)` instance (#9826)
117
118   * Add `Storable a => Storable (Complex a)` instance (#9826)
119
120   * New module `GHC.RTS.Flags` that provides accessors to runtime flags.
121
122 ## 4.7.0.1  *Jul 2014*
123
124   * Bundled with GHC 7.8.3
125
126   * Unhide `Foreign.ForeignPtr` in Haddock (#8475)
127
128   * Fix recomputation of `TypeRep` in `Typeable` type-application instance
129     (#9203)
130
131   * Fix regression in Data.Fixed Read instance (#9231)
132
133   * Fix `fdReady` to honor `FD_SETSIZE` (#9168)
134
135 ## 4.7.0.0  *Apr 2014*
136
137   * Bundled with GHC 7.8.1
138
139   * Add `/Since: 4.[4567].0.0/` Haddock annotations to entities
140     denoting the package version, when the given entity was introduced
141     (or its type signature changed in a non-compatible way)
142
143   * The `Control.Category` module now has the `PolyKinds` extension
144     enabled, meaning that instances of `Category` no longer need be of
145     kind `* -> * -> *`.
146
147   * There are now `Foldable` and `Traversable` instances for `Either a`,
148    `Const r`, and `(,) a`.
149
150   * There is now a `Monoid`, `Generic`, and `Generic1` instance for `Const`.
151
152   * There is now a `Data` instance for `Data.Version`.
153
154   * A new `Data.Bits.FiniteBits` class has been added to represent
155     types with fixed bit-count. The existing `Bits` class is extended
156     with a `bitSizeMaybe` method to replace the now obsolete
157     `bitsize` method.
158
159   * `Data.Bits.Bits` gained a new `zeroBits` method which completes the
160     `Bits` API with a direct way to introduce a value with all bits cleared.
161
162   * There are now `Bits` and `FiniteBits` instances for `Bool`.
163
164   * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
165     instances for `ZipList`.
166
167   * There are now `Eq`, `Ord`, `Show` and `Read` instances for `Down`.
168
169   * There are now `Eq`, `Ord`, `Show`, `Read` and `Generic` instances
170     for types in GHC.Generics (`U1`, `Par1`, `Rec1`, `K1`, `M1`,
171     `(:+:)`, `(:*:)`, `(:.:)`).
172
173   * `Data.Monoid`: There are now `Generic` instances for `Dual`, `Endo`,
174     `All`, `Any`, `Sum`, `Product`, `First`, and `Last`; as well as
175     `Generic1` instances for `Dual`, `Sum`, `Product`, `First`, and `Last`.
176
177   * The `Data.Monoid.{Product,Sum}` newtype wrappers now have `Num` instances.
178
179   * There are now `Functor` instances for `System.Console.GetOpt`'s
180     `ArgOrder`, `OptDescr`, and `ArgDescr`.
181
182   * A zero-width unboxed poly-kinded `Proxy#` was added to
183     `GHC.Prim`. It can be used to make it so that there is no the
184     operational overhead for passing around proxy arguments to model
185     type application.
186
187   * New `Data.Proxy` module providing a concrete, poly-kinded proxy type.
188
189   * New `Data.Coerce` module which exports the new `Coercible` class
190     together with the `coerce` primitive which provide safe coercion
191     (wrt role checking) between types with same representation.
192
193   * `Control.Concurrent.MVar` has a new implementation of `readMVar`,
194     which fixes a long-standing bug where `readMVar` is only atomic if
195     there are no other threads running `putMVar`.  `readMVar` now is
196     atomic, and is guaranteed to return the value from the first
197     `putMVar`.  There is also a new `tryReadMVar` which is a
198     non-blocking version.
199
200   * New `Control.Concurrent.MVar.withMVarMasked` which executes
201     `IO` action with asynchronous exceptions masked in the same style
202     as the existing `modifyMVarMasked` and `modifyMVarMasked_`.
203
204   * New `threadWait{Read,Write}STM :: Fd -> IO (STM (), IO ())`
205     functions added to `Control.Concurrent` for waiting on FD
206     readiness with STM actions.
207
208   * Expose `Data.Fixed.Fixed`'s constructor.
209
210   * There are now byte endian-swapping primitives
211     `byteSwap{16,32,64}` available in `Data.Word`, which use
212     optimized machine instructions when available.
213
214   * `Data.Bool` now exports `bool :: a -> a -> Bool -> a`, analogously
215     to `maybe` and `either` in their respective modules.
216
217   * `Data.Either` now exports `isLeft, isRight :: Either a b -> Bool`.
218
219   * `Debug.Trace` now exports `traceId`, `traceShowId`, `traceM`,
220     and `traceShowM`.
221
222   * `Data.Functor` now exports `($>)` and `void`.
223
224   * Rewrote portions of `Text.Printf`, and made changes to `Numeric`
225     (added `Numeric.showFFloatAlt` and `Numeric.showGFloatAlt`) and
226     `GHC.Float` (added `formatRealFloatAlt`) to support it.  The
227     rewritten version is extensible to user types, adds a "generic"
228     format specifier "`%v`", extends the `printf` spec to support much
229     of C's `printf(3)` functionality, and fixes the spurious warnings
230     about using `Text.Printf.printf` at `(IO a)` while ignoring the
231     return value.  These changes were contributed by Bart Massey.
232
233   * The minimal complete definitions for all type-classes with cyclic
234     default implementations have been explicitly annotated with the
235     new `{-# MINIMAL #-}` pragma.
236
237   * `Control.Applicative.WrappedMonad`, which can be used to convert a
238     `Monad` to an `Applicative`, has now a
239     `Monad m => Monad (WrappedMonad m)` instance.
240
241   * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
242     and `WrappedArrow`.
243
244   * Handle `ExitFailure (-sig)` on Unix by killing process with signal `sig`.
245
246   * New module `Data.Type.Bool` providing operations on type-level booleans.
247
248   * Expose `System.Mem.performMinorGC` for triggering minor GCs.
249
250   * New `System.Environment.{set,unset}Env` for manipulating
251     environment variables.
252
253   * Add `Typeable` instance for `(->)` and `RealWorld`.
254
255   * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
256     does not support hand-written `Typeable` instances anymore.
257
258   * Remove (unmaintained) Hugs98 and NHC98 specific code.
259
260   * Optimize `System.Timeout.timeout` for the threaded RTS.
261
262   * Remove deprecated functions `unsafeInterleaveST`, `unsafeIOToST`,
263     and `unsafeSTToIO` from `Control.Monad.ST`.
264
265   * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
266     and makes the existing `AsyncException` and `Timeout` exception children
267     of `SomeAsyncException` in the hierarchy.
268
269   * Remove deprecated functions `blocked`, `unblock`, and `block` from
270     `Control.Exception`.
271
272   * Remove deprecated function `forkIOUnmasked` from `Control.Concurrent`.
273
274   * Remove deprecated function `unsafePerformIO` export from `Foreign`
275     (still available via `System.IO.Unsafe.unsafePerformIO`).
276
277   * Various fixes and other improvements (see Git history for full details).