refactor: launch hashcrew as a new crate - #14
Merged
Conversation
Hashcrew will debut as a new 0.1.0 crate rather than continue rache's release line. Rename the package, source tree, imports, documentation, CI, benchmarks, tests, and release tooling together so every checked surface agrees on the public crate identity. Keep the existing fast/rache repository URLs until that repository itself is renamed, avoiding links to a location that does not exist yet.
The integration-test package is driven entirely by its four tests/*.rs targets. Cargo discovers and runs those targets without a placeholder library, so keeping an empty src/lib.rs plus four target-disable flags adds configuration without changing coverage.
HISTORY.md did not record releases or decisions and had no incoming documentation links. Its five paragraphs repeated the API, streaming, kernel, and verification boundaries already maintained in ARCHITECTURE.md, creating two competing summaries without adding user-facing information.
SECRET_SIZE_MIN already exposes the algorithm's fixed lower bound. Xxh3SecretTooShort::minimum_len() returned that same constant without using an error value, giving callers two canonical-looking ways to obtain one fact. Retain actual_len() because it reports per-error input and is not recoverable from the module constant.
XXH3 secret derivation is already const and every other built-in streaming state supports const construction. Carry constness through the private StreamState constructors so Xxh3_64 and Xxh3_128 can be initialized consistently in static or const contexts. The complete change compiles on the declared Rust 1.85 MSRV.
tisonkun
marked this pull request as ready for review
September 2, 2026 11:04
The GitHub repository now lives at fast/hashcrew, so the crate metadata, workflow badge, and semantic-status link should use the canonical location instead of relying on GitHub's fast/rache redirect.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rachetohashcrew, with a fresh0.1.0version and first-release changelog.fast/hashcrewrepository.HISTORY.mdsummary after verifying that Cargo still discovers every test target andARCHITECTURE.mdremains the single design reference.Xxh3SecretTooShort::minimum_len()because it duplicated the canonicalSECRET_SIZE_MINconstant, while retaining instance-specificactual_len().Xxh3_64andXxh3_128construction const, matching the other streaming states and compiling on Rust 1.85.Design Notes
The ablation pass kept only changes with a demonstrated net benefit. An experiment to make the public XXH3 backend observer private was discarded before commit: target-specific dead-code handling or a more complex dispatch split cost more than the API reduction justified. Shared XXH3 streaming state, kernel tokens, Murmur 128-bit buffering, state metadata accessors, builders, and
std::io::Writeadapters remain because each removes real duplication or serves a distinct caller boundary. No runtime hashing implementation was changed.Validation
cargo x checkcargo x lintcargo x testRUSTUP_TOOLCHAIN=1.85.0 cargo x testcargo x bench --no-runcargo bench --package benchmarks --bench throughput -- xxh3_64::hashcrew --min-time 0.01 --max-time 0.02RUSTFLAGS='-C target-feature=-neon' cargo +nightly miri test --package hashcrew --lib --no-default-features --release(scalar path; local Miri does not support the AArch64 kernel's inline assembly barrier)cargo package --package hashcrew --locked