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

3 4 5 6 7
## 4.14.0.0 *TBA*
  * Bundled with GHC *TBA*

  * Add a `TestEquality` instance for the `Compose` newtype.

8 9
  * `Data.Ord.Down` now has a field name, `getDown`

10 11 12 13
  * Add `Bits`, `Bounded`, `Enum`, `FiniteBits`, `Floating`, `Fractional`,
    `Integral`, `Ix`, `Real`, `RealFrac`, `RealFloat` and `Storable` instances
    to `Data.Ord.Down`.

14 15 16 17
  * Fix the `integer-gmp` variant of `isValidNatural`: Previously it would fail
    to detect values `<= maxBound::Word` that were incorrectly encoded using
    the `NatJ#` constructor.

18 19 20 21 22 23
  * The type of `coerce` has been generalized. It is now runtime-representation
    polymorphic:
    `forall {r :: RuntimeRep} (a :: TYPE r) (b :: TYPE r). Coercible a b => a -> b`.
    The type argument `r` is marked as `Inferred` to prevent it from
    interfering with visible type application.

24 25 26 27
  * Make `Fixed` and `HasResolution` poly-kinded.

  * Add `HasResolution` instances for `Nat`s.

28 29 30
  * Add `Functor`, `Applicative`, `Monad`, `Alternative`, `MonadPlus`,
    `Generic` and `Generic1` instances to `Kleisli`

31
## 4.13.0.0 *TBA*
32 33
  * Bundled with GHC *TBA*

34 35 36 37 38 39 40 41
  * The final phase of the `MonadFail` proposal has been implemented:

    * The `fail` method of `Monad` has been removed in favor of the method of
      the same name in the `MonadFail` class.

    * `MonadFail(fail)` is now re-exported from the `Prelude` and
      `Control.Monad` modules.

42 43 44 45 46
  * Fix `Show` instance of `Data.Fixed`: Negative numbers are now parenthesized
    according to their surrounding context. I.e. `Data.Fixed.show` produces
    syntactically correct Haskell for expressions like `Just (-1 :: Fixed E2)`.
    (#16031)

47 48 49
  * Support the characters from recent versions of Unicode (up to v. 12) in
    literals (#5518).

David Feuer's avatar
David Feuer committed
50 51 52 53
  * The `StableName` type parameter now has a phantom role instead of
    a representational one. There is really no reason to care about the
    type of the underlying object.

54 55
  * Add `foldMap'`, a strict version of `foldMap`, to `Foldable`.

56 57 58 59
  * The `shiftL` and `shiftR` methods in the `Bits` instances of `Int`, `IntN`,
    `Word`, and `WordN` now throw an overflow exception for negative shift
    values (instead of being undefined behaviour).

60 61
  * `scanr` no longer participates in list fusion (due #16943)

Ben Gamari's avatar
Ben Gamari committed
62 63
## 4.12.0.0 *21 September 2018*
  * Bundled with GHC 8.6.1
64

65 66 67 68 69 70 71 72 73 74 75
  * The STM invariant-checking mechanism (`always` and `alwaysSucceeds`), which
    was deprecated in GHC 8.4, has been removed (as proposed in
    <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0011-deprecate-stm-invariants.rst>).
    This is a bit earlier than proposed in the deprecation pragma included in
    GHC 8.4, but due to community feedback we decided to move ahead with the
    early removal.

    Existing users are encouraged to encapsulate their STM operations in safe
    abstractions which can perform the invariant checking without help from the
    runtime system.

76 77 78
  * Add a new module `GHC.ResponseFile` (previously defined in the `haddock`
    package). (#13896)

79 80
  * Move the module `Data.Functor.Contravariant` from the
    `contravariant` package to `base`.
81 82 83

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

84 85 86
  * Add `Applicative` (for `K1`), `Semigroup` and `Monoid` instances in
    `GHC.Generics`. (#14849)

David Feuer's avatar
David Feuer committed
87 88
  * `asinh` for `Float` and `Double` is now numerically stable in the face of
    non-small negative arguments and enormous arguments of either sign. (#14927)
89

90 91
  * `Numeric.showEFloat (Just 0)` now respects the user's requested precision.
    (#15115)
chessai's avatar
chessai committed
92

93
  * `Data.Monoid.Alt` now has `Foldable` and `Traversable` instances. (#15099)
94

chessai's avatar
chessai committed
95 96
  * `Data.Monoid.Ap` has been introduced

97 98
  * `Control.Exception.throw` is now levity polymorphic. (#15180)

99 100 101 102 103
  * `Data.Ord.Down` now has a number of new instances. These include:
    `MonadFix`, `MonadZip`, `Data`, `Foldable`, `Traversable`, `Eq1`, `Ord1`,
    `Read1`, `Show1`, `Generic`, `Generic1`. (#15098)


Ben Gamari's avatar
Ben Gamari committed
104
## 4.11.1.0 *19 April 2018*
105 106
  * Bundled with GHC 8.4.2

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

Ben Gamari's avatar
Ben Gamari committed
110
## 4.11.0.0 *8 March 2018*
111
  * Bundled with GHC 8.4.1
112

113 114
  * `System.IO.openTempFile` is now thread-safe on Windows.

115 116
  * Deprecated `GHC.Stats.GCStats` interface has been removed.

117 118
  * Add `showHFloat` to `Numeric`

119
  * Add `Div`, `Mod`, and `Log2` functions on type-level naturals
120 121
    in `GHC.TypeLits`.

122 123
  * Add `Alternative` instance for `ZipList` (#13520)

124 125 126
  * Add instances `Num`, `Functor`, `Applicative`, `Monad`, `Semigroup`
    and `Monoid` for `Data.Ord.Down` (#13097).

127 128 129
  * Add `Semigroup` instance for `EventLifetime`.

  * Make `Semigroup` a superclass of `Monoid`;
130
    export `Semigroup((<>))` from `Prelude`; remove `Monoid` reexport
131 132
    from `Data.Semigroup` (#14191).

133 134 135
  * Generalise `instance Monoid a => Monoid (Maybe a)` to
    `instance Semigroup a => Monoid (Maybe a)`.

136
  * Add `infixl 9 !!` declaration for `Data.List.NonEmpty.!!`
137

138 139
  * Add `<&>` operator to `Data.Functor` (#14029)

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

David Feuer's avatar
David Feuer committed
142 143 144 145 146 147 148 149
  * 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.

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

152 153 154 155 156
  * 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
157 158 159
  * Add `iterate'`, a strict version of `iterate`, to `Data.List`
    and `Data.OldList` (#3474)

160 161
  * Add `Data` instances for `IntPtr` and `WordPtr` (#13115)

162 163
  * Add missing `MonadFail` instance for `Control.Monad.Strict.ST.ST`

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

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

168 169 170
  * `Type.Reflection.withTypeable` is now polymorphic in the `RuntimeRep` of
    its result.

171 172
  * Add `installSEHHandlers` to `MiscFlags` in `GHC.RTS.Flags` to determine if
    exception handling is enabled.
173

174 175
  * The deprecated functions `isEmptyChan` and `unGetChan` in
    `Control.Concurrent.Chan` have been removed (#13561).
176

177 178 179
  * Add `generateCrashDumpFile` to `MiscFlags` in `GHC.RTS.Flags` to determine
    if a core dump will be generated on crashes.

180 181 182
  * Add `generateStackTrace` to `MiscFlags` in `GHC.RTS.Flags` to determine if
    stack traces will be generated on unhandled exceptions by the RTS.

183 184
  * `getExecutablePath` now resolves symlinks on Windows (#14483)

185 186 187
  * Deprecated STM invariant checking primitives (`checkInv`, `always`, and
    `alwaysSucceeds`) in `GHC.Conc.Sync` (#14324).

188 189 190 191
  * Add a `FixIOException` data type to `Control.Exception.Base`, and change
    `fixIO` to throw that instead of a `BlockedIndefinitelyOnMVar` exception
    (#14356).

192 193 194 195 196 197 198 199
## 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`

200 201
## 4.10.0.0 *July 2017*
  * Bundled with GHC 8.2.1
202

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

205 206 207
  * `Foreign.Ptr` now exports the constructors for `IntPtr` and `WordPtr`
    (#11983)

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

211 212 213
  * `New modules `Data.Bifoldable` and `Data.Bitraversable` (previously defined
    in the `bifunctors` package) (#10448)

214 215
  * `Data.Either` now provides `fromLeft` and `fromRight` (#12402)

216 217
  * `Data.Type.Coercion` now provides `gcoerceWith` (#12493)

218 219 220 221 222
  * 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)

223 224 225
  * Add `Semigroup` instance for `IO`, as well as for `Event` and `Lifetime`
    from `GHC.Event` (#12464)

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

228 229
  * Added `Eq1`, `Ord1`, `Read1` and `Show1` instances for `NonEmpty`.

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

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

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

238 239
  * Add `plusForeignPtr` to `Foreign.ForeignPtr`.

240 241 242
  * Add `type family AppendSymbol (m :: Symbol) (n :: Symbol) :: Symbol` to `GHC.TypeLits`
    (#12162)

243 244 245 246
  * 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`.

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

David Feuer's avatar
David Feuer committed
249 250 251 252 253 254 255
  * `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)

256 257
  * A new module, `Type.Reflection`, exposing GHC's new type-indexed type
    representation mechanism is now provided.
Ben Gamari's avatar
Ben Gamari committed
258 259 260 261

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

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

Ben Gamari's avatar
Ben Gamari committed
265 266 267 268
  * 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.

269 270 271 272
  * 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)

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

277 278
  * `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
279
    `Type.Reflection`.
280 281 282 283

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

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

287
## 4.9.0.0  *May 2016*
288 289

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

Eric Seidel's avatar
Eric Seidel committed
291 292 293 294
  * `error` and `undefined` now print a partial stack-trace alongside the error message.

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

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

298 299
  * New `GHC.Generics.packageName` operation

300 301 302
  * Redesigned `GHC.Stack.CallStack` data type. As a result, `CallStack`'s
    `Show` instance produces different output, and `CallStack` no longer has an
    `Eq` instance.
303

Eric Seidel's avatar
Eric Seidel committed
304 305 306 307 308 309 310 311 312 313 314
  * 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`

315 316 317
  * 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
318 319 320 321 322
  * `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
323 324 325
  * 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)
326

Ben Gamari's avatar
Ben Gamari committed
327 328 329 330
  * 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)
331

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

336 337 338
  * The `Eq`, `Ord`, `Read`, and `Show` instances for `U1` now use lazier
    pattern-matching

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

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

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

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

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

352 353 354
  * New function `GHC.IO.interruptible` used to correctly implement
    `Control.Exception.allowInterrupt` (#9516)

355 356 357
  * Made `PatternMatchFail`, `RecSelError`, `RecConError`, `RecUpdError`,
    `NoMethodError`, and `AssertionFailed` newtypes (#10738)

358 359 360
  * New module `Control.Monad.IO.Class` (previously provided by `transformers`
    package). (#10773)

361 362 363 364
  * New modules `Data.Functor.Classes`, `Data.Functor.Compose`,
    `Data.Functor.Product`, and `Data.Functor.Sum` (previously provided by
    `transformers` package). (#11135)

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

368 369 370
  * New module `Control.Monad.Fail` providing new `MonadFail(fail)`
    class (#10751)

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

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

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

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

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

Ben Gamari's avatar
Ben Gamari committed
385 386 387
  * 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
388

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

392 393 394
  * The `bitSize` method of `Data.Bits.Bits` now has a (partial!)
    default implementation based on `bitSizeMaybe`. (#12970)

Ben Gamari's avatar
Ben Gamari committed
395
### New instances
396

Ben Gamari's avatar
Ben Gamari committed
397 398 399
  * `Alt`, `Dual`, `First`, `Last`, `Product`, and `Sum` now have `Data`,
    `MonadZip`, and `MonadFix` instances

400 401 402 403 404
  * 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
405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
  * `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

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

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

436 437 438
  * Add `MonadPlus IO` and `Alternative IO` instances
    (previously orphans in `transformers`) (#10755)

439 440
  * `CallStack` now has an `IsList` instance

441 442 443
  * The field `spInfoName` of `GHC.StaticPtr.StaticPtrInfo` has been removed.
    The value is no longer available when constructing the `StaticPtr`.

444 445
  * `VecElem` and `VecCount` now have `Enum` and `Bounded` instances.

Ben Gamari's avatar
Ben Gamari committed
446
### Generalizations
Ben Gamari's avatar
Ben Gamari committed
447

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

Eric Seidel's avatar
Eric Seidel committed
451 452 453 454
  * Redundant typeclass constraints have been removed:
     - `Data.Ratio.{denominator,numerator}` have no `Integral` constraint anymore
     - **TODO**

Ben Gamari's avatar
Ben Gamari committed
455
  * Generalise `forever` from `Monad` to `Applicative`
456

Ben Gamari's avatar
Ben Gamari committed
457 458 459 460
  * Generalize `filterM`, `mapAndUnzipM`, `zipWithM`, `zipWithM_`, `replicateM`,
    `replicateM_` from `Monad` to `Applicative` (#10168)

  * The `Generic` instance for `Proxy` is now poly-kinded (#10775)
461 462 463 464 465

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


466 467 468 469 470 471 472 473 474 475
## 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`

476
## 4.8.1.0  *Jul 2015*
477 478 479

  * Bundled with GHC 7.10.2

480 481
  * `Lifetime` is now exported from `GHC.Event`

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

485
## 4.8.0.0  *Mar 2015*
486 487 488

  * Bundled with GHC 7.10.1

489 490
  * Make `Applicative` a superclass of `Monad`

491 492
  * Add reverse application operator `Data.Function.(&)`

493 494
  * Add `Data.List.sortOn` sorting function

Simon Hengel's avatar
Simon Hengel committed
495 496
  * Add `System.Exit.die`

497 498 499 500 501 502
  * 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

503 504
  * Weaken RealFloat constraints on some `Data.Complex` functions

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

507 508 509 510
  * The `Data.Monoid` module now has the `PolyKinds` extension
    enabled, so that the `Monoid` instance for `Proxy` are polykinded
    like `Proxy` itself is.

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

513 514
  * Re-export `Data.Word.Word` from `Prelude`

515 516 517
  * Add `countLeadingZeros` and `countTrailingZeros` methods to
    `Data.Bits.FiniteBits` class

518 519
  * Add `Data.List.uncons` list destructor (#9550)

520 521 522 523 524 525 526
  * Export `Monoid(..)` from `Prelude`

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

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

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

530 531 532
  * Turn `toList`, `elem`, `sum`, `product`, `maximum`, and `minimum`
    into `Foldable` methods (#9621)

533 534 535
  * Replace the `Data.List`-exported functions

    ```
536 537
    all, and, any, concat, concatMap, elem, find, product, sum,
    mapAccumL, mapAccumR
538 539
    ```

540 541 542 543
    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)
544

545 546 547 548
  * 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`)

549 550 551
  * Replace the `Control.Monad`-exported functions

    ```
552 553
    sequence_, msum, mapM_, forM_,
    forM, mapM, sequence
554 555
    ```

556 557 558 559
    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)
560

561 562 563
  * Generalise `Control.Monad.{when,unless,guard}` from `Monad` to
    `Applicative` and from `MonadPlus` to `Alternative` respectively.

564 565
  * Generalise `Control.Monad.{foldM,foldM_}` to `Foldable`

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

569 570
  * Remove deprecated `Data.OldTypeable` (#9639)

571 572 573
  * New module `Data.Bifunctor` providing the `Bifunctor(bimap,first,second)`
    class (previously defined in `bifunctors` package) (#9682)

574 575 576
  * New module `Data.Void` providing the canonical uninhabited type `Void`
    (previously defined in `void` package) (#9814)

577 578
  * Update Unicode class definitions to Unicode version 7.0

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

581 582
  * Add `isSubsequenceOf` to `Data.List` (#9767)

583 584 585 586
  * 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)

587 588 589
  * New module `Data.Functor.Identity` (previously provided by `transformers`
    package). (#9664)

590 591 592
  * Add `scanl'`, a strictly accumulating version of `scanl`, to `Data.List`
    and `Data.OldList`. (#9368)

593 594
  * Add `fillBytes` to `Foreign.Marshal.Utils`.

595 596
  * Add new `displayException` method to `Exception` typeclass. (#9822)

597 598 599
  * Add `Data.Bits.toIntegralSized`, a size-checked version of
    `fromIntegral`. (#9816)

600 601 602 603
  * New module `Numeric.Natural` providing new `Natural` type
    representing non-negative arbitrary-precision integers.  The `GHC.Natural`
    module exposes additional GHC-specific primitives. (#9818)

604 605 606 607
  * Add `(Storable a, Integeral a) => Storable (Ratio a)` instance (#9826)

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

608 609
  * New module `GHC.RTS.Flags` that provides accessors to runtime flags.

610 611 612 613 614 615 616 617 618
  * 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`.

619 620
  * Make `read . show = id` for `Data.Fixed` (#9240)

621
  * Add `calloc` and `callocBytes` to `Foreign.Marshal.Alloc`. (#9859)
622

623
  * Add `callocArray` and `callocArray0` to `Foreign.Marshal.Array`. (#9859)
624

625 626
  * Restore invariant in `Data (Ratio a)` instance (#10011)

627 628
  * Add/expose `rnfTypeRep`, `rnfTyCon`, `typeRepFingerprint`, and
    `tyConFingerprint` helpers to `Data.Typeable`.
629

630 631
  * Define proper `MINIMAL` pragma for `class Ix`. (#10142)

632 633 634 635 636 637 638 639
## 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)

640 641 642 643 644 645 646 647 648 649 650 651 652
## 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)

653
## 4.7.0.0  *Apr 2014*
654 655 656

  * Bundled with GHC 7.8.1

657 658 659 660
  * 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)

661 662 663 664 665 666 667
  * 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`.

668 669
  * There are now `Show`, `Read`, `Eq`, `Ord`, `Monoid`, `Generic`, and
    `Generic1` instances for `Const`.
670 671 672

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

673 674 675 676 677
  * 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.

678 679 680
  * `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.

681 682
  * There are now `Bits` and `FiniteBits` instances for `Bool`.

683 684
  * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
    instances for `ZipList`.
685 686 687 688 689 690 691

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

692 693 694 695 696 697
  * `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.

698 699 700
  * There are now `Functor` instances for `System.Console.GetOpt`'s
    `ArgOrder`, `OptDescr`, and `ArgDescr`.

701 702 703 704 705
  * 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.

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

708 709 710 711
  * 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.

712 713 714 715 716 717 718
  * `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.

719 720 721 722
  * New `Control.Concurrent.MVar.withMVarMasked` which executes
    `IO` action with asynchronous exceptions masked in the same style
    as the existing `modifyMVarMasked` and `modifyMVarMasked_`.

723 724 725 726 727 728 729 730 731
  * 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.
732 733 734 735

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

736 737 738 739 740 741 742
  * `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`.

743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758
  * 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.
759

760 761 762
  * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
    and `WrappedArrow`.

763 764 765 766 767 768 769 770 771 772 773
  * 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`.

774
  * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
775 776 777 778 779 780 781 782 783
    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`.

784 785 786 787
  * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
    and makes the existing `AsyncException` and `Timeout` exception children
    of `SomeAsyncException` in the hierarchy.

788 789 790 791 792 793 794 795 796
  * 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).