Release Notes Guide
This guide documents the standards for writing release notes in RELEASES.md
.
Sections
Use the following sections in this order:
- Enhancements
- Breaking Changes
- Security
- Fixes
- Internal Improvements
- Documentation Updates
- Deprecations
Omit sections that have no items for a given release.
Enhancements
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:
- Start with "Added".
- Use backticks for code elements.
- Be specific about what was added, not how.
Breaking Changes
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:
- Start with "Removed", "Renamed", or "Changed".
- Explain migration path briefly.
Security
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:
- Include overflow/underflow fixes, memory safety improvements, FFI guards, data integrity fixes.
- Focus on user impact: what could have happened.
- Exclude routine dependency updates, minor hardening, or test-only fixes.
- Omit this section entirely if there are no security items for the release.
Fixes
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:
- Start with "Fixed".
Internal Improvements
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:
- Use "Added", "Implemented", "Improved", "Optimized", "Upgraded", "Refined", "Standardized".
- Include version numbers for dependency upgrades.
Documentation Updates
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
Deprecations
Features marked for removal.
Format:
- Deprecated `convert_quote_qty_to_base`; disable (`False`) to maintain consistent behaviour. Will be removed in future version
Guidelines:
- Explain migration path and provide alternatives.
Attribution
- Credit external contributors:
thanks @username
orthanks for reporting @username
. - Include issue/PR numbers for community contributions and complex features:
(#1234)
.
Style
- Use sentence case (capitalize first word only).
- Do not end with periods.
- Use backticks for code elements.
- Focus on what changed, not how.
Be specific:
❌ Improved Binance adapter
✅ Improved Binance fill handling when instrument not cached
Security classification
Include in Security if the change addresses:
- Memory safety (overflow, underflow, divide-by-zero that threatens stability).
- Undefined behavior or crashes that could corrupt state.
- Data integrity (NaN/Infinity propagation, race conditions leading to corruption).
- Input validation preventing injection or exploitation (SQL injection, command injection, path traversal).
- Build hardening (non-exec stack, FFI guards).
- Significant hardening that users should know about.
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.
Examples
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
Release workflow
After publishing a release:
- Update the published release section in
RELEASES.md
with the actual release date. - Add the horizontal separator
---
below the completed release. - Copy the template below and paste it at the top of
RELEASES.md
for the next version. - Update
<VERSION>
to the next version number. - Add items to sections as development progresses.
Release notes template
# NautilusTrader <VERSION> Beta
Released on TBD (UTC).
### Enhancements
### Breaking Changes
### Security
### Fixes
### Internal Improvements
### Documentation Updates
### Deprecations
---