Skip to content

Commit e9bd4e4

Browse files
committed
release: v0.9.1 — fix CI (rustls-tls, Python pin, idempotent publish)
- Switch reqwest from native-tls to rustls-tls (fixes manylinux OpenSSL build) - Pin Windows wheels to Python 3.13 (PyO3 0.24.x max) - Make crates.io publish idempotent (|| true per crate) - Fix clippy warnings in optimize.rs
1 parent 4509318 commit e9bd4e4

File tree

10 files changed

+32
-17
lines changed

10 files changed

+32
-17
lines changed

.github/workflows/release.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ jobs:
124124
uses: dtolnay/rust-toolchain@stable
125125

126126
- name: Publish workspace
127-
run: cargo publish --workspace
127+
run: |
128+
cargo publish -p nanobook || true
129+
cargo publish -p nanobook-broker || true
130+
cargo publish -p nanobook-risk || true
131+
cargo publish -p nanobook-rebalancer || true
128132
env:
129133
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

.github/workflows/wheels.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ jobs:
4242
- uses: actions/checkout@v4
4343
- uses: actions/setup-python@v5
4444
with:
45-
python-version: '3.11'
45+
python-version: '3.13'
4646
architecture: ${{ matrix.target }}
4747
- name: Build wheels
4848
uses: PyO3/maturin-action@v1
4949
with:
5050
target: ${{ matrix.target }}
51-
args: --release --out dist --find-interpreter --manifest-path python/Cargo.toml
51+
args: --release --out dist --interpreter python3.13 --manifest-path python/Cargo.toml
5252
sccache: 'true'
5353
- name: Upload wheels
5454
uses: actions/upload-artifact@v4

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.9.1] - 2026-02-11
11+
12+
### Fixed
13+
14+
- **CI: Linux wheels** — switched `reqwest` from `native-tls` (OpenSSL) to `rustls-tls` (pure Rust); eliminates `openssl-sys` build failure in manylinux containers
15+
- **CI: Windows wheels** — pinned Python to 3.13 and replaced `--find-interpreter` with explicit `--interpreter python3.13`; PyO3 0.24.x does not support Python 3.14
16+
- **CI: crates.io publish** — made publish step idempotent (`|| true` per crate) so already-published versions don't fail the job
17+
- **Clippy** — fixed `needless_range_loop` and `excessive_precision` warnings in `src/optimize.rs`
18+
1019
## [0.9.0] - 2026-02-10
1120

1221
### Added
@@ -308,7 +317,8 @@ Initial release of nanobook - a deterministic limit order book and matching engi
308317
- Fixed-point price representation (avoids floating-point errors)
309318
- Deterministic via monotonic timestamps (not system clock)
310319

311-
[Unreleased]: https://github.com/ricardofrantz/nanobook/compare/v0.9.0...HEAD
320+
[Unreleased]: https://github.com/ricardofrantz/nanobook/compare/v0.9.1...HEAD
321+
[0.9.1]: https://github.com/ricardofrantz/nanobook/compare/v0.9.0...v0.9.1
312322
[0.9.0]: https://github.com/ricardofrantz/nanobook/compare/v0.8.0...v0.9.0
313323
[0.8.0]: https://github.com/ricardofrantz/nanobook/compare/v0.7.0...v0.8.0
314324
[0.7.0]: https://github.com/ricardofrantz/nanobook/compare/v0.6.0...v0.7.0

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[package]
66
name = "nanobook"
7-
version = "0.9.0"
7+
version = "0.9.1"
88
edition = "2024"
99
rust-version = "1.85"
1010
description = "Production-grade Rust execution infrastructure for automated trading: LOB engine, portfolio simulator, broker abstraction, risk engine"

broker/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nanobook-broker"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2024"
55
rust-version = "1.85"
66
description = "Broker trait and implementations (IBKR, Binance) for nanobook"
@@ -15,15 +15,15 @@ ibkr = ["dep:ibapi", "dep:log"]
1515
binance = ["dep:reqwest", "dep:hmac", "dep:sha2", "dep:hex", "dep:serde", "dep:serde_json", "dep:log", "dep:zeroize"]
1616

1717
[dependencies]
18-
nanobook = { version = "0.9.0", path = "..", features = ["serde"] }
18+
nanobook = { version = "0.9.1", path = "..", features = ["serde"] }
1919
thiserror = "2.0"
2020

2121
# IBKR dependencies (optional)
2222
ibapi = { version = "2.7", default-features = false, features = ["sync"], optional = true }
2323
log = { version = "0.4", optional = true }
2424

2525
# Binance dependencies (optional)
26-
reqwest = { version = "0.12", features = ["blocking", "json"], optional = true }
26+
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"], optional = true }
2727
hmac = { version = "0.12", optional = true }
2828
sha2 = { version = "0.10", optional = true }
2929
hex = { version = "0.4", optional = true }

python/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nanobook-python"
3-
version = "0.9.0"
3+
version = "0.9.1"
44
edition = "2024"
55
publish = false
66

python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "nanobook"
7-
version = "0.9.0"
7+
version = "0.9.1"
88
requires-python = ">=3.11"
99
description = "Deterministic limit order book, portfolio simulator, and matching engine"
1010
license = "MIT"

rebalancer/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nanobook-rebalancer"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2024"
55
rust-version = "1.85"
66
description = "Portfolio rebalancer bridging nanobook to Interactive Brokers"
@@ -18,8 +18,8 @@ name = "nanobook_rebalancer"
1818
path = "src/lib.rs"
1919

2020
[dependencies]
21-
nanobook = { version = "0.9.0", path = "..", features = ["portfolio", "serde"] }
22-
nanobook-broker = { version = "0.3.0", path = "../broker", features = ["ibkr"] }
21+
nanobook = { version = "0.9.1", path = "..", features = ["portfolio", "serde"] }
22+
nanobook-broker = { version = "0.3.1", path = "../broker", features = ["ibkr"] }
2323
thiserror = "2.0"
2424
serde = { version = "1", features = ["derive"] }
2525
serde_json = "1"

risk/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nanobook-risk"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2024"
55
rust-version = "1.85"
66
description = "Pre-trade risk engine for nanobook"
@@ -10,8 +10,8 @@ homepage = "https://github.com/ricardofrantz/nanobook"
1010
documentation = "https://docs.rs/nanobook-risk"
1111

1212
[dependencies]
13-
nanobook = { version = "0.9.0", path = "..", features = ["serde"] }
14-
nanobook-broker = { version = "0.3.0", path = "../broker" }
13+
nanobook = { version = "0.9.1", path = "..", features = ["serde"] }
14+
nanobook-broker = { version = "0.3.1", path = "../broker" }
1515
rustc-hash = "2.1"
1616
serde = { version = "1", features = ["derive"] }
1717

src/optimize.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ fn covariance_matrix(matrix: &[Vec<f64>]) -> Vec<Vec<f64>> {
229229
}
230230

231231
let denom = (rows as f64 - 1.0).max(1.0);
232+
#[allow(clippy::needless_range_loop)]
232233
for i in 0..cols {
233234
for j in i..cols {
234235
let v = cov[i][j] / denom;
@@ -484,7 +485,7 @@ mod tests {
484485
assert_close(
485486
&minvar,
486487
&[
487-
0.2497573732080370,
488+
0.249_757_373_208_037,
488489
0.2501599724543681,
489490
0.2502155962699676,
490491
0.2498670580676274,

0 commit comments

Comments
 (0)