Repository navigation
A parity and resilience release. Every option Greeks route the vendor serves is now served here, including its binomial Greeks; the market-data client stays under the vendor's per-address connection limit and fails a request at once when its connection closes; and a dropped stream says how it ended.
Breaking changes
Rust API
StreamControl::Disconnected,ReconnectingandReconnectsExhaustedgaincause: DisconnectCause; a pattern that names their fields exhaustively must addcauseor.., and code that builds one must supplycause. (#1420)- The Greeks tick structs gain
underlying_date; a struct literal or an exhaustive pattern must add it or... (#1421)
C ABI and C++
ThetaDataDxEndpointRequestOptionscarriesbinomial_stepsandperf_boost_intradaywith their presence flags, the Greeks tick structs carryunderlying_date, and the three disconnect event structs carry the cause fields. Each layout changes, so a C or C++ program must be rebuilt against the new headers. (#1419, #1420, #1421)
Streaming errors
- A streaming login that runs out its deadline now raises each binding's deadline error when the stream starts (
Error::Stream { kind: Timeout }in Rust,DeadlineExceededErrorin Python, TypeScript and C++,THETADATADX_ERR_DEADLINE_EXCEEDEDin the C ABI). A server that never answered used to raise the network error (Error::Ioin Rust,NetworkErrorelsewhere), and a stall part-way through a frame the generic stream error, so a handler that caught the network error must also catch the deadline error. (#1430, #1434)
Highlights
- Binomial Greeks. The vendor's 13 binomial Greeks routes (history, trade and snapshot), computed on a Leisen-Reimer tree that allows early exercise, are served on every surface and by the local server on the vendor's paths, with
binomial_steps. The option trade Greeks history routes takeperf_boost_intraday. (#1419) - Connections. A request queued at the instant its connection ends now fails at once and is retried on a fresh connection instead of waiting, without bound when the deadline was disabled. New connections are paced under the vendor's per-address limit, so a short outage no longer ends in an hour-long block of the user's address. (#1405, #1417, #1433)
- Disconnect cause.
Disconnected,ReconnectingandReconnectsExhaustedsay whether the server sent a disconnect, closed the stream, a read or write failed, or the client's read deadline expired, on every binding. (#1420, #1430) - Greeks underlying date. The date of the underlying price behind a Greeks value is the date the vendor sent, on every surface and in every frame, rather than the option quote's date. (#1421, #1431)
- Published contract. Optional parameters are optional with their defaults, both spellings of a route share one rule, every code example is generated from the endpoint definitions with the arguments each route requires, and the endpoint count and subscription tiers are correct. (#1416, #1427, #1432)
- Build. The C ABI builds in a fraction of the time and memory, which also helps anyone building the C++ SDK from source. (#1422)
See the full changelog for every change and the reason for it.
What's Changed
- ci: run the crate publish and GitHub Release when verification passes by @userFRM in #1408
- fix(grpc): fail a request queued as its connection ends instead of leaving it waiting by @userFRM in #1405
- chore(release): 0.5.1 by @userFRM in #1409
- docs(openapi): make the vendor's optional parameters optional and hold them to the registry by @userFRM in #1416
- feat(endpoints): serve the vendor's binomial greeks routes and perf_boost_intraday by @userFRM in #1419
- fix(ffi): dispatch every endpoint through one blocking call instead of one per endpoint by @userFRM in #1422
- fix(greeks): keep the date the vendor sends for the underlying price by @userFRM in #1421
- feat(streaming): report where a disconnect came from beside the reason by @userFRM in #1420
- fix(transport): pace new connections under the vendor's per-address limit by @userFRM in #1417
- test(fixtures): send a defined greeks version and reject an undefined enum fixture by @userFRM in #1426
- docs(openapi): one expiration rule per endpoint and code examples rendered from the registry by @userFRM in #1427
- chore(deps): bump hyper-util, tokio-rustls, rustls-platform-verifier and thiserror in every lockfile by @userFRM in #1428
- chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /docs-site by @dependabot[bot] in #1429
- fix(streaming): report a mid-frame stall as the read deadline and document the cause fields in C by @userFRM in #1430
- fix(greeks): give the underlying's date to the epoch accessor and to column presence by @userFRM in #1431
- fix(transport): spend a connection-budget slot when a connection opens, not when one is queued by @userFRM in #1433
- docs: correct the code examples, endpoint count, tiers and fixtures the published docs carry by @userFRM in #1432
- fix: one deadline error for a silent login, and remove dead paths, duplicate tests and generator dashes by @userFRM in #1434
- chore(release): 0.6.0 by @userFRM in #1435
- chore(release): date 0.6.0 for the day it is tagged by @userFRM in #1436
Full Changelog: v0.5.0...v0.6.0