hashable-1.4.0.2: CHANGES.md
See also https://pvp.haskell.org/faq
## Version 1.4.0.2
* Restore older GHC support
* Support GHC-9.0.2
## Version 1.4.0.1
* `text-2.0` compatibility
## Version 1.4.0.0
* `Eq` is now a superclass of `Hashable`.
Also `Eq1` is a superclass of `Hashable1` and `Eq2` is a superclass of `Hashable2`
when exists.
* Remove `Hashable1 Fixed` instance
* Remove `Hashable1 Semi.Min/Max/...` instances as they don't have `Eq1` instance.
## Version 1.3.5.0
* Add `Solo` instance (base-4.15+, GHC-9+)
## Version 1.3.4.1
* Fix compilation on 32 bit platforms
* Fix `Tree` instance
## Version 1.3.4.0
* `Text` and `ByteString` hashes include length.
This fixes a variant of https://github.com/haskell-unordered-containers/hashable/issues/74
for texts and bytestrings.
https://github.com/haskell-unordered-containers/hashable/pull/223
* Use correct prime in `combine`.
This should improve the hash quality of compound structures on 64bit systems.
https://github.com/haskell-unordered-containers/hashable/pull/224
* Add instance for types in `containers` package
https://github.com/haskell-unordered-containers/hashable/pull/226
* Change `Int`, `Int64` and `Word64` `hashWithSalt` slightly.
https://github.com/haskell-unordered-containers/hashable/pull/227
## Version 1.3.3.0
* `Text` hashing uses 64-bit FNV prime
* Don't truncate Text hashvalues on 64bit Windows:
https://github.com/haskell-unordered-containers/hashable/pull/211
## Version 1.3.2.0
* Add `Hashable (Fixed a)` for `base <4.7` versions.
* Add documentation:
- `hashable` is not a stable hash
- `hashWithSalt` may return negative values
- there is `time-compat` with `Hashable` instances for `time` types.
* Add `random-initial-seed` flag causing the initial seed
to be randomized on each start of an executable using `hashable`.
## Version 1.3.1.0
* Add `Hashable1` instances to `semigroups` types.
* Use `ghc-bignum` with GHC-9.0
* Use FNV-1 constants.
* Make `hashable-examples` a test-suite
## Version 1.3.0.0
* Semantic change of `Hashable Arg` instance to *not* hash the second
argument of `Arg` in order to be consistent with `Eq Arg` (#171)
* Semantic change of `Hashable Float` and `Hashable Double` instances
to hash `-0.0` and `0.0` to the same value (#173)
* Add `Hashable` instance for `Fingerprint` (#156)
* Add new `Data.Hashable.Generic` module providing the default
implementations `genericHashWithSalt` and `genericLiftHashWithSalt`
together with other Generics support helpers (#148, #178)
* Bump minimum version requirement of `base` to `base-4.5` (i.e. GHC >= 7.4)
----
## Version 1.2.7.0
* Add `Hashable` and `Hashable1` instances for `Complex`
* Fix undefined behavior in `hashable_fn_hash()` implementation
due to signed integer overflow (#152)
* Mark `Data.Hashable.Lifted` as `Trustworthy` (re SafeHaskell)
* Support GHC 8.4
## Version 1.2.6.1
* Use typeRepFingerprint from Type.Reflection.Unsafe
* Bump minimum version of base to 4.4.
## Version 1.2.6.0
* Add support for type-indexed `Typeable`.
* Rework the `Generic` hashable for sums.
## Version 1.2.5.0
* Add `Hashable1` and `Hashable2`
* Add instances for: `Eq1`, `Ord1`, `Show1`, `Ptr`, `FunPtr`, `IntPtr`, `WordPtr`
* Add `Hashed` type for caching the `hash` function result.
## Version 1.2.4.0
* Add instances for: Unique, Version, Fixed, NonEmpty, Min, Max, Arg,
First, Last, WrappedMonoid, Option
* Support GHC 8.0
## Version 1.2.3.3
* Support integer-simple.
## Version 1.2.3.2
* Add support for GHC 7.10 typeRepFingerprint
## Version 1.2.3.1
* Added support for random 1.1.*.
## Version 1.2.3.0
* Silence integer literal overflow warning
* Add support for GHC 7.10 `integer-gmp2` & `Natural`
* Add instance for Data.Void
* Make the SSE .cabal flags manual
* Add an upper bound on bytestring
## Version 1.2.2.0
* Add instances for `Data.ByteString.Short`
* Use a 32-bit default salt on 32-bit archs.
## Version 1.2.1.0
* Revert instances to their 1.1 implementations to regain the
performance we had then.
* Remove use of random salt altogether. Without using SipHash the
benefit is unclear (i.e. collision attacks still work) and the
complexity is no longer worth it.
* Documentation improvements.
## Version 1.2.0.10
* Fix for GHC 7.0.
## Version 1.2.0.9
* Stop using SipHash. The current implementation still has segfault
causing bugs that we won't be able to fix soon.
* Stop using Wang hash. It degrades performance of fixed-size integer
hashing too much.
## Version 1.2.0.8
* Fix linking issue when SSE was disabled.
* Hash small signed Integers correctly.
## Version 1.2.0.7
* Add flags to control usage of SSE.
## Version 1.2.0.6
* Fix another segfault caused by SSE2 code.
## Version 1.2.0.5
* More portability fixes.
* Force stack alignment to 16 bytes everywhere. Fixes a segfault.
* Fix bug where code relied on rewrite rules firing for correctness.
## Version 1.2.0.4
* Update docs to match code.
* Work around bug in GHCi runtime linker, which never call static
initializers.
## Version 1.2.0.3
* Make building of SSE 4.1 code conditional, as it doesn't work on all
platforms.
* Use a fixed salt, but allow random salting. Random salting by
default broke people's code.
## Version 1.2.0.2
* Work around ghci linker bug on Windows.
## Version 1.2.0.1
* Fix performance bug in SSE implementation of SipHash.
* Fix segfault due to incorrect stack alignment on Windows.
## Version 1.2.0.0
* Switch string hashing from FNV-1 to SipHash, in an effort to
prevent collision attacks.
* Switch fixed-size integer hashing to Wang hash.
* The default salt now switched on every program run, in an effort to
prevent collision attacks.
* Move hash method out of Hashable type class.
* Add support for generic instance deriving.
* Add instance for Ordering.
----
## Version 1.1.2.5
* Bug fix for bytestring < 0.10.0.
## Version 1.1.2.4
* Switch string hashing from Bernstein to FNV-1
* Faster instance for Integer.
* Update dependency on base, ghc-prim
* Now works with GHC 7.6.
## Version 1.1.2.3
* Add instance for TypeRep.
* Update dependency on test-framework.
## Version 1.1.2.2
* Bug fix for GHC 7.4
## Version 1.1.2.1
* Update dependency on test-framework.
* Improve documentation of combine.
## Version 1.1.2.0
* Fix hash collision issues for lists and tuples when using a
user-specified salt.
* Add instances for `Integer`, `Ratio`, `Float`, `Double`, and `StableName`.
* Improved instances for tuples and lists.
## Version 1.1.1.0
* Add `hashWithSalt`, which allows the user to create different hash
values for the same input by providing different seeds. This is
useful for application like Cuckoo hashing which need a family of
hash functions.
* Fix a bug in the `Hashable` instance for `Int64`/`Word64` on 32-bit
platforms.
* Improved resilience to leading zero in the input being hashed.
## Version 1.1.0.0
* Add instance for: strict and lazy Texts, ThreadId
* Add hashPtrWithSalt and hashByteArrayWithSalt.
* Faster ByteArray# hashing.
* Fix a signedness bug that affected ByteString.
* Fix ByteString hashing to work correctly on both 32 and 64-bit
platforms.
## Version 1.0.1.1
* Fix bug in Hashable instance for lazy ByteStrings where differences
in the internal structure of the ByteString could cause different
hash values for ByteStrings that are equal according to ==.
## Version 1.0.1.0
* Add two helpers for creating Hashable instances: hashPtr and
hashByteArray.
----
## Version 1.0.0
* Separate Hashable class to its own package from hashmap 1.0.0.3.