docs/developer_guide/releases.md
This guide covers the release process and the standards for writing release notes.
NautilusTrader uses a three-branch model:
develop: active development; publishes dev wheels to Cloudflare R2 on every push.nightly: pre-release testing; publishes alpha wheels and CLI binaries.master: stable releases; triggers the full release pipeline.Pushing to master automatically tags the version from pyproject.toml, creates a GitHub
release, publishes wheels and sdist to PyPI, builds Docker images, and triggers a docs rebuild.
The project maintains two version numbers:
| File | Scope | Example |
|---|---|---|
pyproject.toml | Python package | 1.223.0 |
Cargo.toml (workspace) | Rust crates | 0.55.0 |
These are bumped independently. The Python version drives the release tag (v1.223.0).
develop)RELEASES.md: review all items, remove empty sectionspyproject.toml and Cargo.toml workspacedevelopdevelop into nightly, verify nightly CI passesnightly into masterbuild workflow completes:
cargo-deny and cargo-vet passdocker workflow completes (images built and pushed)build-docs workflow completes (docs rebuild triggered)develop)RELEASES.md for the published version--- below the completed releaseRELEASES.md (see below)pyproject.toml version to the next release numberCargo.toml snippets
(docs/concepts/rust.md, docs/how_to/run_rust_backtest.md,
docs/how_to/run_rust_live_trading.md)This section documents the standards for writing release notes in RELEASES.md.
Use the following sections in this order:
Omit sections that have no items for a given release.
New features and user-visible improvements.
Format:
- Added `subscribe_order_fills(...)` and `unsubscribe_order_fills(...)` for `Actor`
- Added BitMEX conditional orders support
- Added support for `OrderBookDepth10` requests (#2955), thanks @faysou
Guidelines:
Changes that may break existing code.
Format:
- Removed `nautilus_trader.analysis.statistics` subpackage - must import from `nautilus_trader.analysis`
- Renamed `BinanceAccountType.USDT_FUTURE` to `USDT_FUTURES`
- Changed `start` parameter to required for `Actor` data request methods
Guidelines:
Security hardening and fixes that prevent crashes, undefined behavior, or data corruption. Includes significant hardening improvements elevated from Internal Improvements.
Format:
- Fixed non-executable stack for Cython extensions to support hardened Linux systems
- Fixed divide-by-zero and overflow bugs in model crate that could cause crashes
- Fixed core arithmetic operations to reject NaN/Infinity values and improve overflow handling
Guidelines:
Bug fixes that improve correctness but don't qualify as security issues.
Format:
- Fixed reduce-only order panic when quantity exceeds position
- Fixed Binance order status parsing for external orders (#3006), thanks for reporting @bmlquant
Guidelines:
Implementation details and infrastructure changes.
Format:
- Added ARM64 support to Docker builds
- Ported `PortfolioAnalyzer` to Rust
- Improved clock and timer thread safety
- Upgraded Rust (MSRV) to 1.90.0
- Upgraded `pyo3` crates to v0.26.0
Guidelines:
Changes to guides and examples.
Format:
- Added rate limit tables with links to official docs
- Improved dark and light themes for readability
- Fixed broken links
Features marked for removal.
Format:
- Deprecated `some_config_option`; disable (`False`) to maintain consistent behaviour. Will be removed in future version
Guidelines:
thanks @username or thanks for reporting @username.(#1234).Be specific:
❌ Improved Binance adapter
✅ Improved Binance fill handling when instrument not cached
Include in Security if the change addresses:
Otherwise use Fixes (for logic bugs and panics) or Internal Improvements (for minor hardening).
Note: Plain logic panics belong in Fixes unless they threaten system stability or data corruption.
Security (could cause crashes/corruption):
- Fixed divide-by-zero in margin calculations that could crash the engine
- Fixed non-executable stack for Cython extensions to support hardened systems
Fixes (incorrect but safe):
- Fixed Binance order status parsing for external orders
- Fixed position purge logic to prevent purging re-opened position
Enhancements (user-facing):
- Added BitMEX conditional orders support
Internal (implementation):
- Implemented BitMEX ping/pong handling
# NautilusTrader <VERSION> Beta
Released on TBD (UTC).
### Enhancements
### Breaking Changes
### Security
### Fixes
### Internal Improvements
### Documentation Updates
### Deprecations
---