Skip to content

Release Process

Stephen Crane edited this page May 13, 2022 · 7 revisions

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.

Release Checklist

Based on https://dev.to/sharkdp/my-release-checklist-for-rust-programs-1m33

  1. Check and update dependencies

    • Check cargo outdated
    • Run cargo update
    • Manually update to new revisions (if needed)
  2. Clean up code base

    • Run cargo clippy and review
    • Run cargo fmt
    • Run tests
  3. Bump version

    • Update the project version in Cargo.tomls
    • Run cargo build to update Cargo.lock
    • Search repo and update versions
  4. Compile release notes

  5. Update documentation

    • Review and update command usage
    • Update main README
    • Review manual and update if needed
  6. Install and test the master locally

    • cargo +stable install -f --path c2rust
    • Test new features
    • Run benchmarks?
  7. Run package script check

    ./scripts/package.py --version VERSION check
    
  8. Dry run publish

    cargo publish --dry-run --allow-dirty
    
  9. Commit, push, pass CI

  10. Create release on github (with release notes)

  11. Verify github deployment

  12. 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.

Clone this wiki locally