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

3
## 4.8.2.0  *TBA*
Austin Seipp's avatar
Austin Seipp committed
4

5
  * Bundled with GHC 7.12.1
Austin Seipp's avatar
Austin Seipp committed
6

7
8
9
10
11
12
13
14
15
16
17
18
19
  * `Alt`, `Dual`, `First`, `Last`, `Product`, and `Sum` now have `Data`,
    `MonadZip`, and `MonadFix` instances

  * `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

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

Fumiaki Kinoshita's avatar
Fumiaki Kinoshita committed
22
23
24
25
26
27
  * `ZipList` now has `Foldable` and `Traversable` instances

  * `Identity` now has a `Monoid` instance

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

28
29
30
31
32
33
34
35
  * Redundant typeclass constraints have been removed:
     - `Data.Ratio.{denominator,numerator}` have no `Integral` constraint anymore
     - **TODO**

  * New `GHC.Generics.packageName` operation

  * New `GHC.Stack.CallStack` data type

Fumiaki Kinoshita's avatar
Fumiaki Kinoshita committed
36
37
  * `Complex` now has `Generic`, `Generic1`, `Functor`, `Foldable`, `Traversable`,
    `Applicative`, and `Monad` instances
38

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

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

Gabriel439's avatar
Gabriel439 committed
43
44
  * `IO` now has a `Monoid` instance

45
46
47
  * Generalize `Debug.Trace.{traceM, traceShowM}` from `Monad` to `Applicative`
    (#10023)

48
49
  * Generalise `forever` from `Monad` to `Applicative`

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

53
54
55
  * New function `GHC.IO.interruptible` used to correctly implement
    `Control.Exception.allowInterrupt` (#9516)

56
57
58
  * Made `PatternMatchFail`, `RecSelError`, `RecConError`, `RecUpdError`,
    `NoMethodError`, and `AssertionFailed` newtypes (#10738)

59
## 4.8.1.0  *Jul 2015*
60
61
62

  * Bundled with GHC 7.10.2

63
64
  * `Lifetime` is now exported from `GHC.Event`

65
66
67
  * Implicit-parameter based source location support exposed in `GHC.SrcLoc`.
    See GHC User's Manual for more information.

68
## 4.8.0.0  *Mar 2015*
69
70
71

  * Bundled with GHC 7.10.1

72
73
  * Make `Applicative` a superclass of `Monad`

74
75
  * Add reverse application operator `Data.Function.(&)`

76
77
  * Add `Data.List.sortOn` sorting function

Simon Hengel's avatar
Simon Hengel committed
78
79
  * Add `System.Exit.die`

80
81
82
83
84
85
  * 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

86
87
  * Weaken RealFloat constraints on some `Data.Complex` functions

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

90
91
92
93
  * The `Data.Monoid` module now has the `PolyKinds` extension
    enabled, so that the `Monoid` instance for `Proxy` are polykinded
    like `Proxy` itself is.

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

96
97
  * Re-export `Data.Word.Word` from `Prelude`

98
99
100
  * Add `countLeadingZeros` and `countTrailingZeros` methods to
    `Data.Bits.FiniteBits` class

101
102
  * Add `Data.List.uncons` list destructor (#9550)

103
104
105
106
107
108
109
  * Export `Monoid(..)` from `Prelude`

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

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

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

113
114
115
  * Turn `toList`, `elem`, `sum`, `product`, `maximum`, and `minimum`
    into `Foldable` methods (#9621)

116
117
118
  * Replace the `Data.List`-exported functions

    ```
119
120
    all, and, any, concat, concatMap, elem, find, product, sum,
    mapAccumL, mapAccumR
121
122
    ```

123
124
125
126
    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)
127

128
129
130
131
  * 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`)

132
133
134
  * Replace the `Control.Monad`-exported functions

    ```
135
136
    sequence_, msum, mapM_, forM_,
    forM, mapM, sequence
137
138
    ```

139
140
141
142
    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)
143

144
145
146
  * Generalise `Control.Monad.{when,unless,guard}` from `Monad` to
    `Applicative` and from `MonadPlus` to `Alternative` respectively.

147
148
  * Generalise `Control.Monad.{foldM,foldM_}` to `Foldable`

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

152
153
  * Remove deprecated `Data.OldTypeable` (#9639)

154
155
156
  * New module `Data.Bifunctor` providing the `Bifunctor(bimap,first,second)`
    class (previously defined in `bifunctors` package) (#9682)

157
158
159
  * New module `Data.Void` providing the canonical uninhabited type `Void`
    (previously defined in `void` package) (#9814)

160
161
  * Update Unicode class definitions to Unicode version 7.0

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

164
165
  * Add `isSubsequenceOf` to `Data.List` (#9767)

166
167
168
169
  * 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)

170
171
172
  * New module `Data.Functor.Identity` (previously provided by `transformers`
    package). (#9664)

173
174
175
  * Add `scanl'`, a strictly accumulating version of `scanl`, to `Data.List`
    and `Data.OldList`. (#9368)

176
177
  * Add `fillBytes` to `Foreign.Marshal.Utils`.

178
179
  * Add new `displayException` method to `Exception` typeclass. (#9822)

180
181
182
  * Add `Data.Bits.toIntegralSized`, a size-checked version of
    `fromIntegral`. (#9816)

183
184
185
186
  * New module `Numeric.Natural` providing new `Natural` type
    representing non-negative arbitrary-precision integers.  The `GHC.Natural`
    module exposes additional GHC-specific primitives. (#9818)

187
188
189
190
  * Add `(Storable a, Integeral a) => Storable (Ratio a)` instance (#9826)

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

191
192
  * New module `GHC.RTS.Flags` that provides accessors to runtime flags.

193
194
195
196
197
198
199
200
201
  * 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`.

202
203
  * Make `read . show = id` for `Data.Fixed` (#9240)

204
  * Add `calloc` and `callocBytes` to `Foreign.Marshal.Alloc`. (#9859)
205

206
  * Add `callocArray` and `callocArray0` to `Foreign.Marshal.Array`. (#9859)
207

208
209
  * Restore invariant in `Data (Ratio a)` instance (#10011)

210
211
  * Add/expose `rnfTypeRep`, `rnfTyCon`, `typeRepFingerprint`, and
    `tyConFingerprint` helpers to `Data.Typeable`.
212

213
214
  * Define proper `MINIMAL` pragma for `class Ix`. (#10142)

215
216
217
218
219
220
221
222
## 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)

223
224
225
226
227
228
229
230
231
232
233
234
235
## 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)

236
## 4.7.0.0  *Apr 2014*
237
238
239

  * Bundled with GHC 7.8.1

240
241
242
243
  * 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)

244
245
246
247
248
249
250
  * 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`.

251
252
  * There are now `Show`, `Read`, `Eq`, `Ord`, `Monoid`, `Generic`, and
    `Generic1` instances for `Const`.
253
254
255

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

256
257
258
259
260
  * 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.

261
262
263
  * `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.

264
265
  * There are now `Bits` and `FiniteBits` instances for `Bool`.

266
267
  * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
    instances for `ZipList`.
268
269
270
271
272
273
274

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

275
276
277
278
279
280
  * `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.

281
282
283
  * There are now `Functor` instances for `System.Console.GetOpt`'s
    `ArgOrder`, `OptDescr`, and `ArgDescr`.

284
285
286
287
288
  * 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.

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

291
292
293
294
  * 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.

295
296
297
298
299
300
301
  * `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.

302
303
304
305
  * New `Control.Concurrent.MVar.withMVarMasked` which executes
    `IO` action with asynchronous exceptions masked in the same style
    as the existing `modifyMVarMasked` and `modifyMVarMasked_`.

306
307
308
309
310
311
312
313
314
  * 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.
315
316
317
318

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

319
320
321
322
323
324
325
  * `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`.

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
  * 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.
342

343
344
345
  * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
    and `WrappedArrow`.

346
347
348
349
350
351
352
353
354
355
356
  * 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`.

357
  * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
358
359
360
361
362
363
364
365
366
    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`.

367
368
369
370
  * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
    and makes the existing `AsyncException` and `Timeout` exception children
    of `SomeAsyncException` in the hierarchy.

371
372
373
374
375
376
377
378
379
  * 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).