Skip to content

Latest commit

 

History

History
71 lines (52 loc) · 1.79 KB

File metadata and controls

71 lines (52 loc) · 1.79 KB

Release Checklist

This checklist is for preparing and validating a crates.io release.

Prepare

  1. Confirm Cargo.toml has the intended version.
  2. Confirm CHANGELOG.md includes a release entry.
  3. Confirm docs/releases/vX.Y.Z.md is suitable to paste into a GitHub Release.
  4. Confirm README installation snippets reference the intended crate version.
  5. Confirm all public APIs added in the release are documented in README and rustdoc.

Validate

Run the CI-equivalent checks:

RUSTFLAGS="-Dwarnings" cargo check --all-targets
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets
cargo test --all-targets --all-features
cargo doc --no-deps
cargo package --allow-dirty

Run the publish dry run before publishing:

cargo publish --dry-run --allow-dirty

Use --allow-dirty only while validating an unreleased branch. For the actual publish, use a clean tagged checkout and omit --allow-dirty.

Nightly fuzz checks are intentionally not part of the default CI gate. See docs/fuzzing.md for the cargo-fuzz smoke run.

Inspect the generated package:

cargo package --list --allow-dirty

The package should include the source, tests, README, license, changelog, and release docs. It should not include local build outputs, .omx state, or target artifacts.

Publish

  1. Ensure the release PR has merged.

  2. Pull the latest main.

  3. Verify the worktree is clean.

  4. Run the validation commands again without --allow-dirty where possible.

  5. Publish:

    cargo publish
  6. Create and push the release tag:

    git tag vX.Y.Z
    git push origin vX.Y.Z
  7. Create the GitHub Release using docs/releases/vX.Y.Z.md.

  8. Confirm crates.io and docs.rs show the new version.