Typo
[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`, `Generic`, and `Generic1` 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   * `Data.Bits.Bits` gained a new `zeroBits` method which completes the
28     `Bits` API with a direct way to introduce a value with all bits cleared.
29
30   * There are now `Bits` and `FiniteBits` instances for `Bool`.
31
32   * There are now `Eq`, `Ord`, `Show`, `Read`, `Generic`. and `Generic1`
33     instances for `ZipList`.
34
35   * There are now `Eq`, `Ord`, `Show` and `Read` instances for `Down`.
36
37   * There are now `Eq`, `Ord`, `Show`, `Read` and `Generic` instances
38     for types in GHC.Generics (`U1`, `Par1`, `Rec1`, `K1`, `M1`,
39     `(:+:)`, `(:*:)`, `(:.:)`).
40
41   * `Data.Monoid`: There are now `Generic` instances for `Dual`, `Endo`,
42     `All`, `Any`, `Sum`, `Product`, `First`, and `Last`; as well as
43     `Generic1` instances for `Dual`, `Sum`, `Product`, `First`, and `Last`.
44
45   * The `Data.Monoid.{Product,Sum}` newtype wrappers now have `Num` instances.
46
47   * There are now `Functor` instances for `System.Console.GetOpt`'s
48     `ArgOrder`, `OptDescr`, and `ArgDescr`.
49
50   * A zero-width unboxed poly-kinded `Proxy#` was added to
51     `GHC.Prim`. It can be used to make it so that there is no the
52     operational overhead for passing around proxy arguments to model
53     type application.
54
55   * New `Data.Proxy` module providing a concrete, poly-kinded proxy type.
56
57   * New `Data.Coerce` module which exports the new `Coercible` class
58     together with the `coerce` primitive which provide safe coercion
59     (wrt role checking) between types with same representation.
60
61   * `Control.Concurrent.MVar` has a new implementation of `readMVar`,
62     which fixes a long-standing bug where `readMVar` is only atomic if
63     there are no other threads running `putMVar`.  `readMVar` now is
64     atomic, and is guaranteed to return the value from the first
65     `putMVar`.  There is also a new `tryReadMVar` which is a
66     non-blocking version.
67
68   * New `Control.Concurrent.MVar.withMVarMasked` which executes
69     `IO` action with asynchronous exceptions masked in the same style
70     as the existing `modifyMVarMasked` and `modifyMVarMasked_`.
71
72   * New `threadWait{Read,Write}STM :: Fd -> IO (STM (), IO ())`
73     functions added to `Control.Concurrent` for waiting on FD
74     readiness with STM actions.
75
76   * Expose `Data.Fixed.Fixed`'s constructor.
77
78   * There are now byte endian-swapping primitives
79     `byteSwap{16,32,64}` available in `Data.Word`, which use
80     optimized machine instructions when available.
81
82   * `Data.Bool` now exports `bool :: a -> a -> Bool -> a`, analogously
83     to `maybe` and `either` in their respective modules.
84
85   * `Data.Either` now exports `isLeft, isRight :: Either a b -> Bool`.
86
87   * `Debug.Trace` now exports `traceId`, `traceShowId`, `traceM`,
88     and `traceShowM`.
89
90   * `Data.Functor` now exports `($>)` and `void`.
91
92   * Rewrote portions of `Text.Printf`, and made changes to `Numeric`
93     (added `Numeric.showFFloatAlt` and `Numeric.showGFloatAlt`) and
94     `GHC.Float` (added `formatRealFloatAlt`) to support it.  The
95     rewritten version is extensible to user types, adds a "generic"
96     format specifier "`%v`", extends the `printf` spec to support much
97     of C's `printf(3)` functionality, and fixes the spurious warnings
98     about using `Text.Printf.printf` at `(IO a)` while ignoring the
99     return value.  These changes were contributed by Bart Massey.
100
101   * The minimal complete definitions for all type-classes with cyclic
102     default implementations have been explicitly annotated with the
103     new `{-# MINIMAL #-}` pragma.
104
105   * `Control.Applicative.WrappedMonad`, which can be used to convert a
106     `Monad` to an `Applicative`, has now a
107     `Monad m => Monad (WrappedMonad m)` instance.
108
109   * There is now a `Generic` and a `Generic1` instance for `WrappedMonad`
110     and `WrappedArrow`.
111
112   * Handle `ExitFailure (-sig)` on Unix by killing process with signal `sig`.
113
114   * New module `Data.Type.Bool` providing operations on type-level booleans.
115
116   * Expose `System.Mem.performMinorGC` for triggering minor GCs.
117
118   * New `System.Environment.{set,unset}Env` for manipulating
119     environment variables.
120
121   * Add `Typeable` instance for `(->)` and `RealWorld`.
122
123   * Declare CPP header `<Typeable.h>` officially obsolete as GHC 7.8+
124     does not support hand-written `Typeable` instances anymore.
125
126   * Remove (unmaintained) Hugs98 and NHC98 specific code.
127
128   * Optimize `System.Timeout.timeout` for the threaded RTS.
129
130   * Remove deprecated functions `unsafeInterleaveST`, `unsafeIOToST`,
131     and `unsafeSTToIO` from `Control.Monad.ST`.
132
133   * Add a new superclass `SomeAsyncException` for all asynchronous exceptions
134     and makes the existing `AsyncException` and `Timeout` exception children
135     of `SomeAsyncException` in the hierarchy.
136
137   * Remove deprecated functions `blocked`, `unblock`, and `block` from
138     `Control.Exception`.
139
140   * Remove deprecated function `forkIOUnmasked` from `Control.Concurrent`.
141
142   * Remove deprecated function `unsafePerformIO` export from `Foreign`
143     (still available via `System.IO.Unsafe.unsafePerformIO`).
144
145   * Various fixes and other improvements (see Git history for full details).