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

Ben Gamari's avatar
Ben Gamari committed
3
## 4.10.0.0 *April 2017*
4 5
  * Bundled with GHC *TBA*

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

8 9 10
  * `Foreign.Ptr` now exports the constructors for `IntPtr` and `WordPtr`
    (#11983)

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

14 15 16
  * `New modules `Data.Bifoldable` and `Data.Bitraversable` (previously defined
    in the `bifunctors` package) (#10448)

17 18
  * `Data.Either` now provides `fromLeft` and `fromRight` (#12402)

19 20
  * `Data.Type.Coercion` now provides `gcoerceWith` (#12493)

21 22 23 24 25
  * 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)

26 27 28
  * Add `Semigroup` instance for `IO`, as well as for `Event` and `Lifetime`
    from `GHC.Event` (#12464)

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

31 32
  * Added `Eq1`, `Ord1`, `Read1` and `Show1` instances for `NonEmpty`.

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

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

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

41 42
  * Add `plusForeignPtr` to `Foreign.ForeignPtr`.

43 44 45
  * Add `type family AppendSymbol (m :: Symbol) (n :: Symbol) :: Symbol` to `GHC.TypeLits`
    (#12162)

46 47 48 49
  * 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`.

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

David Feuer's avatar
David Feuer committed
52 53 54 55 56 57 58
  * `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)

59 60
  * A new module, `Type.Reflection`, exposing GHC's new type-indexed type
    representation mechanism is now provided.
Ben Gamari's avatar
Ben Gamari committed
61 62 63 64

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

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

Ben Gamari's avatar
Ben Gamari committed
68 69 70 71
  * 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.

72
## 4.9.0.0  *May 2016*
73 74

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

Eric Seidel's avatar
Eric Seidel committed
76 77 78 79
  * `error` and `undefined` now print a partial stack-trace alongside the error message.

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

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

83 84
  * New `GHC.Generics.packageName` operation

85 86 87
  * Redesigned `GHC.Stack.CallStack` data type. As a result, `CallStack`'s
    `Show` instance produces different output, and `CallStack` no longer has an
    `Eq` instance.
88

Eric Seidel's avatar
Eric Seidel committed
89 90 91 92 93 94 95 96 97 98 99
  * 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`

100 101 102
  * 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
103 104 105 106 107
  * `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
108 109 110
  * 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)
111

Ben Gamari's avatar
Ben Gamari committed
112 113 114 115
  * 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)
116

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

121 122 123
  * The `Eq`, `Ord`, `Read`, and `Show` instances for `U1` now use lazier
    pattern-matching

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

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

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

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

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

137 138 139
  * New function `GHC.IO.interruptible` used to correctly implement
    `Control.Exception.allowInterrupt` (#9516)

140 141 142
  * Made `PatternMatchFail`, `RecSelError`, `RecConError`, `RecUpdError`,
    `NoMethodError`, and `AssertionFailed` newtypes (#10738)

143 144 145
  * New module `Control.Monad.IO.Class` (previously provided by `transformers`
    package). (#10773)

146 147 148 149
  * New modules `Data.Functor.Classes`, `Data.Functor.Compose`,
    `Data.Functor.Product`, and `Data.Functor.Sum` (previously provided by
    `transformers` package). (#11135)

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

153 154 155
  * New module `Control.Monad.Fail` providing new `MonadFail(fail)`
    class (#10751)

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

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

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

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

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

Ben Gamari's avatar
Ben Gamari committed
170 171 172
  * 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
173

174 175 176
  * 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
177
### New instances
178

Ben Gamari's avatar
Ben Gamari committed
179 180 181
  * `Alt`, `Dual`, `First`, `Last`, `Product`, and `Sum` now have `Data`,
    `MonadZip`, and `MonadFix` instances

182 183 184 185 186
  * 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
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
  * `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

203 204 205
  * `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
206 207 208 209 210 211 212 213 214 215 216

  * `()` 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
217

218 219 220
  * Add `MonadPlus IO` and `Alternative IO` instances
    (previously orphans in `transformers`) (#10755)

221 222
  * `CallStack` now has an `IsList` instance

223 224 225
  * The field `spInfoName` of `GHC.StaticPtr.StaticPtrInfo` has been removed.
    The value is no longer available when constructing the `StaticPtr`.

226 227
  * `VecElem` and `VecCount` now have `Enum` and `Bounded` instances.

Ben Gamari's avatar
Ben Gamari committed
228
### Generalizations
Ben Gamari's avatar
Ben Gamari committed
229

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

Eric Seidel's avatar
Eric Seidel committed
233 234 235 236
  * Redundant typeclass constraints have been removed:
     - `Data.Ratio.{denominator,numerator}` have no `Integral` constraint anymore
     - **TODO**

Ben Gamari's avatar
Ben Gamari committed
237
  * Generalise `forever` from `Monad` to `Applicative`
238

Ben Gamari's avatar
Ben Gamari committed
239 240 241 242
  * Generalize `filterM`, `mapAndUnzipM`, `zipWithM`, `zipWithM_`, `replicateM`,
    `replicateM_` from `Monad` to `Applicative` (#10168)

  * The `Generic` instance for `Proxy` is now poly-kinded (#10775)
243 244 245 246 247

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


248 249 250 251 252 253 254 255 256 257
## 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`

258
## 4.8.1.0  *Jul 2015*
259 260 261

  * Bundled with GHC 7.10.2

262 263
  * `Lifetime` is now exported from `GHC.Event`

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

267
## 4.8.0.0  *Mar 2015*
268 269 270

  * Bundled with GHC 7.10.1

271 272
  * Make `Applicative` a superclass of `Monad`

273 274
  * Add reverse application operator `Data.Function.(&)`

275 276
  * Add `Data.List.sortOn` sorting function

Simon Hengel's avatar
Simon Hengel committed
277 278
  * Add `System.Exit.die`

279 280 281 282 283 284
  * 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

285 286
  * Weaken RealFloat constraints on some `Data.Complex` functions

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

289 290 291 292
  * The `Data.Monoid` module now has the `PolyKinds` extension
    enabled, so that the `Monoid` instance for `Proxy` are polykinded
    like `Proxy` itself is.

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

295 296
  * Re-export `Data.Word.Word` from `Prelude`

297 298 299
  * Add `countLeadingZeros` and `countTrailingZeros` methods to
    `Data.Bits.FiniteBits` class

300 301
  * Add `Data.List.uncons` list destructor (#9550)

302 303 304 305 306 307 308
  * Export `Monoid(..)` from `Prelude`

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

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

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

312 313 314
  * Turn `toList`, `elem`, `sum`, `product`, `maximum`, and `minimum`
    into `Foldable` methods (#9621)

315 316 317
  * Replace the `Data.List`-exported functions

    ```
318 319
    all, and, any, concat, concatMap, elem, find, product, sum,
    mapAccumL, mapAccumR
320 321
    ```

322 323 324 325
    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)
326

327 328 329 330
  * 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`)

331 332 333
  * Replace the `Control.Monad`-exported functions

    ```
334 335
    sequence_, msum, mapM_, forM_,
    forM, mapM, sequence
336 337
    ```

338 339 340 341
    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)
342

343 344 345
  * Generalise `Control.Monad.{when,unless,guard}` from `Monad` to
    `Applicative` and from `MonadPlus` to `Alternative` respectively.

346 347
  * Generalise `Control.Monad.{foldM,foldM_}` to `Foldable`

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

351 352
  * Remove deprecated `Data.OldTypeable` (#9639)

353 354 355
  * New module `Data.Bifunctor` providing the `Bifunctor(bimap,first,second)`
    class (previously defined in `bifunctors` package) (#9682)

356 357 358
  * New module `Data.Void` providing the canonical uninhabited type `Void`
    (previously defined in `void` package) (#9814)

359 360
  * Update Unicode class definitions to Unicode version 7.0

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

363 364
  * Add `isSubsequenceOf` to `Data.List` (#9767)

365 366 367 368
  * 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)

369 370 371
  * New module `Data.Functor.Identity` (previously provided by `transformers`
    package). (#9664)

372 373 374
  * Add `scanl'`, a strictly accumulating version of `scanl`, to `Data.List`
    and `Data.OldList`. (#9368)

375 376
  * Add `fillBytes` to `Foreign.Marshal.Utils`.

377 378
  * Add new `displayException` method to `Exception` typeclass. (#9822)

379 380 381
  * Add `Data.Bits.toIntegralSized`, a size-checked version of
    `fromIntegral`. (#9816)

382 383 384 385
  * New module `Numeric.Natural` providing new `Natural` type
    representing non-negative arbitrary-precision integers.  The `GHC.Natural`
    module exposes additional GHC-specific primitives. (#9818)

386 387 388 389
  * Add `(Storable a, Integeral a) => Storable (Ratio a)` instance (#9826)

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

390 391
  * New module `GHC.RTS.Flags` that provides accessors to runtime flags.

392 393 394 395 396 397 398 399 400
  * 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`.

401 402
  * Make `read . show = id` for `Data.Fixed` (#9240)

403
  * Add `calloc` and `callocBytes` to `Foreign.Marshal.Alloc`. (#9859)
404

405
  * Add `callocArray` and `callocArray0` to `Foreign.Marshal.Array`. (#9859)
406

407 408
  * Restore invariant in `Data (Ratio a)` instance (#10011)

409 410
  * Add/expose `rnfTypeRep`, `rnfTyCon`, `typeRepFingerprint`, and
    `tyConFingerprint` helpers to `Data.Typeable`.
411

412 413
  * Define proper `MINIMAL` pragma for `class Ix`. (#10142)

414 415 416 417 418 419 420 421
## 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)

422 423 424 425 426 427 428 429 430 431 432 433 434
## 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)

435
## 4.7.0.0  *Apr 2014*
436 437 438

  * Bundled with GHC 7.8.1

439 440 441 442
  * 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)

443 444 445 446 447 448 449
  * 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`.

450 451
  * There are now `Show`, `Read`, `Eq`, `Ord`, `Monoid`, `Generic`, and
    `Generic1` instances for `Const`.
452 453 454

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

455 456 457 458 459
  * 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.

460 461 462
  * `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.

463 464
  * There are now `Bits` and `FiniteBits` instances for `Bool`.

465 466
  * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
    instances for `ZipList`.
467 468 469 470 471 472 473

  * 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`,
    `(:+:)`, `(:*:)`, `(:.:)`).

474 475 476 477 478 479
  * `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.

480 481 482
  * There are now `Functor` instances for `System.Console.GetOpt`'s
    `ArgOrder`, `OptDescr`, and `ArgDescr`.

483 484 485 486 487
  * 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.

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

490 491 492 493
  * 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.

494 495 496 497 498 499 500
  * `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.

501 502 503 504
  * New `Control.Concurrent.MVar.withMVarMasked` which executes
    `IO` action with asynchronous exceptions masked in the same style
    as the existing `modifyMVarMasked` and `modifyMVarMasked_`.

505 506 507 508 509 510 511 512 513
  * 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.
514 515 516 517

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

518 519 520 521 522 523 524
  * `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`.

525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540
  * 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.
541

542 543 544
  * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
    and `WrappedArrow`.

545 546 547 548 549 550 551 552 553 554 555
  * 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`.

556
  * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
557 558 559 560 561 562 563 564 565
    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`.

566 567 568 569
  * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
    and makes the existing `AsyncException` and `Timeout` exception children
    of `SomeAsyncException` in the hierarchy.

570 571 572 573 574 575 576 577 578
  * 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).