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::oneshot and XxHash64::oneshot can 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
random feature flag. It was previously combined with the std
feature flag.
Removed
The deprecated type aliases XxHash and RandomXxHashBuilder have
been removed. Replace them with XxHash64 and
xxhash64::RandomState respectively.
RandomXxHashBuilder32 and RandomXxHashBuilder64 are no longer
available at the top-level of the crate. Replace them with
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps twox-hash from 1.6.3 to 2.0.0.
Changelog
Sourced from twox-hash's changelog.
... (truncated)
Commits
3d925b4
Release version 2.0.0872959e
Merge pull request #101 from shepmaster/v26d4ffd4
Remove vestigial comment979e71b
Update benchmarks for Rust 1.81 / xxHash 0.8.2a635afe
Tweaks to get benchmarking running again after renaming5ce7f4b
Introduce a changelog9bd1943
Don't create empty ranges in proptests4c577a3
Test for minimal dependency versions45f21b0
Document the feature flags28f0d83
Unify the README and crate documentationDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show