This is a checklist for steps to make before/after making a rustls release.
- Attend to the README.md: this appears on crates.io for the release, and can't be edited after
the fact.
- Ensure the version has a good set of release notes. Move old release notes to OLDCHANGES.md if this is getting excessively long.
- Write the version and date of the release.
- Run
cargo update
followed bycargo outdated
, to check if we have any dependency updates which are not already automatically taken by their semver specs.- If we do, take them if possible with separate commits (but there should've been dependabot PRs submitted for these already.)
- Now run
cargo test --all-features
to ensure our tests continue to pass with the updated dependencies. - Update
rustls/Cargo.toml
to set the correct version. - Make a commit with the above changes, something like 'Prepare $VERSION'. This should not contain functional changes: just versions numbers, and markdown changes.
- Do a dry run: in
rustls/
checkcargo publish --dry-run
- Push the above commit. Wait for CI to confirm it as green.
- Any red should naturally block the release.
- If rustc nightly is broken, this may be acceptable if the reason is understood
and does not point to a defect in rustls. eg, at the time of writing in releasing 0.20:
cargo fuzz
is broken: rust-fuzz/cargo-fuzz#276- oss fuzz is broken: google/oss-fuzz#6268 (Both of these share the same root cause of LLVM13 breaking changes; which are unfortunately common when rustc nightly takes a new LLVM.)
- Tag the released version:
git tag -m '0.20.0' v/0.20.0
- Push the tag:
git push --tags
- Do the release:
cargo publish
when sat inrustls/
.
- Update dependent crates (eg, hyper-rustls, rustls-native-certs, etc.)