3.8 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.1.2 - 2025-09-03
Changed
- The documentation has been updated to account for
XxHash3_128.
2.1.1 - 2025-06-09
Changed
- The version range for the optional
randdependency is now 0.9.
2.1.0 - 2024-12-09
Added
- The XXH3 128-bit algorithm is implemented via
XxHash3_128and thexxhash3_128module.
2.0.1 - 2024-11-04
Fixed
- Removed a panic that could occur when using
XxHash3_64to hash 1 to 3 bytes of data in debug mode. Release mode and different lengths of data are unaffected.
2.0.0 - 2024-10-18
This release is a complete rewrite of the crate, including reorganization of the code. The XXH3 algorithm now matches the 0.8 release of the reference C xxHash implementation.
Added
-
XxHash32::oneshotandXxHash64::oneshotcan perform hashing with zero allocation and generally improved performance. If you have code that creates a hasher and hashes a slice of bytes exactly once, you are strongly encouraged to use the new functions. This might look like:// Before let mut hasher = XxHash64::new(); // or XxHash32, or with seeds some_bytes.hash(&mut hasher); let hash = hasher.finish(); // After let hash = XxHash64::oneshot(some_bytes); -
There is a feature flag for each hashing implementation. It is recommended that you opt-out of the crate's default features and only select the implementations you need to improve compile speed.
Changed
-
The crates minimum supported Rust version (MSRV) is now 1.81.
-
Functional and performance comparisons are made against the reference C xxHash library version 0.8.2, which includes a stable XXH3 algorithm.
-
Support for randomly-generated hasher instances is now behind the
randomfeature flag. It was previously combined with thestdfeature flag.
Removed
-
The deprecated type aliases
XxHashandRandomXxHashBuilderhave been removed. Replace them withXxHash64andxxhash64::RandomStaterespectively. -
RandomXxHashBuilder32andRandomXxHashBuilder64are no longer available at the top-level of the crate. Replace them withxxhash32::RandomStateand ``xxhash64::RandomState` respectively. -
Xxh3Hash64andxx3::Hash64have been renamed toXxHash3_64andxxhash3_64::Hasherrespectively. -
The free functions
xxh3::hash64,xxh3::hash64_with_seed, andxxh3::hash64_with_secretare now associated functions ofxxhash3_64::Hasher:oneshot,oneshot_with_seedandoneshot_with_secret. Note that the argument order has changed. -
Support for the digest crate has been removed. The digest crate is for cryptographic hash functions and xxHash is non-cryptographic.
-
XxHash32andXxHash64no longer implementCopy. This prevents accidentally mutating a duplicate instance of the state instead of the original state.Cloneis still implemented so you can make deliberate duplicates. -
The XXH3 128-bit variant is not yet re-written. Work is in progress for this.
-
We no longer provide support for randomly-generated instances of the XXH3 64-bit variant. The XXH3 algorithm takes both a seed and a secret as input and deciding what to randomize is non-trivial and can have negative impacts on performance.