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