8e1df37686d6f40648ef2208192767730e5e06d2
[packages/base.git] / changelog.md
1 # Changelog for [`base` package](http://hackage.haskell.org/package/base)
2
3 ## 4.7.0.0  *Feb 2014*
4
5   * Bundled with GHC 7.8.1
6
7   * Add `/Since: 4.[4567].0.0/` Haddock annotations to entities
8     denoting the package version, when the given entity was introduced
9     (or its type signature changed in a non-compatible way)
10
11   * The `Control.Category` module now has the `PolyKinds` extension
12     enabled, meaning that instances of `Category` no longer need be of
13     kind `* -> * -> *`.
14
15   * There are now `Foldable` and `Traversable` instances for `Either a`,
16    `Const r`, and `(,) a`.
17
18   * There is now a `Monoid` instance for `Const`.
19
20   * There is now a `Data` instance for `Data.Version`.
21
22   * A new `Data.Bits.FiniteBits` class has been added to represent
23     types with fixed bit-count. The existing `Bits` class is extended
24     with a `bitSizeMaybe` method to replace the now obsolete
25     `bitsize` method.
26
27   * There are now `Bits` and `FiniteBits` instances for `Bool`.
28
29   * There are now `Eq`, `Ord`, `Show` and `Read` instances for `ZipList`.
30
31   * There are now `Eq`, `Ord`, `Show` and `Read` instances for `Down`.
32
33   * There are now `Eq`, `Ord`, `Show`, `Read` and `Generic` instances
34     for types in GHC.Generics (`U1`, `Par1`, `Rec1`, `K1`, `M1`,
35     `(:+:)`, `(:*:)`, `(:.:)`).
36
37   * There are now `Functor` instances for `System.Console.GetOpt`'s
38     `ArgOrder`, `OptDescr`, and `ArgDescr`.
39
40   * A zero-width unboxed poly-kinded `Proxy#` was added to
41     `GHC.Prim`. It can be used to make it so that there is no the
42     operational overhead for passing around proxy arguments to model
43     type application.
44
45   * New `Data.Proxy` module providing a concrete, poly-kinded proxy type.
46
47   * `Control.Concurrent.MVar` has a new implementation of `readMVar`,
48     which fixes a long-standing bug where `readMVar` is only atomic if
49     there are no other threads running `putMVar`.  `readMVar` now is
50     atomic, and is guaranteed to return the value from the first
51     `putMVar`.  There is also a new `tryReadMVar` which is a
52     non-blocking version.
53
54   * New `threadWait{Read,Write}STM :: Fd -> IO (STM (), IO ())`
55     functions added to `Control.Concurrent` for waiting on FD
56     readiness with STM actions.
57
58   * Expose `Data.Fixed.Fixed`'s constructor.
59
60   * There are now byte endian-swapping primitives
61     `byteSwap{16,32,64}` available in `Data.Word`, which use
62     optimized machine instructions when available.
63
64   * `Data.Bool` now exports `bool :: a -> a -> Bool -> a`, analogously
65     to `maybe` and `either` in their respective modules.
66
67   * `Data.Either` now exports `isLeft, isRight :: Either a b -> Bool`.
68
69   * `Debug.Trace` now exports `traceId`, `traceShowId`, `traceM`,
70     and `traceShowM`.
71
72   * `Data.Functor` now exports `($>)` and `void`.
73
74   * Rewrote portions of `Text.Printf`, and made changes to `Numeric`
75     (added `Numeric.showFFloatAlt` and `Numeric.showGFloatAlt`) and
76     `GHC.Float` (added `formatRealFloatAlt`) to support it.  The
77     rewritten version is extensible to user types, adds a "generic"
78     format specifier "`%v`", extends the `printf` spec to support much
79     of C's `printf(3)` functionality, and fixes the spurious warnings
80     about using `Text.Printf.printf` at `(IO a)` while ignoring the
81     return value.  These changes were contributed by Bart Massey.
82
83   * The minimal complete definitions for all type-classes with cyclic
84     default implementations have been explicitly annotated with the
85     new `{-# MINIMAL #-}` pragma.
86
87   * `Control.Applicative.WrappedMonad`, which can be used to convert a
88     `Monad` to an `Applicative`, has now a
89     `Monad m => Monad (WrappedMonad m)` instance.
90
91   * Handle `ExitFailure (-sig)` on Unix by killing process with signal `sig`.
92
93   * New module `Data.Type.Bool` providing operations on type-level booleans.
94
95   * Expose `System.Mem.performMinorGC` for triggering minor GCs.
96
97   * New `System.Environment.{set,unset}Env` for manipulating
98     environment variables.
99
100   * Add `Typeable` instance for `(->)` and `RealWorld`.
101
102   * Declare CPP head `<Typeable.h>` officially obsolete as GHC 7.8+
103     does not support hand-written `Typeable` instances anymore.
104
105   * Remove (unmaintained) Hugs98 and NHC98 specific code.
106
107   * Optimize `System.Timeout.timeout` for the threaded RTS.
108
109   * Remove deprecated functions `unsafeInterleaveST`, `unsafeIOToST`,
110     and `unsafeSTToIO` from `Control.Monad.ST`.
111
112   * Remove deprecated functions `blocked`, `unblock`, and `block` from
113     `Control.Exception`.
114
115   * Remove deprecated function `forkIOUnmasked` from `Control.Concurrent`.
116
117   * Remove deprecated function `unsafePerformIO` export from `Foreign`
118     (still available via `System.IO.Unsafe.unsafePerformIO`).
119
120   * Various fixes and other improvements (see Git history for full details).