Skip to content

v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Oct 14:14

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, Reconnecting and ReconnectsExhausted gain cause: DisconnectCause; a pattern that names their fields exhaustively must add cause or .., and code that builds one must supply cause. (#1420)
  • The Greeks tick structs gain underlying_date; a struct literal or an exhaustive pattern must add it or ... (#1421)

C ABI and C++

  • ThetaDataDxEndpointRequestOptions carries binomial_steps and perf_boost_intraday with their presence flags, the Greeks tick structs carry underlying_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, DeadlineExceededError in Python, TypeScript and C++, THETADATADX_ERR_DEADLINE_EXCEEDED in the C ABI). A server that never answered used to raise the network error (Error::Io in Rust, NetworkError elsewhere), 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 take perf_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, Reconnecting and ReconnectsExhausted say 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