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).