A correctness and public-surface pass across every binding (Rust, Python, TypeScript, C++, C), plus smarter multi-day option-chain sharding.
Breaking changes
Rust API
- Removed
MarketDataClient::bulk_fetch_planand the publicShardPlan/ShardQuerytypes. Bulk-fetch sharding is automatic on the history builders. ShardBand::Date(surfaced only throughError::PartialShardFetch) gains arightfield; code that matches or builds it updates for the new field.- The public API is tightened: internal module paths (
authbeyondCredentials,backoffbeyondJitterMode,util) are now crate-private. The crate-root re-exports (Credentials,JitterMode) are unchanged, so ordinary code is unaffected.
Configuration file
- Removed the
[grpc] max_message_size_mbkey. Set the inbound gRPC ceiling in bytes via[market_data] max_message_size.
TypeScript
- Date and time arguments (
startDate,endDate,expiration,startTime,endTime,timeOfDay) take a wire-format string only, not a JSDate. ADateis an instant, not a calendar day, so rendered in UTC it shifted the requested day for a caller in a non-UTC zone. Format aDateyourself before passing it. - The TCP-keepalive setters name their argument
secs, notms, matching the Python binding. StreamingClient.streaming()returns aStandaloneStreamingSessionwhose type matches the surface the object actually exposes.
Highlights
- Multi-day option-chain pulls fan the date axis out by call/put. A wide both-rights chain now splits each date band into a call band and a put band, so more lanes run at once and the pull finishes sooner. Merged rows are exactly the single stream's, in the SDK's canonical chain order.
- A correctness sweep across every binding. Retry and reconnect backoff no longer overshoots its configured wall-clock envelope. A stream delivering only unrecognized frames reconnects instead of going silent. A synchronous market-data call from inside a Python streaming delivery handler fails fast with
HandlerReentrancyinstead of deadlocking. Per-calltimeout_ms = 0disables the deadline uniformly across every endpoint family. The TypeScript numeric config setters reject an out-of-range value instead of silently wrapping it. A C++ index subscription subscribes to the index, not a stock, and a C++ streaming handler exception is surfaced rather than swallowed.
See the full changelog for every entry.
What's Changed
- 0.4.0: public-surface trim, call/put date sharding, and correctness fixes across every binding by @userFRM in #1226
- fix: type unknown subscription sec_type, finish backpressure wording by @userFRM in #1228
- fix: binding error-surface hardening and 0.4.0 release prep by @userFRM in #1231
- style(core): tighten two safety-path comments by @userFRM in #1232
Full Changelog: v0.3.0...v0.4.0