Skip to content

Commit f047a5a

Browse files
authoredJan 23, 2025
Update Rust crate twox-hash to v2 (#1547)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [twox-hash](https://redirect.github.com/shepmaster/twox-hash) | workspace.dependencies | major | `1.6.3` -> `2.1.0` | --- ### Release Notes <details> <summary>shepmaster/twox-hash (twox-hash)</summary> ### [`v2.1.0`](https://redirect.github.com/shepmaster/twox-hash/blob/HEAD/CHANGELOG.md#210---2024-12-09) [Compare Source](https://redirect.github.com/shepmaster/twox-hash/compare/v2.0.1...v2.1.0) [2.1.0]: https://redirect.github.com/shepmaster/twox-hash/tree/v2.1.0 ##### Added - The XXH3 128-bit algorithm is implemented via `XxHash3_128` and the `xxhash3_128` module. ### [`v2.0.1`](https://redirect.github.com/shepmaster/twox-hash/blob/HEAD/CHANGELOG.md#201---2024-11-04) [Compare Source](https://redirect.github.com/shepmaster/twox-hash/compare/v2.0.0...v2.0.1) [2.0.1]: https://redirect.github.com/shepmaster/twox-hash/tree/v2.0.1 ##### Fixed - Removed a panic that could occur when using `XxHash3_64` to hash 1 to 3 bytes of data in debug mode. Release mode and different lengths of data are unaffected. ### [`v2.0.0`](https://redirect.github.com/shepmaster/twox-hash/blob/HEAD/CHANGELOG.md#200---2024-10-18) [Compare Source](https://redirect.github.com/shepmaster/twox-hash/compare/v1.6.3...v2.0.0) [2.0.0]: https://redirect.github.com/shepmaster/twox-hash/tree/v2.0.0 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: ```rust // 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 `xxhash32::RandomState` and \`\`xxhash64::RandomState\` respectively. - `Xxh3Hash64` and `xx3::Hash64` have been renamed to `XxHash3_64` and `xxhash3_64::Hasher` respectively. - The free functions `xxh3::hash64`, `xxh3::hash64_with_seed`, and `xxh3::hash64_with_secret` are now associated functions of `xxhash3_64::Hasher`: `oneshot`, `oneshot_with_seed` and `oneshot_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**. - `XxHash32` and `XxHash64` no longer implement `Copy`. This prevents accidentally mutating a duplicate instance of the state instead of the original state. `Clone` is 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. [digest]: https://docs.rs/digest/latest/digest/ </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 8pm,before 6am" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles. 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxidecomputer/crucible). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMzUuMiIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent dac94d2 commit f047a5a

File tree

2 files changed

+3
-5
lines changed

2 files changed

+3
-5
lines changed
 

‎Cargo.lock

+2-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ toml = "0.8"
109109
tracing = "0.1"
110110
tracing-opentelemetry = "0.22.0"
111111
tracing-subscriber = "0.3.18"
112-
twox-hash = "1.6.3"
112+
twox-hash = "2.1.0"
113113
usdt = "0.5.0"
114114
uuid = { version = "1", features = [ "serde", "v4" ] }
115115

0 commit comments

Comments
 (0)