|
1 | 1 | # Changelog for [`containers` package](http://github.com/haskell/containers)
|
2 | 2 |
|
3 |
| -## Next release |
| 3 | +## 0.8 *March 2025* |
4 | 4 |
|
5 | 5 | ### Breaking changes
|
6 | 6 |
|
7 | 7 | * `Data.IntMap.Lazy.split`, `Data.IntMap.Strict.split`,
|
8 | 8 | `Data.IntMap.Lazy.splitLookup`, `Data.IntMap.Strict.splitLookup` and
|
9 | 9 | `Data.IntSet.splitMember` are now strict in the key. Previously, the key was
|
10 | 10 | ignored for an empty map or set. (Soumik Sarkar)
|
| 11 | + ([#982](https://github.com/haskell/containers/pull/982), |
| 12 | + [#983](https://github.com/haskell/containers/pull/983)) |
11 | 13 |
|
12 |
| -* The following functions have been updated to match the strictness of their |
| 14 | +* These functions have been updated to match the strictness of their |
13 | 15 | `fromList` counterparts:
|
14 | 16 |
|
15 |
| - * `Data.Map.Strict.fromAscList` |
16 |
| - * `Data.Map.Strict.fromAscListWith` |
17 |
| - * `Data.Map.Strict.fromAscListWithKey` |
18 |
| - * `Data.Map.Strict.fromDescList` |
19 |
| - * `Data.Map.Strict.fromDescListWith` |
20 |
| - * `Data.Map.Strict.fromDescListWithKey` |
21 |
| - * `Data.IntMap.Strict.fromAscList` |
22 |
| - * `Data.IntMap.Strict.fromAscListWith` |
23 |
| - * `Data.IntMap.Strict.fromAscListWithKey` |
| 17 | + * `Data.Map.Strict`: `fromAscList`, `fromAscListWith`, `fromAscListWithKey` |
| 18 | + `fromDescList`, `fromDescListWith`, `fromDescListWithKey` |
| 19 | + * `Data.IntMap.Strict`: `fromAscList`, `fromAscListWith`, `fromAscListWithKey` |
24 | 20 |
|
25 | 21 | Previously they were lazier and did not force the first value in runs of at
|
26 | 22 | least 2 entries with equal keys. (Soumik Sarkar)
|
| 23 | + ([#1023](https://github.com/haskell/containers/pull/1023)) |
27 | 24 |
|
28 |
| -* Various deprecated functions, whose definitions currently cause type errors, |
29 |
| - have been removed. (Soumik Sarkar) |
| 25 | +* `Data.Set.fold` and `Data.IntSet.fold` are deprecated. One should instead use |
| 26 | + `Data.Set.foldr` and `Data.IntSet.foldr`. (Soumik Sarkar) |
| 27 | + ([#1049](https://github.com/haskell/containers/pull/1049)) |
| 28 | + |
| 29 | +* For `Data.IntMap.{Lazy,Strict}`, `updateMin`, `updateMax`, `updateMinWithKey`, |
| 30 | + `updateMaxWithKey` now return an empty map for an input empty map instead of |
| 31 | + calling `error`. This matches the behavior of `Data.Map`. (Kushagra Gupta) |
| 32 | + ([#1065](https://github.com/haskell/containers/pull/1065)) |
30 | 33 |
|
31 |
| -* `Data.Set.fold` and `Data.IntSet.fold` have long been documented as |
32 |
| - deprecated and are now marked as such. They will be removed in a future |
33 |
| - release. |
| 34 | +* `foldl'` and `foldr'` for `Seq` are now strict in the initial value. This |
| 35 | + matches the behavior of the default implementations and of other structures in |
| 36 | + the library. (Soumik Sarkar) |
| 37 | + ([#1077](https://github.com/haskell/containers/pull/1077)) |
| 38 | + |
| 39 | +* Some long deprecated functions, whose definitions currently cause type errors, |
| 40 | + have been removed. (Soumik Sarkar) |
| 41 | + ([#1046](https://github.com/haskell/containers/pull/1046)) |
34 | 42 |
|
35 | 43 | ### Bug fixes
|
36 | 44 |
|
37 |
| -* Make the package compile with MicroHs. (Lennart Augustsson) |
| 45 | +* Make the package compile with [MicroHs](https://github.com/augustss/MicroHs). |
| 46 | + (Lennart Augustsson) |
| 47 | + ([#1043](https://github.com/haskell/containers/pull/1043), |
| 48 | + [#1081](https://github.com/haskell/containers/pull/1081)) |
| 49 | + |
| 50 | +* Fix a strictness bug in `Data.Map.Strict.fromDistinctAscList` and |
| 51 | + `Data.Map.Strict.fromDistinctDescList` where all values were not forced to |
| 52 | + WHNF. This bug affects versions 0.6.8 and 0.7. (Neil Mayhew) |
| 53 | + ([#996](https://github.com/haskell/containers/pull/996)) |
| 54 | + |
| 55 | +* Fix a bug in `Data.IntMap`'s `isProperSubmapOfBy` where it could incorrectly |
| 56 | + return `False`. (Soumik Sarkar) |
| 57 | + ([#1008](https://github.com/haskell/containers/pull/1008)) |
| 58 | + |
| 59 | +* Make `Data.Map.Merge.{Lazy,Strict}.filterAMissing` sequence effects in the |
| 60 | + correct order. (j6carey) |
| 61 | + ([#1005](https://github.com/haskell/containers/pull/1005)) |
38 | 62 |
|
39 | 63 | * `Data.Map.Strict.mergeWithKey` now forces the result of the combining function
|
40 | 64 | to WHNF. (Soumik Sarkar)
|
| 65 | + ([#1024](https://github.com/haskell/containers/pull/1024)) |
41 | 66 |
|
42 | 67 | * Fix an issue where `Data.Map.mergeWithKey`, `Data.Map.Strict.mergeWithKey`,
|
43 | 68 | `Data.IntMap.mergeWithKey`, `Data.IntMap.Strict.mergeWithKey` could call the
|
44 | 69 | provided `only2` function with empty maps, contrary to documentation.
|
45 |
| - (Soumik Sarkar) |
| 70 | + (Soumik Sarkar) ([#1025](https://github.com/haskell/containers/pull/1025)) |
46 | 71 |
|
47 | 72 | ### Additions
|
48 | 73 |
|
| 74 | +* Add `Data.Graph.flattenSCC1`. (Andreas Abel) |
| 75 | + ([#987](https://github.com/haskell/containers/pull/987)) |
| 76 | + |
| 77 | +* Add `symmetricDifference` for `Set`, `Map`, `IntSet`, `IntMap`. |
| 78 | + (Soumik Sarkar) ([#1009](https://github.com/haskell/containers/pull/1009)) |
| 79 | + |
49 | 80 | * Add `lookupMin` and `lookupMax` for `Data.IntSet`. (Soumik Sarkar)
|
| 81 | + ([#976](https://github.com/haskell/containers/pull/976)) |
50 | 82 |
|
51 | 83 | * Add `Intersection` and `intersections` for `Data.Set` and `Data.IntSet`.
|
52 | 84 | (Reed Mullanix, Soumik Sarkar)
|
| 85 | + ([#756](https://github.com/haskell/containers/pull/756), |
| 86 | + [#1040](https://github.com/haskell/containers/pull/1040), |
| 87 | + [#1052](https://github.com/haskell/containers/pull/1052), |
| 88 | + [#1080](https://github.com/haskell/containers/pull/1080)) |
53 | 89 |
|
54 | 90 | * Add `foldMap` for `Data.IntSet`. (Soumik Sarkar)
|
| 91 | + ([#1048](https://github.com/haskell/containers/pull/1048)) |
| 92 | + |
| 93 | +* Add `filterKeys` for `Data.Map` and `Data.IntMap`. (flip111) |
| 94 | + ([#972](https://github.com/haskell/containers/pull/972)) |
| 95 | + |
| 96 | +* `NFData1`, `NFData2` instances for `SCC`, `IntMap`, `Map`, `Sequence`, `Set`, |
| 97 | + `Tree` and relevant internal dependencies (David Beacham) |
| 98 | + ([#992](https://github.com/haskell/containers/pull/992)) |
55 | 99 |
|
56 | 100 | * Add `leaves`, `edges`, `pathsToRoot`, `pathsFromRoot`, `PostOrder` to
|
57 | 101 | `Data.Tree`. (Soumik Sarkar)
|
| 102 | + ([#1109](https://github.com/haskell/containers/pull/1109)) |
58 | 103 |
|
59 | 104 | ### Performance improvements
|
60 | 105 |
|
| 106 | +* The internal representations of `IntMap` and `IntSet` have been changed |
| 107 | + to be a little more memory efficient. Consequently, many functions on |
| 108 | + `IntMap`s and `IntSet`s are a little faster now. (Soumik Sarkar) |
| 109 | + ([#995](https://github.com/haskell/containers/pull/995), |
| 110 | + [#998](https://github.com/haskell/containers/pull/998)) |
| 111 | + |
| 112 | +* Improved performance for `Data.Map`'s `minView`, `maxView`, `difference`. |
| 113 | + (Soumik Sarkar) ([#1001](https://github.com/haskell/containers/pull/1001)) |
| 114 | + |
61 | 115 | * For `Data.Graph.SCC`, `Foldable.toList` and `Foldable1.toNonEmpty` now
|
62 |
| - do not perform a copy. (Soumik Sarkar) |
| 116 | + do not perform an unnecessary copy. (Soumik Sarkar) |
| 117 | + ([#1057](https://github.com/haskell/containers/pull/1057)) |
63 | 118 |
|
64 | 119 | * Improved performance for `Data.Intset`'s `foldr`, `foldl'`, `foldl`, `foldr'`.
|
| 120 | + (Soumik Sarkar) ([#1079](https://github.com/haskell/containers/pull/1079)) |
65 | 121 |
|
66 | 122 | * Improved performance for `Data.Set` and `Data.Map`'s `fromAscList*` and
|
67 |
| - `fromDescList*` functions. |
| 123 | + `fromDescList*` functions. (Soumik Sarkar) |
| 124 | + ([#1083](https://github.com/haskell/containers/pull/1083)) |
68 | 125 |
|
69 | 126 | * Improved performance for `Data.Set`'s `fromList`, `map` and `Data.Map`'s
|
70 | 127 | `fromList`, `fromListWith`, `fromListWithKey`, `mapKeys`, `mapKeysWith`.
|
| 128 | + (Soumik Sarkar) ([#1042](https://github.com/haskell/containers/pull/1042)) |
71 | 129 |
|
72 | 130 | * Improved performance for many `Set` and `Map` modification operations,
|
73 | 131 | including `insert` and `delete`, by inlining part of the balancing
|
74 | 132 | routine. (Soumik Sarkar)
|
| 133 | + ([#1056](https://github.com/haskell/containers/pull/1056)) |
75 | 134 |
|
76 |
| -* Improved performance for `IntSet` and `IntMap`'s `Ord` instances. |
| 135 | +* Improved performance for `Eq` and `Ord` instances of `Set`, `Map`, `IntSet`, |
| 136 | + `IntMap`, `Seq`. (Soumik Sarkar) |
| 137 | + ([#1028](https://github.com/haskell/containers/pull/1028), |
| 138 | + [#1017](https://github.com/haskell/containers/pull/1017), |
| 139 | + [#1035](https://github.com/haskell/containers/pull/1035), |
| 140 | + [#1086](https://github.com/haskell/containers/pull/1086), |
| 141 | + [#1112](https://github.com/haskell/containers/pull/1112)) |
| 142 | + |
| 143 | +### Documentation |
| 144 | + |
| 145 | +* Add and improve documentation (Bodigrim, konsumlamm, Toni Dietze, alexfmpe, |
| 146 | + Soumik Sarkar, Jonathan Knowles, Xavier Góngora, Xia Li-yao, eyelash) |
| 147 | + ([#957](https://github.com/haskell/containers/pull/957), |
| 148 | + [#1006](https://github.com/haskell/containers/pull/1006), |
| 149 | + [#877](https://github.com/haskell/containers/pull/877), |
| 150 | + [#960](https://github.com/haskell/containers/pull/960), |
| 151 | + [#1033](https://github.com/haskell/containers/pull/1033), |
| 152 | + [#1041](https://github.com/haskell/containers/pull/1041), |
| 153 | + [#1039](https://github.com/haskell/containers/pull/1039), |
| 154 | + [#1050](https://github.com/haskell/containers/pull/1050), |
| 155 | + [#1088](https://github.com/haskell/containers/pull/1088), |
| 156 | + [#1087](https://github.com/haskell/containers/pull/1087), |
| 157 | + [#1098](https://github.com/haskell/containers/pull/1098), |
| 158 | + [#1106](https://github.com/haskell/containers/pull/1106), |
| 159 | + [#1104](https://github.com/haskell/containers/pull/1104), |
| 160 | + [#1105](https://github.com/haskell/containers/pull/1105), |
| 161 | + [#1111](https://github.com/haskell/containers/pull/1111), |
| 162 | + [#1110](https://github.com/haskell/containers/pull/1110), |
| 163 | + [#1114](https://github.com/haskell/containers/pull/1114), |
| 164 | + [#1115](https://github.com/haskell/containers/pull/1115)) |
77 | 165 |
|
78 | 166 | ### Miscellaneous/internal
|
79 | 167 |
|
80 | 168 | * Internal modules `Utils.Containers.Internal.BitUtil`,
|
81 | 169 | `Utils.Containers.Internal.BitQueue`, `Utils.Containers.Internal.StrictPair`
|
82 |
| - are no longer exposed. |
83 |
| - |
84 |
| -## Unreleased with `@since` annotation for 0.7.1: |
85 |
| - |
86 |
| -### Additions |
87 |
| - |
88 |
| -* Add `Data.Graph.flattenSCC1`. (Andreas Abel) |
89 |
| - |
90 |
| -* `NFData1`, `NFData2` instances for `SCC`, `IntMap`, `Map`, `Sequence`, `Set`, |
91 |
| - `Tree` and relevant internal dependencies (David Beacham) |
| 170 | + are no longer exposed. (Soumik Sarkar) |
| 171 | + ([#1101](https://github.com/haskell/containers/pull/1101)) |
| 172 | + |
| 173 | +* Test and CI maintenance. (Andreas Abel, Soumik Sarkar) |
| 174 | + ([#986](https://github.com/haskell/containers/pull/986), |
| 175 | + [#1015](https://github.com/haskell/containers/pull/1015), |
| 176 | + [#1030](https://github.com/haskell/containers/pull/1030), |
| 177 | + [#1055](https://github.com/haskell/containers/pull/1055), |
| 178 | + [#1067](https://github.com/haskell/containers/pull/1067)) |
| 179 | + |
| 180 | +* Internal cleanups and improvements. (Soumik Sarkar, alexfmpe) |
| 181 | + ([#1000](https://github.com/haskell/containers/pull/1000), |
| 182 | + [#959](https://github.com/haskell/containers/pull/959), |
| 183 | + [#1020](https://github.com/haskell/containers/pull/1020), |
| 184 | + [#1029](https://github.com/haskell/containers/pull/1029), |
| 185 | + [#1031](https://github.com/haskell/containers/pull/1031), |
| 186 | + [#1037](https://github.com/haskell/containers/pull/1037), |
| 187 | + [#1058](https://github.com/haskell/containers/pull/1058), |
| 188 | + [#1076](https://github.com/haskell/containers/pull/1076), |
| 189 | + [#1084](https://github.com/haskell/containers/pull/1084), |
| 190 | + [#1085](https://github.com/haskell/containers/pull/1085), |
| 191 | + [#1093](https://github.com/haskell/containers/pull/1093), |
| 192 | + [#1094](https://github.com/haskell/containers/pull/1094), |
| 193 | + [#1095](https://github.com/haskell/containers/pull/1095), |
| 194 | + [#1097](https://github.com/haskell/containers/pull/1097), |
| 195 | + [#1103](https://github.com/haskell/containers/pull/1103), |
| 196 | + [#1117](https://github.com/haskell/containers/pull/1117)) |
| 197 | + |
| 198 | +* Add new tests and benchmarks (Soumik Sarkar) |
| 199 | + ([#962](https://github.com/haskell/containers/pull/962), |
| 200 | + [#1021](https://github.com/haskell/containers/pull/1021), |
| 201 | + [#1063](https://github.com/haskell/containers/pull/1063), |
| 202 | + [#1068](https://github.com/haskell/containers/pull/1068), |
| 203 | + [#1071](https://github.com/haskell/containers/pull/1071), |
| 204 | + [#1075](https://github.com/haskell/containers/pull/1075), |
| 205 | + [#1082](https://github.com/haskell/containers/pull/1082)) |
| 206 | + |
| 207 | +* Fix the Read the Docs tutorial (Soumik Sarkar) |
| 208 | + ([#1091](https://github.com/haskell/containers/pull/1091), |
| 209 | + [#1099](https://github.com/haskell/containers/pull/1099)) |
92 | 210 |
|
93 | 211 | ## 0.7
|
94 | 212 |
|
|
0 commit comments