Skip to content

refactor: launch hashcrew as a new crate - #14

Merged
tisonkun merged 6 commits into
mainfrom
codex/rename-hashcrew-and-simplify
Sep 2, 2026
Merged

refactor: launch hashcrew as a new crate#14
tisonkun merged 6 commits into
mainfrom
codex/rename-hashcrew-and-simplify

Conversation

@tisonkun

@tisonkun tisonkun commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Rename the publishable package, source tree, imports, documentation, examples, benchmarks, tests, CI, and release tooling from rache to hashcrew, with a fresh 0.1.0 version and first-release changelog.
  • Point crate metadata, workflow badges, semantic status metadata, and the local development remote at the renamed fast/hashcrew repository.
  • Remove the empty integration-test library target and the unlinked HISTORY.md summary after verifying that Cargo still discovers every test target and ARCHITECTURE.md remains the single design reference.
  • Remove Xxh3SecretTooShort::minimum_len() because it duplicated the canonical SECRET_SIZE_MIN constant, while retaining instance-specific actual_len().
  • Make default and seeded Xxh3_64 and Xxh3_128 construction 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::Write adapters remain because each removes real duplication or serves a distinct caller boundary. No runtime hashing implementation was changed.

Validation

  • cargo x check
  • cargo x lint
  • cargo x test
  • RUSTUP_TOOLCHAIN=1.85.0 cargo x test
  • cargo x bench --no-run
  • cargo bench --package benchmarks --bench throughput -- xxh3_64::hashcrew --min-time 0.01 --max-time 0.02
  • RUSTFLAGS='-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

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
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.
@tisonkun
tisonkun merged commit 53fb743 into main Sep 2, 2026
10 checks passed
@tisonkun
tisonkun deleted the codex/rename-hashcrew-and-simplify branch September 2, 2026 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant