Skip to content

Commit ecb53b5

Browse files
userFRMclaude
andauthored
release: v3.1.0
All Cargo.toml, pyproject.toml, Cargo.lock, and CHANGELOG updated. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8a89ded commit ecb53b5

12 files changed

Lines changed: 33 additions & 17 deletions

File tree

CHANGELOG.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [3.1.0] - 2026-03-27
9+
10+
### Fixed
11+
12+
- **Go SDK: price encoding was fundamentally wrong** -- `priceToFloat()` used a switch-case instead of `value * 10^(price_type - 10)`. Every price returned by the Go SDK was incorrect. Now matches Rust exactly.
13+
- **Python docs: streaming examples used wrong event key** -- `event["type"]` changed to `event["kind"]` across README and all docs-site pages.
14+
- **`Price::new()` no longer panics in release** -- `assert!` replaced with `debug_assert!` + `clamp(0, 19)` with `tracing::warn!`. A corrupt frame no longer crashes production.
15+
- **C++ `FpssClient`: added missing `unsubscribe_quotes()`** -- was present in FFI but missing from C++ RAII wrapper.
16+
- **FFI FPSS: mutex poison safety** -- all 12 `.lock().unwrap()` calls replaced with `.unwrap_or_else(|e| e.into_inner())`. Prevents undefined behavior (panic across `extern "C"`) on mutex poisoning.
17+
- **`Credentials.password` visibility** -- changed from `pub` to `pub(crate)` with `password()` accessor. Prevents accidental credential logging by downstream code.
18+
- **WebSocket server: added OPEN_INTEREST + FULL_TRADES dispatch** -- previously silently dropped.
19+
- **C++ SDK type parity** -- `MarketValueTick` expanded from 3 to 7 fields, `CalendarDay` added `status`, `InterestRateTick` added `ms_of_day`.
20+
- **Python README: removed ghost methods** -- `is_authenticated()` and `server_addr()` were listed but did not exist.
21+
- **Root README: stock method count** -- "Stock (13)" corrected to "Stock (14)".
22+
823
## [3.0.0] - 2026-03-27
924

1025
### Breaking Changes
@@ -339,7 +354,8 @@ See [TODO.md](TODO.md) for the production readiness checklist and performance ro
339354
- FIT decoder uses i64 accumulator with i32 saturation (no silent overflow)
340355
- Price type range enforced with `assert!` in release builds
341356

342-
[Unreleased]: https://github.com/userFRM/ThetaDataDx/compare/v3.0.0...HEAD
357+
[Unreleased]: https://github.com/userFRM/ThetaDataDx/compare/v3.1.0...HEAD
358+
[3.1.0]: https://github.com/userFRM/ThetaDataDx/compare/v3.0.0...v3.1.0
343359
[3.0.0]: https://github.com/userFRM/ThetaDataDx/compare/v2.0.0...v3.0.0
344360
[2.0.0]: https://github.com/userFRM/ThetaDataDx/compare/v1.2.2...v2.0.0
345361
[1.2.2]: https://github.com/userFRM/ThetaDataDx/compare/v1.2.1...v1.2.2

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/thetadatadx/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx"
3-
version = "3.0.0"
3+
version = "3.1.0"
44
edition = "2021"
55
rust-version = "1.85"
66
authors = ["userFRM"]

ffi/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx-ffi"
3-
version = "3.0.0"
3+
version = "3.1.0"
44
edition = "2021"
55
description = "C FFI layer for thetadatadx — used by Go and C++ SDKs"
66
license = "GPL-3.0-or-later"

sdks/python/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdks/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 = "thetadatadx-py"
3-
version = "3.0.0"
3+
version = "3.1.0"
44
edition = "2021"
55
description = "Python bindings for thetadatadx — native ThetaData SDK powered by Rust"
66

sdks/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 = "thetadatadx"
7-
version = "3.0.0"
7+
version = "3.1.0"
88
description = "No-JVM ThetaData Terminal — native Rust SDK for direct market data access (Python bindings)"
99
readme = "README.md"
1010
requires-python = ">=3.9"

tools/cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx-cli"
3-
version = "3.0.0"
3+
version = "3.1.0"
44
edition = "2021"
55
description = "CLI for ThetaDataDx — query ThetaData from your terminal"
66
license = "GPL-3.0-or-later"

tools/mcp/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/mcp/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx-mcp"
3-
version = "3.0.0"
3+
version = "3.1.0"
44
edition = "2021"
55
description = "MCP server for ThetaDataDx — gives LLMs instant access to ThetaData market data"
66
license = "GPL-3.0-or-later"

0 commit comments

Comments
 (0)