## [0.2.19.1] – April 2022 * [Fix bug in `intersection[With[Key]]`](https://github.com/haskell-unordered-containers/unordered-containers/pull/427) * [Improve docs of bit twiddling functions](https://github.com/haskell-unordered-containers/unordered-containers/pull/396) [0.2.19.1]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.19.0...v0.2.19.1 ## [0.2.19.0] – April 2022 * [Make intersections much faster](https://github.com/haskell-unordered-containers/unordered-containers/pull/406) * [Fix undefined behaviour on 32-bit platforms](https://github.com/haskell-unordered-containers/unordered-containers/pull/413) * Speed up some array-appending operations: [#407](https://github.com/haskell-unordered-containers/unordered-containers/pull/407), [#409](https://github.com/haskell-unordered-containers/unordered-containers/pull/409) * [Use MathJax format for complexity annotations](https://github.com/haskell-unordered-containers/unordered-containers/pull/411) [0.2.19.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.18.0...v0.2.19.0 ## [0.2.18.0] * [Fix strictness properties of `Strict.mapMaybe[WithKey]`](https://github.com/haskell-unordered-containers/unordered-containers/pull/385) * [Fix strictness properties of `Strict.alterFEager`](https://github.com/haskell-unordered-containers/unordered-containers/pull/384) * [Fix space leaks in `union[With[Key]]`](https://github.com/haskell-unordered-containers/unordered-containers/pull/380) * [Fix space leak in `Lazy.fromListWith`](https://github.com/haskell-unordered-containers/unordered-containers/pull/386) * [Speed up `difference*` and `intersection*` with `unsafeInsert`](https://github.com/haskell-unordered-containers/unordered-containers/pull/372) * [`unionArrayBy`: Find next 1-bits with `countTrailingZeros`](https://github.com/haskell-unordered-containers/unordered-containers/pull/395) - This speeds up `union*` for sparsely filled nodes, while penalizing `union` operations on densely filled nodes. * [Reduce reboxing in internal array operations](https://github.com/haskell-unordered-containers/unordered-containers/pull/377) * [Reduce code size of array operations in `union*`](https://github.com/haskell-unordered-containers/unordered-containers/pull/376) [0.2.18.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.17.0...v0.2.18.0 ## [0.2.17.0] * [Define `dataCast1` for `HashMap`](https://github.com/haskell-unordered-containers/unordered-containers/pull/345) * [Add `Lift` instances for Template Haskell](https://github.com/haskell-unordered-containers/unordered-containers/pull/343) * [Add definitions for `stimes`](https://github.com/haskell-unordered-containers/unordered-containers/pull/340) * [Expose internal constructors for `HashSet`, `Array` and `MArray`](https://github.com/haskell-unordered-containers/unordered-containers/pull/347) * [Tweak internal `Array.insertM` function](https://github.com/haskell-unordered-containers/unordered-containers/pull/359) * [Drop support for GHC 8.0](https://github.com/haskell-unordered-containers/unordered-containers/pull/354) * [Drop support for `hashable < 1.2.5`](https://github.com/haskell-unordered-containers/unordered-containers/pull/355) * Various cleanup and documentation improvements [0.2.17.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.16.0...v0.2.17.0 ## [0.2.16.0] * [Increase maximum branching factor from 16 to 32](https://github.com/haskell-unordered-containers/unordered-containers/pull/317) * [Tweak `union.goDifferentHash`](https://github.com/haskell-unordered-containers/unordered-containers/pull/277) * [Fix debug mode bounds check in `cloneM`](https://github.com/haskell-unordered-containers/unordered-containers/pull/331) * [Remove some old internal compatibility code](https://github.com/haskell-unordered-containers/unordered-containers/pull/334) [0.2.16.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.15.0...v0.2.16.0 ## [0.2.15.0] * [Add security advisory regarding hash collision attacks](https://github.com/haskell-unordered-containers/unordered-containers/pull/320) * [Add support for hashable 1.4](https://github.com/haskell-unordered-containers/unordered-containers/pull/324) * [Drop support for GHC < 8](https://github.com/haskell-unordered-containers/unordered-containers/pull/323) [0.2.15.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.14.0...v0.2.15.0 ## [0.2.14.0] * [Add `HashMap.mapKeys`.](https://github.com/haskell-unordered-containers/unordered-containers/pull/308) Thanks, Marco Perone! * [Add instances for `NFData1` and `NFData2`.](https://github.com/haskell-unordered-containers/unordered-containers/pull/314) Thanks, Isaac Elliott and Oleg Grenrus! * [Fix `@since`-annotation for `compose`.](https://github.com/haskell-unordered-containers/unordered-containers/pull/303) Thanks, @Mathnerd314! [0.2.14.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.13.0...v0.2.14.0 ## [0.2.13.0] * [Add `HashMap.compose`.](https://github.com/haskell-unordered-containers/unordered-containers/pull/299) Thanks Alexandre Esteves. [0.2.13.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.12.0...v0.2.13.0 ## [0.2.12.0] * Add `HashMap.isSubmapOf[By]` and `HashSet.isSubsetOf`. Thanks Sven Keidel. ([#282]) * Expose internal modules. ([#283]) * Documentation improvements in `Data.HashSet`, including a beginner-friendly introduction. Thanks Matt Renaud. ([#267]) * `HashMap.alterF`: Skip key deletion for absent keys. ([#288]) * Remove custom `unsafeShift{L,R}` definitions. ([#281]) * Various other documentation improvements. [0.2.12.0]: https://github.com/haskell-unordered-containers/unordered-containers/compare/v0.2.11.0...v0.2.12.0 [#267]: https://github.com/haskell-unordered-containers/unordered-containers/pull/267 [#281]: https://github.com/haskell-unordered-containers/unordered-containers/pull/281 [#282]: https://github.com/haskell-unordered-containers/unordered-containers/pull/282 [#283]: https://github.com/haskell-unordered-containers/unordered-containers/pull/283 [#288]: https://github.com/haskell-unordered-containers/unordered-containers/pull/288 ## 0.2.11.0 * Add `HashMap.findWithDefault` (soft-deprecates `HashMap.lookupDefault`). Thanks, Matt Renaud. * Add `HashMap.fromListWithKey`. Thanks, Josef Svenningsson. * Add more folding functions and use them in `Foldable` instances. Thanks, David Feuer. * Add `HashMap.!?`, a flipped version of `lookup`. Thanks, Matt Renaud. * Add a `Bifoldable` instance for `HashMap`. Thanks, Joseph Sible. * Add a `HasCallStack` constraint to `(!)`. Thanks, Roman Cheplyaka. ### Bug fixes * Fix a space leak affecting updates on keys with hash collisions. Thanks, Neil Mitchell. ([#254]) * Get rid of some silly thunks that could be left lying around. ([#232]). Thanks, David Feuer. ### Other changes * Speed up the `Hashable` instances for `HashMap` and `HashSet`. Thanks, Edward Amsden. * Remove a dependency cycle hack from the benchmark suite. Thanks, Andrew Martin. * Improve documentation. Thanks, Tristan McLeay, Li-yao Xia, Gareth Smith, Simon Jakobi, Sergey Vinokurov, and likely others. [#232]: https://github.com/haskell-unordered-containers/unordered-containers/issues/232 [#254]: https://github.com/haskell-unordered-containers/unordered-containers/issues/254 ## 0.2.10.0 * Add `HashMap.alterF`. * Add `HashMap.keysSet`. * Make `HashMap.Strict.traverseWithKey` force the results before installing them in the map. ## 0.2.9.0 * Add `Ord/Ord1/Ord2` instances. (Thanks, Oleg Grenrus) * Use `SmallArray#` instead of `Array#` for GHC versions 7.10 and above. (Thanks, Dmitry Ivanov) * Adjust for `Semigroup => Monoid` proposal implementation. (Thanks, Ryan Scott) ### Bug fixes * Fix a strictness bug in `fromListWith`. * Enable eager blackholing for pre-8.2 GHC versions to work around a runtime system bug. (Thanks, Ben Gamari) * Avoid sketchy reimplementation of `ST` when compiling with recent GHC. ### Other changes * Remove support for GHC versions before 7.8. (Thanks, Dmitry Ivanov) * Add internal documentaton. (Thanks, Johan Tibell) ## 0.2.8.0 * Add `Eq1/2`, `Show1/2`, `Read1` instances with `base-4.9` * `Eq (HashSet a)` doesn't require `Hashable a` anymore, only `Eq a`. * Add `Hashable1/2` with `hashable-1.2.6.0` * Add `differenceWith` function. ## 0.2.7.2 * Don't use -fregs-graphs * Fix benchmark compilation on stack. ## 0.2.7.1 * Fix linker error related to popcnt. * Haddock improvements. * Fix benchmark compilation when downloaded from Hackage. ## 0.2.7.0 * Support criterion 1.1 * Add unionWithKey for hash maps. ## 0.2.6.0 * Mark several modules as Trustworthy. * Add Hashable instances for HashMap and HashSet. * Add mapMaybe, mapMaybeWithKey, update, alter, and intersectionWithKey. * Add roles. * Add Hashable and Semigroup instances. ## 0.2.5.1 (2014-10-11) * Support base-4.8