Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Aug 11:59
2d4cd6c

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_plan and the public ShardPlan / ShardQuery types. Bulk-fetch sharding is automatic on the history builders.
  • ShardBand::Date (surfaced only through Error::PartialShardFetch) gains a right field; code that matches or builds it updates for the new field.
  • The public API is tightened: internal module paths (auth beyond Credentials, backoff beyond JitterMode, 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_mb key. 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 JS Date. A Date is an instant, not a calendar day, so rendered in UTC it shifted the requested day for a caller in a non-UTC zone. Format a Date yourself before passing it.
  • The TCP-keepalive setters name their argument secs, not ms, matching the Python binding.
  • StreamingClient.streaming() returns a StandaloneStreamingSession whose 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 HandlerReentrancy instead of deadlocking. Per-call timeout_ms = 0 disables 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