changelog.md 25.8 KB
Newer Older
1
2
# Changelog for [`base` package](http://hackage.haskell.org/package/base)

3
## 4.12.0.0 *TBA*
4
5
  * Bundled with GHC *TBA*

6
7
8
  * Add a new module `GHC.ResponseFile` (previously defined in the `haddock`
    package). (#13896)

9
10
  * Move the module `Data.Functor.Contravariant` from the
    `contravariant` package to `base`.
11
12
13

  * `($!)` is now representation-polymorphic like `($)`.

14
15
16
  * Add `Applicative` (for `K1`), `Semigroup` and `Monoid` instances in
    `GHC.Generics`. (#14849)

17
18
19
  * `asinh` for `Float` and `Double` is now numerical stable in the face of
    large negative arguments (#14927)

20
## 4.11.1.0 *TBA*
21
22
  * Bundled with GHC 8.4.2

23
24
25
  * Add the `readFieldHash` function to `GHC.Read` which behaves like
    `readField`, but for a field that ends with a `#` symbol (#14918).

26
## 4.11.0.0 *TBA*
27
  * Bundled with GHC 8.4.1
28

29
30
  * `System.IO.openTempFile` is now thread-safe on Windows.

31
32
  * Deprecated `GHC.Stats.GCStats` interface has been removed.

33
34
  * Add `showHFloat` to `Numeric`

35
  * Add `Div`, `Mod`, and `Log2` functions on type-level naturals
36
37
    in `GHC.TypeLits`.

38
39
  * Add `Alternative` instance for `ZipList` (#13520)

40
41
42
  * Add instances `Num`, `Functor`, `Applicative`, `Monad`, `Semigroup`
    and `Monoid` for `Data.Ord.Down` (#13097).

43
44
45
  * Add `Semigroup` instance for `EventLifetime`.

  * Make `Semigroup` a superclass of `Monoid`;
46
    export `Semigroup((<>))` from `Prelude`; remove `Monoid` reexport
47
48
    from `Data.Semigroup` (#14191).

49
50
51
  * Generalise `instance Monoid a => Monoid (Maybe a)` to
    `instance Semigroup a => Monoid (Maybe a)`.

52
  * Add `infixl 9 !!` declaration for `Data.List.NonEmpty.!!`
53

54
55
  * Add `<&>` operator to `Data.Functor` (#14029)

56
57
  * Remove the deprecated `Typeable{1..7}` type synonyms (#14047)

David Feuer's avatar
David Feuer committed
58
59
60
61
62
63
64
65
  * Make `Data.Type.Equality.==` a closed type family. It now works for all
  kinds out of the box. Any modules that previously declared instances of this
  family will need to remove them. Whereas the previous definition was somewhat
  ad hoc, the behavior is now completely uniform. As a result, some applications
  that used to reduce no longer do, and conversely. Most notably, `(==)` no
  longer treats the `*`, `j -> k`, or `()` kinds specially; equality is
  tested structurally in all cases.

66
67
  * Add instances `Semigroup` and `Monoid` for `Control.Monad.ST` (#14107).

68
69
70
71
72
  * The `Read` instances for `Proxy`, `Coercion`, `(:~:)`, `(:~~:)`, and `U1`
    now ignore the parsing precedence. The effect of this is that `read` will
    be able to successfully parse more strings containing `"Proxy"` _et al._
    without surrounding parentheses (e.g., `"Thing Proxy"`) (#12874).

Ben Gamari's avatar
Ben Gamari committed
73
74
75
  * Add `iterate'`, a strict version of `iterate`, to `Data.List`
    and `Data.OldList` (#3474)

76
77
  * Add `Data` instances for `IntPtr` and `WordPtr` (#13115)

78
79
  * Add missing `MonadFail` instance for `Control.Monad.Strict.ST.ST`

Tao He's avatar
Tao He committed
80
81
  * Make `zipWith` and `zipWith3` inlinable (#14224)

82
83
  * `Type.Reflection.App` now matches on function types (fixes #14236)

84
85
86
  * `Type.Reflection.withTypeable` is now polymorphic in the `RuntimeRep` of
    its result.

87
88
  * Add `installSEHHandlers` to `MiscFlags` in `GHC.RTS.Flags` to determine if
    exception handling is enabled.
89

90
91
  * The deprecated functions `isEmptyChan` and `unGetChan` in
    `Control.Concurrent.Chan` have been removed (#13561).
92

93
94
95
  * Add `generateCrashDumpFile` to `MiscFlags` in `GHC.RTS.Flags` to determine
    if a core dump will be generated on crashes.

96
97
98
  * Add `generateStackTrace` to `MiscFlags` in `GHC.RTS.Flags` to determine if
    stack traces will be generated on unhandled exceptions by the RTS.

99
100
  * `getExecutablePath` now resolves symlinks on Windows (#14483)

101
102
103
  * Deprecated STM invariant checking primitives (`checkInv`, `always`, and
    `alwaysSucceeds`) in `GHC.Conc.Sync` (#14324).

104
105
106
107
  * Add a `FixIOException` data type to `Control.Exception.Base`, and change
    `fixIO` to throw that instead of a `BlockedIndefinitelyOnMVar` exception
    (#14356).

108
109
110
111
112
113
114
115
## 4.10.1.0 *November 2017*
  * Bundled with GHC 8.2.2

  * The file locking primitives provided by `GHC.IO.Handle` now use
    Linux open file descriptor locking if available.

  * Fixed bottoming definition of `clearBit` for `Natural`

116
117
## 4.10.0.0 *July 2017*
  * Bundled with GHC 8.2.1
118

119
120
  * `Data.Type.Bool.Not` given a type family dependency (#12057).

121
122
123
  * `Foreign.Ptr` now exports the constructors for `IntPtr` and `WordPtr`
    (#11983)

Ryan Scott's avatar
Ryan Scott committed
124
125
126
  * `Generic1`, as well as the associated datatypes and typeclasses in
    `GHC.Generics`, are now poly-kinded (#10604)

127
128
129
  * `New modules `Data.Bifoldable` and `Data.Bitraversable` (previously defined
    in the `bifunctors` package) (#10448)

130
131
  * `Data.Either` now provides `fromLeft` and `fromRight` (#12402)

132
133
  * `Data.Type.Coercion` now provides `gcoerceWith` (#12493)

134
135
136
137
138
  * New methods `liftReadList(2)` and `liftReadListPrec(2)` in the
    `Read1`/`Read2` classes that are defined in terms of `ReadPrec` instead of
    `ReadS`, as well as related combinators, have been added to
    `Data.Functor.Classes` (#12358)

139
140
141
  * Add `Semigroup` instance for `IO`, as well as for `Event` and `Lifetime`
    from `GHC.Event` (#12464)

Ryan Scott's avatar
Ryan Scott committed
142
143
  * Add `Data` instance for `Const` (#12438)

144
145
  * Added `Eq1`, `Ord1`, `Read1` and `Show1` instances for `NonEmpty`.

146
  * Add wrappers for `blksize_t`, `blkcnt_t`, `clockid_t`, `fsblkcnt_t`,
147
    `fsfilcnt_t`, `id_t`, `key_t`, and `timer_t` to System.Posix.Types (#12795)
148

Ryan Scott's avatar
Ryan Scott committed
149
150
151
  * Add `CBool`, a wrapper around C's `bool` type, to `Foreign.C.Types`
    (#13136)

152
153
  * Raw buffer operations in `GHC.IO.FD` are now strict in the buffer, offset, and length operations (#9696)

154
155
  * Add `plusForeignPtr` to `Foreign.ForeignPtr`.

156
157
158
  * Add `type family AppendSymbol (m :: Symbol) (n :: Symbol) :: Symbol` to `GHC.TypeLits`
    (#12162)

159
160
161
162
  * Add `GHC.TypeNats` module with `Natural`-based `KnownNat`. The `Nat`
    operations in `GHC.TypeLits` are a thin compatibility layer on top.
    Note: the `KnownNat` evidence is changed from an `Integer` to a `Natural`.

163
164
  * The type of `asProxyTypeOf` in `Data.Proxy` has been generalized (#12805)

David Feuer's avatar
David Feuer committed
165
166
167
168
169
170
171
  * `liftA2` is now a method of the `Applicative` class. `liftA2` and
    `<*>` each have a default implementation based on the other. Various
    library functions have been updated to use `liftA2` where it might offer
    some benefit. `liftA2` is not yet in the `Prelude`, and must currently be
    imported from `Control.Applicative`. It is likely to be added to the
    `Prelude` in the future. (#13191)

172
173
  * A new module, `Type.Reflection`, exposing GHC's new type-indexed type
    representation mechanism is now provided.
Ben Gamari's avatar
Ben Gamari committed
174
175
176
177

  * `Data.Dynamic` now exports the `Dyn` data constructor, enabled by the new
    type-indexed type representation mechanism.

178
179
  * `Data.Type.Equality` now provides a kind heterogeneous type equality
    evidence type, `(:~~:)`.
Ben Gamari's avatar
Ben Gamari committed
180

Ben Gamari's avatar
Ben Gamari committed
181
182
183
184
  * The `CostCentresXML` constructor of `GHC.RTS.Flags.DoCostCentres` has been
    replaced by `CostCentresJSON` due to the new JSON export format supported by
    the cost centre profiler.

185
186
187
188
  * The `ErrorCall` pattern synonym has been given a `COMPLETE` pragma so that
    functions which solely match again `ErrorCall` do not produce
    non-exhaustive pattern-match warnings (#8779)

189
  * Change the implementations of `maximumBy` and `minimumBy` from
Gabor Greif's avatar
Gabor Greif committed
190
    `Data.Foldable` to use `foldl1` instead of `foldr1`. This makes them run
191
192
    in constant space when applied to lists. (#10830)

193
194
  * `mkFunTy`, `mkAppTy`, and `mkTyConApp` from `Data.Typeable` no longer exist.
    This functionality is superceded by the interfaces provided by
Ryan Scott's avatar
Ryan Scott committed
195
    `Type.Reflection`.
196
197
198
199

  * `mkTyCon3` is no longer exported by `Data.Typeable`. This function is
    replaced by `Type.Reflection.Unsafe.mkTyCon`.

Ben Gamari's avatar
Ben Gamari committed
200
201
202
  * `Data.List.NonEmpty.unfold` has been deprecated in favor of `unfoldr`,
    which is functionally equivalent.

203
## 4.9.0.0  *May 2016*
204
205

  * Bundled with GHC 8.0
Austin Seipp's avatar
Austin Seipp committed
206

Eric Seidel's avatar
Eric Seidel committed
207
208
209
210
  * `error` and `undefined` now print a partial stack-trace alongside the error message.

  * New `errorWithoutStackTrace` function throws an error without printing the stack trace.

211
212
213
  * The restore operation provided by `mask` and `uninterruptibleMask` now
    restores the previous masking state whatever the current masking state is.

214
215
  * New `GHC.Generics.packageName` operation

216
217
218
  * Redesigned `GHC.Stack.CallStack` data type. As a result, `CallStack`'s
    `Show` instance produces different output, and `CallStack` no longer has an
    `Eq` instance.
219

Eric Seidel's avatar
Eric Seidel committed
220
221
222
223
224
225
226
227
228
229
230
  * New `GHC.Generics.packageName` operation

  * New `GHC.Stack.Types` module now contains the definition of
    `CallStack` and `SrcLoc`

  * New `GHC.Stack.Types.emptyCallStack` function builds an empty `CallStack`

  * New `GHC.Stack.Types.freezeCallStack` function freezes a `CallStack` preventing future `pushCallStack` operations from having any effect

  * New `GHC.Stack.Types.pushCallStack` function pushes a call-site onto a `CallStack`

231
232
233
  * New `GHC.Stack.Types.fromCallSiteList` function creates a `CallStack` from
    a list of call-sites (i.e., `[(String, SrcLoc)]`)

Eric Seidel's avatar
Eric Seidel committed
234
235
236
237
238
  * `GHC.SrcLoc` has been removed

  * `GHC.Stack.showCallStack` and `GHC.SrcLoc.showSrcLoc` are now called
    `GHC.Stack.prettyCallStack` and `GHC.Stack.prettySrcLoc` respectively

Ben Gamari's avatar
Ben Gamari committed
239
240
241
  * add `Data.List.NonEmpty` and `Data.Semigroup` (to become
    super-class of `Monoid` in the future). These modules were
    provided by the `semigroups` package previously. (#10365)
242

Ben Gamari's avatar
Ben Gamari committed
243
244
245
246
  * Add `selSourceUnpackedness`, `selSourceStrictness`, and
    `selDecidedStrictness`, three functions which look up strictness
    information of a field in a data constructor, to the `Selector` type class
    in `GHC.Generics` (#10716)
247

Ben Gamari's avatar
Ben Gamari committed
248
249
250
  * Add `URec`, `UAddr`, `UChar`, `UDouble`, `UFloat`, `UInt`, and `UWord` to
    `GHC.Generics` as part of making GHC generics capable of handling
    unlifted types (#10868)
251

252
253
254
  * The `Eq`, `Ord`, `Read`, and `Show` instances for `U1` now use lazier
    pattern-matching

Ben Gamari's avatar
Ben Gamari committed
255
256
  * Keep `shift{L,R}` on `Integer` with negative shift-arguments from
    segfaulting (#10571)
Gabriel439's avatar
Gabriel439 committed
257

Ben Gamari's avatar
Ben Gamari committed
258
259
  * Add `forkOSWithUnmask` to `Control.Concurrent`, which is like
    `forkIOWithUnmask`, but the child is run in a bound thread.
260

Ben Gamari's avatar
Ben Gamari committed
261
  * The `MINIMAL` definition of `Arrow` is now `arr AND (first OR (***))`.
262

Ben Gamari's avatar
Ben Gamari committed
263
  * The `MINIMAL` definition of `ArrowChoice` is now `left OR (+++)`.
264

265
266
267
  * Exported `GiveGCStats`, `DoCostCentres`, `DoHeapProfile`, `DoTrace`,
    `RtsTime`, and `RtsNat` from `GHC.RTS.Flags`

268
269
270
  * New function `GHC.IO.interruptible` used to correctly implement
    `Control.Exception.allowInterrupt` (#9516)

271
272
273
  * Made `PatternMatchFail`, `RecSelError`, `RecConError`, `RecUpdError`,
    `NoMethodError`, and `AssertionFailed` newtypes (#10738)

274
275
276
  * New module `Control.Monad.IO.Class` (previously provided by `transformers`
    package). (#10773)

277
278
279
280
  * New modules `Data.Functor.Classes`, `Data.Functor.Compose`,
    `Data.Functor.Product`, and `Data.Functor.Sum` (previously provided by
    `transformers` package). (#11135)

281
282
283
  * New instances for `Proxy`: `Eq1`, `Ord1`, `Show1`, `Read1`. All
    of the classes are from `Data.Functor.Classes` (#11756).

284
285
286
  * New module `Control.Monad.Fail` providing new `MonadFail(fail)`
    class (#10751)

Ben Gamari's avatar
Ben Gamari committed
287
288
  * Add `GHC.TypeLits.TypeError` and `ErrorMessage` to allow users
    to define custom compile-time error messages.
289

Ben Gamari's avatar
Ben Gamari committed
290
291
  * Redesign `GHC.Generics` to use type-level literals to represent the
    metadata of generic representation types (#9766)
292

Ben Gamari's avatar
Ben Gamari committed
293
294
  * The `IsString` instance for `[Char]` has been modified to eliminate
    ambiguity arising from overloaded strings and functions like `(++)`.
295

Ben Gamari's avatar
Ben Gamari committed
296
297
  * Move `Const` from `Control.Applicative` to its own module in
   `Data.Functor.Const`. (#11135)
298

Ben Gamari's avatar
Ben Gamari committed
299
  * Re-export `Const` from `Control.Applicative` for backwards compatibility.
joeyadams's avatar
joeyadams committed
300

Ben Gamari's avatar
Ben Gamari committed
301
302
303
  * Expand `Floating` class to include operations that allow for better
    precision: `log1p`, `expm1`, `log1pexp` and `log1mexp`. These are not
    available from `Prelude`, but the full class is exported from `Numeric`.
joeyadams's avatar
joeyadams committed
304

305
306
307
  * New `Control.Exception.TypeError` datatype, which is thrown when an
    expression fails to typecheck when run using `-fdefer-type-errors` (#10284)

Ben Gamari's avatar
Ben Gamari committed
308
### New instances
309

Ben Gamari's avatar
Ben Gamari committed
310
311
312
  * `Alt`, `Dual`, `First`, `Last`, `Product`, and `Sum` now have `Data`,
    `MonadZip`, and `MonadFix` instances

313
314
315
316
317
  * The datatypes in `GHC.Generics` now have `Enum`, `Bounded`, `Ix`,
    `Functor`, `Applicative`, `Monad`, `MonadFix`, `MonadPlus`, `MonadZip`,
    `Foldable`, `Foldable`, `Traversable`, `Generic1`, and `Data` instances
    as appropriate.

Ben Gamari's avatar
Ben Gamari committed
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
  * `Maybe` now has a `MonadZip` instance

  * `All` and `Any` now have `Data` instances

  * `Dual`, `First`, `Last`, `Product`, and `Sum` now have `Foldable` and
    `Traversable` instances

  * `Dual`, `Product`, and `Sum` now have `Functor`, `Applicative`, and
    `Monad` instances

  * `(,) a` now has a `Monad` instance

  * `ZipList` now has `Foldable` and `Traversable` instances

  * `Identity` now has `Semigroup` and `Monoid` instances

334
335
336
  * `Identity` and `Const` now have `Bits`, `Bounded`, `Enum`, `FiniteBits`,
    `Floating`, `Fractional`, `Integral`, `IsString`, `Ix`, `Num`, `Real`,
    `RealFloat`, `RealFrac` and `Storable` instances. (#11210, #11790)
Ben Gamari's avatar
Ben Gamari committed
337
338
339
340
341
342
343
344
345
346
347

  * `()` now has a `Storable` instance

  * `Complex` now has `Generic`, `Generic1`, `Functor`, `Foldable`, `Traversable`,
    `Applicative`, and `Monad` instances

  * `System.Exit.ExitCode` now has a `Generic` instance

  * `Data.Version.Version` now has a `Generic` instance

  * `IO` now has a `Monoid` instance
348

349
350
351
  * Add `MonadPlus IO` and `Alternative IO` instances
    (previously orphans in `transformers`) (#10755)

352
353
  * `CallStack` now has an `IsList` instance

354
355
356
  * The field `spInfoName` of `GHC.StaticPtr.StaticPtrInfo` has been removed.
    The value is no longer available when constructing the `StaticPtr`.

357
358
  * `VecElem` and `VecCount` now have `Enum` and `Bounded` instances.

Ben Gamari's avatar
Ben Gamari committed
359
### Generalizations
Ben Gamari's avatar
Ben Gamari committed
360

Ben Gamari's avatar
Ben Gamari committed
361
362
  * Generalize `Debug.Trace.{traceM, traceShowM}` from `Monad` to `Applicative`
    (#10023)
363

Eric Seidel's avatar
Eric Seidel committed
364
365
366
367
  * Redundant typeclass constraints have been removed:
     - `Data.Ratio.{denominator,numerator}` have no `Integral` constraint anymore
     - **TODO**

Ben Gamari's avatar
Ben Gamari committed
368
  * Generalise `forever` from `Monad` to `Applicative`
369

Ben Gamari's avatar
Ben Gamari committed
370
371
372
373
  * Generalize `filterM`, `mapAndUnzipM`, `zipWithM`, `zipWithM_`, `replicateM`,
    `replicateM_` from `Monad` to `Applicative` (#10168)

  * The `Generic` instance for `Proxy` is now poly-kinded (#10775)
374
375
376
377
378

  * Enable `PolyKinds` in the `Data.Functor.Const` module to give `Const`
    the kind `* -> k -> *`. (#10039)


379
380
381
382
383
384
385
386
387
388
## 4.8.2.0  *Oct 2015*

  * Bundled with GHC 7.10.3

  * The restore operation provided by `mask` and `uninterruptibleMask` now
    restores the previous masking state whatever the current masking state is.

  * Exported `GiveGCStats`, `DoCostCentres`, `DoHeapProfile`, `DoTrace`,
    `RtsTime`, and `RtsNat` from `GHC.RTS.Flags`

389
## 4.8.1.0  *Jul 2015*
390
391
392

  * Bundled with GHC 7.10.2

393
394
  * `Lifetime` is now exported from `GHC.Event`

395
  * Implicit-parameter based source location support exposed in `GHC.SrcLoc` and `GHC.Stack`.
396
397
    See GHC User's Manual for more information.

398
## 4.8.0.0  *Mar 2015*
399
400
401

  * Bundled with GHC 7.10.1

402
403
  * Make `Applicative` a superclass of `Monad`

404
405
  * Add reverse application operator `Data.Function.(&)`

406
407
  * Add `Data.List.sortOn` sorting function

Simon Hengel's avatar
Simon Hengel committed
408
409
  * Add `System.Exit.die`

410
411
412
413
414
415
  * Deprecate `versionTags` field of `Data.Version.Version`.
    Add `makeVersion :: [Int] -> Version` constructor function to aid
    migration to a future `versionTags`-less `Version`.

  * Add `IsList Version` instance

416
417
  * Weaken RealFloat constraints on some `Data.Complex` functions

418
419
  * Add `Control.Monad.(<$!>)` as a strict version of `(<$>)`

420
421
422
423
  * The `Data.Monoid` module now has the `PolyKinds` extension
    enabled, so that the `Monoid` instance for `Proxy` are polykinded
    like `Proxy` itself is.

424
  * Make `abs` and `signum` handle (-0.0) correctly per IEEE-754.
425

426
427
  * Re-export `Data.Word.Word` from `Prelude`

428
429
430
  * Add `countLeadingZeros` and `countTrailingZeros` methods to
    `Data.Bits.FiniteBits` class

431
432
  * Add `Data.List.uncons` list destructor (#9550)

433
434
435
436
437
438
439
  * Export `Monoid(..)` from `Prelude`

  * Export `Foldable(..)` from `Prelude`
    (hiding `fold`, `foldl'`, `foldr'`, and `toList`)

  * Export `Traversable(..)` from `Prelude`

440
441
442
  * Set fixity for `Data.Foldable.{elem,notElem}` to match the
    conventional one set for `Data.List.{elem,notElem}` (#9610)

443
444
445
  * Turn `toList`, `elem`, `sum`, `product`, `maximum`, and `minimum`
    into `Foldable` methods (#9621)

446
447
448
  * Replace the `Data.List`-exported functions

    ```
449
450
    all, and, any, concat, concatMap, elem, find, product, sum,
    mapAccumL, mapAccumR
451
452
    ```

453
454
455
456
    by re-exports of their generalised `Data.Foldable`/`Data.Traversable`
    counterparts.  In other words, unqualified imports of `Data.List`
    and `Data.Foldable`/`Data.Traversable` no longer lead to conflicting
    definitions. (#9586)
457

458
459
460
461
  * New (unofficial) module `GHC.OldList` containing only list-specialised
    versions of the functions from `Data.List` (in other words, `GHC.OldList`
    corresponds to `base-4.7.0.2`'s `Data.List`)

462
463
464
  * Replace the `Control.Monad`-exported functions

    ```
465
466
    sequence_, msum, mapM_, forM_,
    forM, mapM, sequence
467
468
    ```

469
470
471
472
    by re-exports of their generalised `Data.Foldable`/`Data.Traversable`
    counterparts.  In other words, unqualified imports of `Control.Monad`
    and `Data.Foldable`/`Data.Traversable` no longer lead to conflicting
    definitions. (#9586)
473

474
475
476
  * Generalise `Control.Monad.{when,unless,guard}` from `Monad` to
    `Applicative` and from `MonadPlus` to `Alternative` respectively.

477
478
  * Generalise `Control.Monad.{foldM,foldM_}` to `Foldable`

David Feuer's avatar
David Feuer committed
479
480
  * `scanr`, `mapAccumL` and `filterM` now take part in list fusion (#9355,
    #9502, #9546)
481

482
483
  * Remove deprecated `Data.OldTypeable` (#9639)

484
485
486
  * New module `Data.Bifunctor` providing the `Bifunctor(bimap,first,second)`
    class (previously defined in `bifunctors` package) (#9682)

487
488
489
  * New module `Data.Void` providing the canonical uninhabited type `Void`
    (previously defined in `void` package) (#9814)

490
491
  * Update Unicode class definitions to Unicode version 7.0

492
493
  * Add `Alt`, an `Alternative` wrapper, to `Data.Monoid`. (#9759)

494
495
  * Add `isSubsequenceOf` to `Data.List` (#9767)

496
497
498
499
  * The arguments to `==` and `eq` in `Data.List.nub` and `Data.List.nubBy`
    are swapped, such that `Data.List.nubBy (<) [1,2]` now returns `[1]`
    instead of `[1,2]` (#2528, #3280, #7913)

500
501
502
  * New module `Data.Functor.Identity` (previously provided by `transformers`
    package). (#9664)

503
504
505
  * Add `scanl'`, a strictly accumulating version of `scanl`, to `Data.List`
    and `Data.OldList`. (#9368)

506
507
  * Add `fillBytes` to `Foreign.Marshal.Utils`.

508
509
  * Add new `displayException` method to `Exception` typeclass. (#9822)

510
511
512
  * Add `Data.Bits.toIntegralSized`, a size-checked version of
    `fromIntegral`. (#9816)

513
514
515
516
  * New module `Numeric.Natural` providing new `Natural` type
    representing non-negative arbitrary-precision integers.  The `GHC.Natural`
    module exposes additional GHC-specific primitives. (#9818)

517
518
519
520
  * Add `(Storable a, Integeral a) => Storable (Ratio a)` instance (#9826)

  * Add `Storable a => Storable (Complex a)` instance (#9826)

521
522
  * New module `GHC.RTS.Flags` that provides accessors to runtime flags.

523
524
525
526
527
528
529
530
531
  * Expose functions for per-thread allocation counters and limits in `GHC.Conc`

        disableAllocationLimit :: IO ()
        enableAllocationLimit :: IO ()
        getAllocationCounter :: IO Int64
        setAllocationCounter :: Int64 -> IO ()

    together with a new exception `AllocationLimitExceeded`.

532
533
  * Make `read . show = id` for `Data.Fixed` (#9240)

534
  * Add `calloc` and `callocBytes` to `Foreign.Marshal.Alloc`. (#9859)
535

536
  * Add `callocArray` and `callocArray0` to `Foreign.Marshal.Array`. (#9859)
537

538
539
  * Restore invariant in `Data (Ratio a)` instance (#10011)

540
541
  * Add/expose `rnfTypeRep`, `rnfTyCon`, `typeRepFingerprint`, and
    `tyConFingerprint` helpers to `Data.Typeable`.
542

543
544
  * Define proper `MINIMAL` pragma for `class Ix`. (#10142)

545
546
547
548
549
550
551
552
## 4.7.0.2  *Dec 2014*

  * Bundled with GHC 7.8.4

  * Fix performance bug in `Data.List.inits` (#9345)

  * Fix handling of null bytes in `Debug.Trace.trace` (#9395)

553
554
555
556
557
558
559
560
561
562
563
564
565
## 4.7.0.1  *Jul 2014*

  * Bundled with GHC 7.8.3

  * Unhide `Foreign.ForeignPtr` in Haddock (#8475)

  * Fix recomputation of `TypeRep` in `Typeable` type-application instance
    (#9203)

  * Fix regression in Data.Fixed Read instance (#9231)

  * Fix `fdReady` to honor `FD_SETSIZE` (#9168)

566
## 4.7.0.0  *Apr 2014*
567
568
569

  * Bundled with GHC 7.8.1

570
571
572
573
  * Add `/Since: 4.[4567].0.0/` Haddock annotations to entities
    denoting the package version, when the given entity was introduced
    (or its type signature changed in a non-compatible way)

574
575
576
577
578
579
580
  * The `Control.Category` module now has the `PolyKinds` extension
    enabled, meaning that instances of `Category` no longer need be of
    kind `* -> * -> *`.

  * There are now `Foldable` and `Traversable` instances for `Either a`,
   `Const r`, and `(,) a`.

581
582
  * There are now `Show`, `Read`, `Eq`, `Ord`, `Monoid`, `Generic`, and
    `Generic1` instances for `Const`.
583
584
585

  * There is now a `Data` instance for `Data.Version`.

586
587
588
589
590
  * A new `Data.Bits.FiniteBits` class has been added to represent
    types with fixed bit-count. The existing `Bits` class is extended
    with a `bitSizeMaybe` method to replace the now obsolete
    `bitsize` method.

591
592
593
  * `Data.Bits.Bits` gained a new `zeroBits` method which completes the
    `Bits` API with a direct way to introduce a value with all bits cleared.

594
595
  * There are now `Bits` and `FiniteBits` instances for `Bool`.

596
597
  * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
    instances for `ZipList`.
598
599
600
601
602
603
604

  * There are now `Eq`, `Ord`, `Show` and `Read` instances for `Down`.

  * There are now `Eq`, `Ord`, `Show`, `Read` and `Generic` instances
    for types in GHC.Generics (`U1`, `Par1`, `Rec1`, `K1`, `M1`,
    `(:+:)`, `(:*:)`, `(:.:)`).

605
606
607
608
609
610
  * `Data.Monoid`: There are now `Generic` instances for `Dual`, `Endo`,
    `All`, `Any`, `Sum`, `Product`, `First`, and `Last`; as well as
    `Generic1` instances for `Dual`, `Sum`, `Product`, `First`, and `Last`.

  * The `Data.Monoid.{Product,Sum}` newtype wrappers now have `Num` instances.

611
612
613
  * There are now `Functor` instances for `System.Console.GetOpt`'s
    `ArgOrder`, `OptDescr`, and `ArgDescr`.

614
615
616
617
618
  * A zero-width unboxed poly-kinded `Proxy#` was added to
    `GHC.Prim`. It can be used to make it so that there is no the
    operational overhead for passing around proxy arguments to model
    type application.

619
620
  * New `Data.Proxy` module providing a concrete, poly-kinded proxy type.

621
622
623
624
  * New `Data.Coerce` module which exports the new `Coercible` class
    together with the `coerce` primitive which provide safe coercion
    (wrt role checking) between types with same representation.

625
626
627
628
629
630
631
  * `Control.Concurrent.MVar` has a new implementation of `readMVar`,
    which fixes a long-standing bug where `readMVar` is only atomic if
    there are no other threads running `putMVar`.  `readMVar` now is
    atomic, and is guaranteed to return the value from the first
    `putMVar`.  There is also a new `tryReadMVar` which is a
    non-blocking version.

632
633
634
635
  * New `Control.Concurrent.MVar.withMVarMasked` which executes
    `IO` action with asynchronous exceptions masked in the same style
    as the existing `modifyMVarMasked` and `modifyMVarMasked_`.

636
637
638
639
640
641
642
643
644
  * New `threadWait{Read,Write}STM :: Fd -> IO (STM (), IO ())`
    functions added to `Control.Concurrent` for waiting on FD
    readiness with STM actions.

  * Expose `Data.Fixed.Fixed`'s constructor.

  * There are now byte endian-swapping primitives
    `byteSwap{16,32,64}` available in `Data.Word`, which use
    optimized machine instructions when available.
645
646
647
648

  * `Data.Bool` now exports `bool :: a -> a -> Bool -> a`, analogously
    to `maybe` and `either` in their respective modules.

649
650
651
652
653
654
655
  * `Data.Either` now exports `isLeft, isRight :: Either a b -> Bool`.

  * `Debug.Trace` now exports `traceId`, `traceShowId`, `traceM`,
    and `traceShowM`.

  * `Data.Functor` now exports `($>)` and `void`.

656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
  * Rewrote portions of `Text.Printf`, and made changes to `Numeric`
    (added `Numeric.showFFloatAlt` and `Numeric.showGFloatAlt`) and
    `GHC.Float` (added `formatRealFloatAlt`) to support it.  The
    rewritten version is extensible to user types, adds a "generic"
    format specifier "`%v`", extends the `printf` spec to support much
    of C's `printf(3)` functionality, and fixes the spurious warnings
    about using `Text.Printf.printf` at `(IO a)` while ignoring the
    return value.  These changes were contributed by Bart Massey.

  * The minimal complete definitions for all type-classes with cyclic
    default implementations have been explicitly annotated with the
    new `{-# MINIMAL #-}` pragma.

  * `Control.Applicative.WrappedMonad`, which can be used to convert a
    `Monad` to an `Applicative`, has now a
    `Monad m => Monad (WrappedMonad m)` instance.
672

673
674
675
  * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
    and `WrappedArrow`.

676
677
678
679
680
681
682
683
684
685
686
  * Handle `ExitFailure (-sig)` on Unix by killing process with signal `sig`.

  * New module `Data.Type.Bool` providing operations on type-level booleans.

  * Expose `System.Mem.performMinorGC` for triggering minor GCs.

  * New `System.Environment.{set,unset}Env` for manipulating
    environment variables.

  * Add `Typeable` instance for `(->)` and `RealWorld`.

687
  * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
688
689
690
691
692
693
694
695
696
    does not support hand-written `Typeable` instances anymore.

  * Remove (unmaintained) Hugs98 and NHC98 specific code.

  * Optimize `System.Timeout.timeout` for the threaded RTS.

  * Remove deprecated functions `unsafeInterleaveST`, `unsafeIOToST`,
    and `unsafeSTToIO` from `Control.Monad.ST`.

697
698
699
700
  * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
    and makes the existing `AsyncException` and `Timeout` exception children
    of `SomeAsyncException` in the hierarchy.

701
702
703
704
705
706
707
708
709
  * Remove deprecated functions `blocked`, `unblock`, and `block` from
    `Control.Exception`.

  * Remove deprecated function `forkIOUnmasked` from `Control.Concurrent`.

  * Remove deprecated function `unsafePerformIO` export from `Foreign`
    (still available via `System.IO.Unsafe.unsafePerformIO`).

  * Various fixes and other improvements (see Git history for full details).