Add missing changelog info
[packages/containers.git] / changelog.md
1 # Changelog for [`containers` package](http://github.com/haskell/containers)
2
3 ## 0.5.8.1
4
5   * Add `Empty`, `:<|`, and `:|>` pattern synonyms for `Data.Sequence`.
6
7   * Add `intersperse` and `traverseWithIndex` for `Data.Sequence`.
8
9   * Slightly optimize `replicateA` and `traverse` for `Data.Sequence`.
10
11   * Derive `Generic` and `Generic1` for `Data.Tree`.
12
13 ## 0.5.7.1  *Dec 2015*
14
15   * Planned to bundle with GHC 8.0.1.
16
17   * Add `IsString` instance to `Data.Sequence`.
18
19   * Define `Semigroup` instances for `Data.Map`, `Data.Set`, `Data.IntMap`,
20     `Data.IntSet` and `Data.Sequence`.
21
22 ## 0.5.6.2  *Dec 2014*
23
24   * Bundled with GHC 7.10.1.
25
26   * Add role annotations for `Data.Map` and `Data.Set`.
27
28   * Add `IsList` instances for `Data.Map`, `Data.Set`, `Data.IntMap` and
29     `Data.IntSet`.
30
31   * Several performance improvements for `Data.Sequence`.
32
33   * Add `Data.Sequence.fromFunction` and `Data.Sequence.fromArray`.
34
35 ## 0.5.4.0  *Jan 2014*
36
37   * Bundled with GHC 7.8.1.
38
39   * The `Data.Map.fromList` and `Data.Set.fromList` now use linear-time
40     algorithm if the input is sorted, without need to call `fromDistinctAscList`.
41
42   * Implement indexing operations (`lookupIndex`, `findIndex`, `elemAt`,
43     `deletaAt`) for `Data.Set` too.
44
45   * Add `Applicative` and `Alternative` instances for `Data.Sequence`.
46
47   * Add `foldMapWithKey` to `Data.Map` and `Data.IntMap`.
48
49   * Implement poly-kinded `Typeable`.
50
51   * Add `Functor` instance for `Data.Graph.SCC`.
52
53   * Add `Data.Map.splitRoot` and `Data.Set.splitRoot`.
54
55 ## 0.5.0.0  *May 2012*
56
57   * Bundled with GHC 7.6.1.
58
59   * Major improvements since last release:
60     * a clearer distinction between value-lazy and value-strict containers,
61     * performance improvements across the board,
62     * a big internal clean-up, and
63     * new functions for e.g. merging, updating, and searching containers.
64
65   * While the old `Data.Map` and
66     `Data.IntMap` modules will continue to exist for the foreseeable future, we've
67     abandoned the practice of having the strict and lazy versions of each
68     function distinguished by an apostrophe. The distinction is instead made at
69     the module level, by introducing four new modules:
70     * Data.Map.Strict
71     * Data.Map.Lazy
72     * Data.IntMap.Strict
73     * Data.IntMap.Lazy
74
75     This split has three benefits:
76     * It makes the choice between value-strict and value-lazy containers
77       more declarative; you pick once at import time, instead of having to
78       remember to use the strict or lazy versions of a function every time
79       you modify the container.
80     * It alleviates a common source of performance issues, by forcing the
81       user to think about the strictness properties upfront. For example,
82       using insertWith instead of insertWith' is a common source of
83       containers-related performance bugs.
84     * There are fewer functions per module, making it easier to get an
85       overview of each module.
86
87   * Note that the types used in the strict and lazy APIs are the same, so
88     you can still use the same container in a "mixed" manner, if needed.
89
90   * The `Data.IntSet` representation changed to store small sets using
91     bits in an `Word`. Larger sets are stored as a collection of such
92     dense small sets, connected together by a prefix trie.
93
94 ## 0.4.2.1  *Feb 2012*
95
96   * Bundled with GHC 7.4.1.
97
98   * `Data.Map now exports `foldr`, `foldr'`, `foldl` and `foldl'`.
99
100   * `Data.Set now exports `foldr`, `foldr'`, `foldl` and `foldl'`.
101
102   * `Data.IntMap now exports `foldr`, `foldr'`, `foldl`, `foldl'`, `foldrWithKey`, `foldrWithKey'`, `foldlWithKey` and `foldlWithKey'`.
103
104   * `Data.IntSet now exports `foldr`, `foldr'`, `foldl` and `foldl'`.
105
106   * `Data.Map.foldWithKey` is no longer deprecated, although it is expected to be deprecated again in the future.
107
108   * There are now `NFData` instance for `Data.Map.Map`, `Data.Set.Set`, `Data.IntMap.IntMap`, `Data.IntSet.IntSet` and `Data.Tree.Tree`.
109
110 ## 0.4.1.0  *Aug 2011*
111
112   * Bundled with GHC 7.2.1.
113
114   * `Data.Map` now exports new functions `foldrWithKey'` and `foldlWithKey'`, which are strict variants of `foldrWithKey` and `foldlWithKey` respectively.
115
116   * `Data.IntMap` now exports new functions `insertWith'` and `insertWithKey'`, which are strict variants of `insertWith` and `insertWithKey` respectively.
117
118 ## 0.4.0.0  *Nov 2010*
119
120   * Bundled with GHC 7.0.1.
121
122   * Strictness is now more consistent, with containers being strict in their elements even in singleton cases.
123
124   * There is a new function `insertLookupWithKey'` in `Data.Map`.
125
126   * The `foldWithKey` function in `Data.Map` has been deprecated in favour of `foldrWithKey`.
127
128 ## 0.3.0.0  *Dec 2009*
129
130   * Bundled with GHC 6.12.1.
131
132   * `mapAccumRWithKey` has been added to `Data.IntMap`.
133
134   * A `Traversable` instance has been added to `Data.IntMap.IntMap`.
135
136   * The types of `Data.IntMap.intersectionWith` and `Data.IntMap.intersectionWithKey` have been changed from
137     `intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a`
138     `intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a`
139     to
140     `intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c`
141     `intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c`
142
143   * The types of `Data.IntMap.findMin` and `Data.IntMap.findMax` have been changed from
144     `findMin :: IntMap a -> a`
145     `findMax :: IntMap a -> a`
146     to
147     `findMin :: IntMap a -> (Int,a)`
148     `findMax :: IntMap a -> (Int,a)`
149
150   * `Data.Map` now exports `mapAccumRWithKey`, `foldrWithKey`, `foldlWithKey` and `toDescList`.
151
152   * `Data.Sequence` now exports `replicate`, `replicateA`, `replicateM`, `iterateN`, `unfoldr`, `unfoldl`, `scanl`, `scanl1`, `scanr`, `scanr1`, `tails`, `inits`, `takeWhileL`, `takeWhileR`, `dropWhileL`, `dropWhileR`, `spanl`, `spanr`, `breakl`, `breakr`, `partition`, `filter`, `sort`, `sortBy`, `unstableSort`, `unstableSortBy`, `elemIndexL`, `elemIndicesL`, `elemIndexR`, `elemIndicesR`, `findIndexL`, `findIndicesL`, `findIndexR`, `findIndicesR`, `foldlWithIndex`, `foldrWithIndex`, `mapWithIndex`, `zip`, `zipWith`, `zip3`, `zipWith3`, `zip4` and `zipWith4`.
153
154 ## 0.2.0.0  *Nov 2008*
155
156   * Bundled with GHC 6.10.1.
157
158   * Various result type now use `Maybe` rather than allowing any `Monad`.
159
160 ## 0.1.0.0  *Nov 2007*
161
162   * Bundled with GHC 6.8.1.
163
164   * Initial split off from GHC base.