Skip to content

Commit 14fb244

Browse files
committed
Prepare release
1 parent 27c06ba commit 14fb244

1 file changed

Lines changed: 39 additions & 40 deletions

File tree

RELEASES.md

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,40 @@
11
# NautilusTrader 1.229.0 Beta
22

3-
Released on TBD (UTC).
3+
Released on 25th June 2026 (UTC).
44

5-
This release includes many breaking changes across the user-facing Rust v2 APIs.
5+
This release includes many breaking changes across the user-facing Python and Rust v2 APIs.
66

77
### Enhancements
8-
- Added cache order index crash-recovery restore for Redis and Postgres adapters (Rust)
98
- Added `Cache::try_currency` with `CurrencyLookupError` for typed missing-currency lookups (Rust)
109
- Added `Cache::try_instrument` with `InstrumentLookupError` for typed missing-instrument lookups (Rust)
1110
- Added `Cache::try_order` with `OrderLookupError` for typed missing-order lookups (Rust)
12-
- Added external publish forwarding for Rust message bus publishers
11+
- Added negative price support for `Commodity` instruments in risk checks (#2330), thanks for reporting @fabz1
12+
- Added cache order index crash-recovery restore for Redis and Postgres adapters (Rust)
1313
- Added capability-aware `analyze-pool(s)`/`sync-dex` validation that fails before sync for unsupported DEXes
14-
- Added capability-aware blockchain CLI help listing the discoverable and snapshot-capable DEXes per chain, derived from the registered parsers
15-
- Added Postgres cache position event-log persistence and restart recovery (Rust)
1614
- Added `ProbabilityPriceFeeModel` and configurable sandbox fee models (#4262), thanks @graceyangfan
17-
- Added PyO3 cache purge APIs (#4249), thanks @graceyangfan
18-
- Added PyO3 instrument `tick_scheme` fields with Arrow persistence
19-
- Added Redis cache adapter order, position, and order-index write persistence (Rust)
20-
- Added `RedisCacheConfig`, `PostgresCacheConfig`, and `RedisMessageBusConfig` for Rust factories
2115
- Added SEC1 EC private key support to socket TLS configuration (Rust)
22-
- Added SBE and Cap'n Proto encodings for Rust-native message bus publishers
23-
- Added SBE and Cap'n Proto support for `OptionGreeks`
2416
- Added `order_position_index` Postgres table for the order-position index; run `make init-db` to migrate
25-
- Added negative price support for `Commodity` instruments in risk checks (#2330), thanks for reporting @fabz1
2617
- Added `add_native_exec_algorithm` and `ExecutionAlgorithmConfig` bindings to the Python v2 backtest engine
27-
- Added Python v2 `Strategy.order_factory` accessor and validating `OrderFactory` bindings
2818
- Added `Order::to_order_status_report` conversion in Rust
2919
- Added `with_msgbus_publisher` for Rust live-node and kernel builders
3020
- Added benchmark-relative portfolio stats (#4251), thanks @mahimn01
21+
- Added SBE and Cap'n Proto encodings for Rust-native message bus publishers
22+
- Added SBE and Cap'n Proto support for `OptionGreeks`
23+
- Added Postgres cache position event-log persistence and restart recovery (Rust)
24+
- Added Redis cache adapter order, position, and order-index write persistence (Rust)
25+
- Added `RedisCacheConfig`, `PostgresCacheConfig`, and `RedisMessageBusConfig` for Rust factories
26+
- Added Python v2 `Strategy.order_factory` accessor and validating `OrderFactory` bindings
27+
- Added PyO3 cache purge APIs (#4249), thanks @graceyangfan
28+
- Added PyO3 instrument `tick_scheme` fields with Arrow persistence
3129
- Added Binance Futures `bnfcr_currency` config for Credits Trading Mode
3230
- Added Binance Futures funding-rate history support in Rust
3331
- Added Binance Futures `MIN_NOTIONAL` parsing for `min_notional` (#4280), thanks @filipmacek
3432
- Added Binance Futures ticker data support in Rust
3533
- Added Binance order-list submission in Rust
36-
- Added Binance market-data WebSocket forward-compatibility test fixtures with CM-UM integration `st` and `ps` fields (Python and Rust)
34+
- Added Binance market-data WebSocket fixtures for CM-UM `st` and `ps` fields (Python and Rust)
3735
- Added `BitmexInstrumentState::Unknown` to tolerate unrecognized venue states without bootstrap failure
3836
- Added BitMEX legacy futures, spreads, and reference basket instrument parsing
37+
- Added Blockchain CLI help for discoverable and snapshot-capable DEXes per chain
3938
- Added Databento `venue_dataset_map` to override the default venue-to-dataset mappings
4039
- Added Hyperliquid builder attribution opt-out
4140
- Added Hyperliquid historical trade requests
@@ -54,30 +53,30 @@ This release includes many breaking changes across the user-facing Rust v2 APIs.
5453
- Changed backtest config builders to validate on `build()` and return `ConfigResult` (Rust)
5554
- Changed `BacktestDataConfig` to require an `instrument_id`, `instrument_ids`, or `bar_types` target
5655
- Changed example strategy and actor configs to use bon `builder()` instead of `new()`/`with_*` (Rust)
57-
- Changed plug-in loader to reject build mismatches by default; opt out with `set_allow_build_mismatch` (Rust)
58-
- Changed `CacheDatabaseAdapter::load_index_order_position` to return position IDs instead of positions (Rust)
59-
- Changed default message bus/cache encoding to JSON; set `encoding="msgpack"` for MessagePack
60-
- Changed `Currency::from_str` and `Currency::is_*` to return `CurrencyLookupError` instead of `anyhow::Error` (Rust)
61-
- Changed Parquet catalog write APIs to take borrowed slices instead of owned `Vec` (Rust) (#4296), thanks @sunlei
62-
- Changed `PoolProfiler.price_sqrt_ratio_x96` to return `int` instead of `str`
56+
- Changed Rust actor `self.clock()` to return `ClockApi`; call methods directly instead of borrowing
57+
- Changed Rust actor/strategy core access; use macros or native traits instead of `Deref`
6358
- Changed PyO3 `DataActor`/`Strategy` historical request `start`/`end` to require UTC datetimes
6459
- Changed Python `NautilusDataType` enum order to put `OptionGreeks` before `InstrumentStatus`
65-
- Changed Redis cache account/order/position storage to event logs; clear old typed state (Rust)
6660
- Changed cache database and message bus backing construction to use factory-owned config structs (Rust)
67-
- Changed Rust actor `self.clock()` to return `ClockApi`; call methods directly instead of borrowing
68-
- Changed Rust actor/strategy core access; use macros or native traits instead of `Deref`
69-
- Changed `SerializationEncoding` repr order to `Json=0`, `MsgPack=1`, `Capnp=2`, `Sbe=3`
70-
- Changed `InstrumentId` and `OptionSeriesId` string constructors to return typed invalid-value errors instead of `anyhow::Error` (Rust)
71-
- Changed `OrderAny::from_events` to return `OrderReplayError` instead of `anyhow::Error` (Rust)
72-
- Changed `OrderList::validate` to return `OrderListValidationError` instead of `anyhow::Error` (Rust)
61+
- Changed `CacheDatabaseAdapter::load_index_order_position` to return position IDs instead of positions (Rust)
62+
- Changed default message bus/cache encoding to JSON; set `encoding="msgpack"` for MessagePack
63+
- Changed Redis cache account/order/position storage to event logs; clear old typed state (Rust)
7364
- Changed Rust message bus subscriber-count and presence queries to return invalid-topic errors instead of panicking
65+
- Changed `SerializationEncoding` repr order to `Json=0`, `MsgPack=1`, `Capnp=2`, `Sbe=3`
7466
- Changed Cap'n Proto `DataAny` ordinals to put `OptionGreeks` before instrument schemas
7567
- Changed SBE `DataAny` variants and template IDs to put `OptionGreeks` before instrument schemas
68+
- Changed `Currency::from_str` and `Currency::is_*` to return `CurrencyLookupError` instead of `anyhow::Error` (Rust)
69+
- Changed `InstrumentId` and `OptionSeriesId` string constructors to return typed errors (Rust)
70+
- Changed `OrderAny::from_events` to return `OrderReplayError` instead of `anyhow::Error` (Rust)
71+
- Changed `OrderList::validate` to return `OrderListValidationError` instead of `anyhow::Error` (Rust)
7672
- Changed `SyntheticInstrument` fallible methods to return `SyntheticInstrumentError` instead of `anyhow::Error` (Rust)
7773
- Changed tick scheme constructors and parsing to return `TickSchemeError` instead of `anyhow::Error` (Rust)
74+
- Changed Parquet catalog write APIs to take borrowed slices instead of owned `Vec` (Rust) (#4296), thanks @sunlei
7875
- Changed WebSocket and socket `reconnect_timeout_ms` to bound only connection establishment (Rust)
79-
- Changed Binance Spot SBE WebSocket API schema version from 3:3 to 3:4, aligning with REST API and generated codecs (Rust)
80-
- Changed Bybit `BybitHttpClient::submit_order` to take a trailing native TP/SL params argument; the PyO3 binding defaults it to `None` (Rust)
76+
- Changed plug-in loader to reject build mismatches by default; opt out with `set_allow_build_mismatch` (Rust)
77+
- Changed Binance Spot SBE WebSocket API schema to version 3:4, matching generated codecs (Rust)
78+
- Changed Blockchain `PoolProfiler.price_sqrt_ratio_x96` to return `int` instead of `str`
79+
- Changed Bybit `BybitHttpClient::submit_order` to take trailing native TP/SL params; PyO3 defaults to `None`
8180
- Removed `CacheConfig.database` and `MessageBusConfig.backing`; pass adapters separately
8281
- Removed common `DatabaseConfig` and `MessageBusBackingConfig`; use Redis/Postgres configs
8382
- Renamed message bus database terminology to backing in Rust message bus APIs
@@ -144,26 +143,28 @@ This release includes many breaking changes across the user-facing Rust v2 APIs.
144143
- Fixed WebSocket and socket writer failure paths overwriting a concurrent disconnect with a reconnect (Rust)
145144
- Fixed WebSocket auth and connection-state waiters missing wakeups from unregistered `Notify` futures (Rust)
146145
- Fixed WebSocket idle timeout starvation under control-frame floods faster than the check interval (Rust)
146+
- Fixed Docker image build missing the `patches` directory needed by `pyo3-stub-gen`
147+
- Fixed nightly CI publish and Windows Harden-Runner checks
147148
- Fixed Architect AX to deny invalid submits locally and defer ambiguous command failures to reconciliation
148149
- Fixed Binance Futures empty algo order IDs
149150
- Fixed Binance Futures hedge reduce-only orders in Rust
150151
- Fixed Binance Futures leverage initialization aborting execution client connect (#4289), thanks @YeeTsai
151152
- Fixed Binance Futures node panic on `BNFCR` Credits Trading Mode balances
152153
- Fixed Binance Spot expired order handling
153154
- Fixed Binance Spot/Futures WebSocket connection pool race (#4244), thanks @filipmacek
154-
- Fixed Binance HTTP client not detecting non-JSON responses with success status codes, causing unhandled `DecodeError` during reconciliation on demo/testnet environments
155+
- Fixed Binance HTTP client handling of non-JSON success responses during demo/testnet reconciliation
155156
- Fixed BitMEX instrument bootstrap aborting on any row deserialize failure (#4283), thanks for reporting @seungpyoson
156157
- Fixed Blockchain snapshot bootstrap checks
157158
- Fixed Blockchain pool-event replay to require durable timestamps before checkpoints
158159
- Fixed Blockchain pool sync aborting on swaps with an unrepresentable spot price
159160
- Fixed Blockchain pool profiler logging self-correcting tick and liquidity mismatches at error severity (now warn)
160161
- Fixed Blockchain snapshot validation rejecting fee-protocol-only mismatches
161-
- Fixed Bybit demo native TP/SL and option params being denied instead of routed through the create-order endpoint (Rust and Python)
162+
- Fixed Bybit demo native TP/SL and option params routing through the create-order endpoint (Rust and Python)
162163
- Fixed Deribit chart bar volume for inverse perpetuals (#4245), thanks @filipmacek
163164
- Fixed dYdX Indexer WebSocket dropping subscriptions beyond the 32-per-channel cap (#4290), thanks @filipmacek
164165
- Fixed dYdX to share one REST rate-limit bucket across data and execution clients (#4265), thanks @filipmacek
165166
- Fixed dYdX to deny unsupported submits locally and emit rejections only for definitive CheckTx refusals
166-
- Fixed Hyperliquid bracket trigger-child statuses and atomic market fills orphaning orders at submission (#4160), thanks @sonnymai
167+
- Fixed Hyperliquid bracket-child statuses and atomic fills orphaning orders (#4160), thanks @sonnymai
167168
- Fixed Hyperliquid cancel-replace fill stranding on a dropped `ACCEPTED` (#4270), thanks for reporting @AlphaTraderK
168169
- Fixed Hyperliquid order status queries surfacing a stale cancel closing a live order mid-modify (Rust)
169170
- Fixed Interactive Brokers reconnect startup handling (#4210), thanks @faysou
@@ -193,8 +194,6 @@ This release includes many breaking changes across the user-facing Rust v2 APIs.
193194
- Added Cargo publish dry-run and nightly publish plan checks
194195
- Added a Docker check that Python references match the base image tag and `requires-python`
195196
- Added turmoil coverage for WebSocket heartbeats, server-initiated pings, and server close frames (Rust)
196-
- Fixed Docker image build missing the `patches` directory needed by `pyo3-stub-gen`
197-
- Fixed nightly CI publish and Windows Harden-Runner checks
198197
- Improved instrument validation to reject non-positive multiplier and lot size (Rust)
199198
- Improved `FixedTickScheme` validation to reject non-finite tick sizes (Rust)
200199
- Improved release verifier retries and manual-publish recovery checks
@@ -205,15 +204,17 @@ This release includes many breaking changes across the user-facing Rust v2 APIs.
205204
- Improved event-store marker writer and capture diagnostics with logged fail-stop errors (Rust)
206205
- Improved Postgres order-client index restore to pick the latest client ID per order (Rust)
207206
- Improved OTO contingency position ID recovery to persist re-indexed assignments (Rust)
207+
- Improved backtest expiration timers and `TestClock` advancement performance (#4307), thanks @faysou
208208
- Improved sandbox expired-instrument retention to prune after open positions settle (#4293), thanks @graceyangfan
209209
- Improved Polymarket data client module structure (#4260), thanks @graceyangfan
210210
- Improved Polymarket execution lookup retention for expired instruments (#4287), thanks @graceyangfan
211211
- Improved Polymarket execution module structure (#4271), thanks @graceyangfan
212212
- Improved Polymarket resolution module structure (#4269), thanks @graceyangfan
213-
- Standardized Polymarket adapter to emit order events for own orders and reports for external orders only (Rust)
214213
- Optimized `Cache` query filtering to scale with open orders and positions (#4242), thanks for reporting @magnified103
215-
- Standardized Betfair adapter to emit order events for own orders and reports for external orders only (Rust)
214+
- Refined common clock reference-counted clone calls (#4302), thanks @learnerLj
216215
- Standardized Rust `OrderDenied` reason codes
216+
- Standardized Betfair adapter to emit order events for own orders and reports for external orders only (Rust)
217+
- Standardized Polymarket adapter to emit order events for own orders and reports for external orders only (Rust)
217218
- Upgraded Interactive Brokers Rust adapter to `ibapi` 3.0.1 (#4209), thanks @faysou
218219
- Upgraded `pandas` to v3.0 and widened the supported range to `<4.0.0`
219220
- Upgraded `capnp` and `capnpc` crates to v0.26.0
@@ -222,16 +223,14 @@ This release includes many breaking changes across the user-facing Rust v2 APIs.
222223

223224
### Documentation Updates
224225
- Added developer-guide rate-limiting policy distinguishing data and execution paths
226+
- Added Binance COIN-M/USD-M architecture docs for stream, REST, rate-limit, and position-mode changes
225227
- Updated plugins concept guide for panic recovery, build pinning, and UTF-8 validation semantics
226228
- Updated event sourcing guide for capture dedup, recovery resilience, and snapshot-anchor verification
227229
- Updated message bus docs for publisher forwarding, payload encoding, and JSON defaults
228230
- Updated message bus docs for backing terminology and inbound subscriber shape
229231
- Updated cache and message bus docs for technology-owned config factories
230232
- Updated commodity instrument and execution concept guides for negative price support
231233
- Updated OKX integration docs with EEA endpoint override guidance (#4250), thanks for reporting @msnatm-code
232-
- Added Binance COIN-M / USD-M architecture integration section covering WebSocket stream changes, REST API changes, rate-limit pool sharing, and dualSidePosition unification
233-
234-
### Deprecations
235234

236235
---
237236

0 commit comments

Comments
 (0)