Release Process

This page documents the release process for nmrs and nmrs-gui.

Versioning

nmrs follows Semantic Versioning:

  • Major (X.0.0) — breaking API changes
  • Minor (0.X.0) — new features, backward-compatible
  • Patch (0.0.X) — bug fixes, backward-compatible

The library (nmrs) and GUI (nmrs-gui) are versioned independently.

Current Versions

CrateVersion
nmrs2.2.0
nmrs-gui1.1.0

Changelogs

Each crate maintains its own changelog:

Release Checklist

  1. Update version in Cargo.toml
  2. Update the changelog
  3. Run cargo test
  4. Run cargo clippy
  5. Run cargo fmt --check
  6. Build documentation (mdbook build in docs/)
  7. Create a git tag: git tag v2.2.0
  8. Push the tag: git push origin v2.2.0
  9. Publish to crates.io: cargo publish -p nmrs

Distribution Channels

ChannelPackage
crates.ionmrs library
AURnmrs (GUI binary)
NixNix flake

API Stability

  • All public types are #[non_exhaustive] — new fields/variants can be added in minor releases
  • Existing API signatures are preserved across minor releases
  • Deprecated items are documented and kept for at least one minor release

Next Steps