Repository navigation
v0.5.0
A correctness and parity release. The local server, the MCP server and every binding were checked against the vendor terminal, and wherever they differed from what the terminal serves, they now match it. Streaming recovers from more failure modes without losing subscriptions, and the Windows and Linux packages run on more systems.
Breaking changes
Every binding
0is no longer accepted as a wildcard forexpirationorstrike. The vendor defines*for both, and the terminal refuses0. (#1389)- A condition or exchange cell the vendor left empty is published as empty instead of as code zero, which is a real code on these columns. They are now
int | Nonein Python andnumber | nullin TypeScript; in C and C++ each carries abool has_<column>, which changes the size of several tick structs, so rebuild against the new header. (#1371) - Five trade-tick accessors are removed:
trade_condition_no_last,price_condition_set_last,is_incremental_volume,regular_trading_hoursandis_seller. They named meanings the vendor does not define; the columns they read stay on the tick. (#1319, #1362) - The metrics-port setter is removed from the bindings, where it could never take effect. (#1326)
- A Python
CalendarDaymust be given itsstatus. (#1343)
Rust API
Error::NoDatais removed; a query with no rows arrives asError::Grpcwith kindNotFound, as it already did. (#1399)Error::Grpcgains anhttp_status_codefield. Code that builds the variant, or destructures it without.., must add it. (#1399)- Arrow moves to 60 and polars to 0.55. (#1275)
- The minimum supported Rust is 1.94. (#1399)
Local server
- An upstream rejection is answered with the HTTP status the vendor service attaches (472 for a query with no rows) and a plain-text body, as the terminal does, instead of 500. (#1399)
Release assets
- The Windows C ABI ships as
thetadatadx_ffi-windows-msvc-x86_64.zipandthetadatadx_ffi-windows-gnu-x86_64.zip, each holding the DLL and its import libraries under their original names. (#1399)
Highlights
- Index market value. An index market value arrives as its own event carrying the figure the vendor serves, on every surface including the server's WebSocket. (#1330, #1365, #1395)
- List endpoints.
option_list_datesapplies thestrikeandrightfilters, and a comma-separatedsymbollist on the contract and date lists returns every symbol's rows, as the terminal does. (#1391, #1399) - Streaming staging cluster. Streaming can target the vendor's staging cluster from every binding. (#1280, #1399)
- Streaming resilience. A failed
reconnect()keeps its subscriptions for the retry, failover moves past a host that accepts TCP but cannot complete TLS, a batch stream ends with an error when the session will not reconnect, a reconnect callback can stop the stream, and a throttled login raises the rate-limit error. (#1399) - Local server parity. A repeated list parameter collects every value and a repeated scalar keeps its first,
format=json_newandformat=json_legacyare accepted, and row labels, timestamps and option contract block order match the terminal. (#1371, #1376, #1387, #1399) - MCP server. It speaks the 2026-07-28 protocol revision and still answers older clients, reports the account's entitlements, returns each row with its symbol and exactly the columns the response carried, caps a result at 50,000 rows with a refusal that says how to narrow it, and refuses an argument a tool does not declare. (#1240, #1257, #1399)
- Bindings. A Python timezone-aware
datetimeasks for the instant it names, a history stream stops on the handler's first error, an environment-selector typo raises a catchable error instead of aborting Node, a reused C or C++ options bag no longer overrides an endpoint's own arguments, and an out-of-range configuration value is refused at the same point, naming its field, on every binding and on the standalone streaming clients. (#1399, #1404) - Packaging. The Windows server, MCP server, TypeScript addon and C ABI DLL run without the Visual C++ runtime, and CI fails a Windows build that would need it. The Linux TypeScript addon and the Linux C ABI library load on glibc 2.17 and newer, and the free-threaded Python wheel installs on glibc 2.28 and newer. (#1399, #1404)
See the full changelog for every change and the reason for it.
What's Changed
- fix(fpss): share one delta baseline per contract, as the server encodes it by @userFRM in #1320
- fix(server): give a multi-symbol snapshot row its own symbol by @userFRM in #1322
- fix(streaming): refuse a subscription the feed does not publish by @userFRM in #1325
- fix(config)!: remove the metrics port accessor from every binding by @userFRM in #1326
- fix(ticks)!: stop naming values the vendor does not define by @userFRM in #1319
- docs(changelog): 0.1.0 described a watchdog that release did not contain by @userFRM in #1327
- docs(changelog): describe the FIT integer fix by the terminal's output by @userFRM in #1388
- fix(mdds)!: refuse 0 as a wildcard for expiration and strike by @userFRM in #1389
- test(ci): give strike-range validator cells the chain-wide timeout by @userFRM in #1390
- fix(mdds): apply the strike and right filters on option list dates by @userFRM in #1391
- build(deps-dev): bump vue from 3.5.42 to 3.5.43 in /docs-site in the patch-minor group by @dependabot[bot] in #1392
- build(deps): bump rand from 0.10.2 to 0.10.3 in the patch-minor group by @dependabot[bot] in #1394
- fix(fpss): serve the indicative index market value the vendor serves by @userFRM in #1395
- fix(server): label rows only with the contract identity the wire sent by @userFRM in #1387
- build(deps-dev): bump the patch-minor group across 1 directory with 2 updates by @dependabot[bot] in #1393
- test: remove tests that only restate the build, cover the reconnect budget range by @userFRM in #1396
- docs: correct option contract identity docs and date 0.5.0 by @userFRM in #1398
- fix: harden streaming, bindings, server, MCP and release pipeline before 0.5.0 by @userFRM in #1399
- chore(release): add the 0.5.0 release notes and list streaming staging as added by @userFRM in #1402
- fix: close the attempt-budget, Windows runtime and Linux glibc issues before 0.5.0 by @userFRM in #1404
- chore(release): cover the attempt-budget and Linux library fixes in the 0.5.0 release notes by @userFRM in #1406
- ci: retry the protoc download on transient server errors by @userFRM in #1407
Full Changelog: v0.4.0...v0.5.0