Only the hashcrew workspace package is published. Benchmarks, examples, and integration-test packages must remain development-only.
- Prepare a release PR that updates the crate version,
Cargo.lock, andCHANGELOG.md. - After the PR is merged, work from a clean, up-to-date checkout of
main. - Run the release-comparison inputs in the benchmark guide when performance-relevant code changed.
- Require every CI job to pass.
Select stable once for this release session. The commands below inherit it; cargo x lint selects nightly for Clippy, rustfmt, and rustdoc, and cargo +1.85.0 x test checks the MSRV:
export RUSTUP_TOOLCHAIN=stable
cargo x lint
cargo x check
cargo x build --locked
cargo x test
cargo +1.85.0 x test
cargo release --package hashcrewThe cargo release command is a dry run unless --execute is present. Inspect cargo package --package hashcrew --locked --list before publishing. The archive must contain LICENSE with the applicable third-party terms, README, manifest, lockfile, and library sources, without workspace benchmarks or integration-test fixtures. The crate's LICENSE is a symbolic link to the root license. Update the root file and check its entries against the source-file attributions when incorporating or updating third-party code.
Continue in the same shell with stable selected. Confirm the crate name, version, repository URL, and crates.io account before the irreversible step:
git switch main
git pull --ff-only origin main
cargo release --package hashcrew --executeOmitting a version argument releases the stable version already recorded in the manifest. This publishes the crate, creates the configured signed v<version> tag, and pushes the branch and tag. Do not create a second tag manually. After crates.io confirms the release, verify the crate page and docs.rs build.