-
Notifications
You must be signed in to change notification settings - Fork 279
Release Process
So you want to make a new release of C2Rust? Well, here's (generally) how we do that.
First, you will need to be an owner of the relevant crates on crates.io. Any existing owner can invite you, please contact one of the owners listed on the crate's crates.io page.
Based on https://dev.to/sharkdp/my-release-checklist-for-rust-programs-1m33
-
Check and update dependencies
- Check cargo outdated (
cargo outdated -R
) - Run
cargo update
- Manually update to new revisions (if needed)
- Check cargo outdated (
-
Clean up code base
- Run cargo clippy and review
- Run cargo fmt
- Run tests
-
Bump version
- Update the project version in Cargo.tomls
- Run
cargo build
to update Cargo.lock - Search repo and update versions
-
Compile release notes
-
Update documentation
- Review and update command usage
- Update main README
- Review manual and update if needed
-
Install and test the master locally
-
cargo +stable install -f --path c2rust
- Test new features
- Run benchmarks?
-
-
Run package script check
./scripts/package.py --version VERSION check
-
Dry run publish
cargo publish --dry-run --allow-dirty
-
Commit, push, pass CI
-
Create release on github (with release notes)
-
Verify github deployment
-
Publish to crates.io
The package.py script can do this with publish, but it also tries to tag a release at the same time. It's currently easier to just
cargo publish
manually in the correct reverse dependency order until we fix up the script.