Release Process

Changelog Fragments

We use towncrier to manage release notes. Each PR that affects users should include a news fragment in the docs/newsfragments/ directory:

# Create a fragment interactively
uvx towncrier create --content "Added DLPack tensor support to the Rust core." +mychange.rustcore.added.md

The pre-commit hook checks for fragments automatically.

Preview and Build Release Notes

pixi r towncrier-draft   # preview without writing
pixi r towncrier-build   # write to CHANGELOG.md and remove fragments

Publishing the Rust Crate

The rgpot-core crate is published to crates.io. Before publishing:

  1. Ensure all tests pass:

    pixi r rust-test-all
    cargo test --doc --manifest-path rgpot-core/Cargo.toml
    
  2. Verify packaging:

    cargo publish --dry-run --manifest-path rgpot-core/Cargo.toml
    
  3. Bump the version in rgpot-core/Cargo.toml.

  4. Regenerate the README (if changed):

    pixi r -e docs gen-readme
    
  5. Build release notes:

    pixi r towncrier-build
    
  6. Commit and tag:

    git commit -am "Release rgpot-core v0.x.y"
    git tag rgpot-core-v0.x.y
    
  7. Publish:

    cargo publish --manifest-path rgpot-core/Cargo.toml