Repository navigation
Releases
Releases · dxFeed/dxfeed-graal-rust-api
v0.4.0
- [DXFR-81][Rust] Promises can be awaited in async code.
PromiseandAnyOfimplementIntoFuture(PromiseFuture,AnyOfFuture), so async code awaits them instead
of blocking a thread inwait. The futures work on any executor (tokio, async-std, smol or another); the crate
depends on no runtime and needs no cargo feature for them.PromiseFuture::cancelmakes the future ready at once, so a timer of the runtime that cancels it is the async
timeout. Dropping the future does not cancel the request.system::shutdownmakes the pending futures ready withError::ShutDown.
- [DXFR-82][Rust] Subscriptions can be consumed as async streams of owned events.
DXFeedSubscription::into_streamandDXFeedTimeSeriesSubscription::into_streamturn a subscription into an
EventStream. Its buffer drops and counts the oldest events when it is full;into_stream_withtakes
StreamOptions::boundedwith another capacity orStreamOptions::unbounded.- The stream ends when it or its subscription is closed, when all its endpoints are closed and on
system::shutdown. - The new cargo feature
streamimplementsfutures_core::Streamfor the streams; without it they have their own
nextandpoll_next.
- [DXFR-83][Rust] The crate docs index common tasks and give examples of subscriptions, symbols, promises, the
transaction models and the main event types; the crate docs and the README have an Async section. - [DXFR-84][Rust] Event streams can take their events from an event queue.
- With
StreamOptions::event_queue, the events stay in the SDK until a task waits for them, so the SDK conflates
the lasting events (the last quote of each symbol) while the consumer lags;dropped()counts what the SDK lost. - An endpoint that awaits its termination (
close_and_await_termination) does not wait for the consumer: the
stream takes what the queue holds.
- With
- [DXFR-85][Rust] The transactional models and the order books can be consumed as async streams.
build_streamof the builders ofIndexedTxModelandTimeSeriesTxModelmakes aModelStreamof
Transactions, one per transaction or snapshot.build_streamofMarketDepthModelBuilderandOrderBookModel::into_streammake aModelStreamof
BookSides, the whole book after a change.- A model stream never splits an item: when its consumer lags, a snapshot drops the buffered transactions of its
source and a book replaces the buffered book; otherwise the buffer grows. It ends as an event stream does.
- [DXFR-86][Rust] A shared event queue can be consumed as an async stream.
SharedEventQueue::into_streammakes aTaggedEventStreamof(tag, Event): the events of all the
subscriptions attached to the queue, taken only while a task waits. The work of the executor of the queue
(models, the collector, promise handlers) runs in those polls.- The stream does not own the subscriptions. Closing an endpoint does not end it, as its subscriptions may come
from any endpoint: it ends when it or its queue is closed and onsystem::shutdown.
For integrators
- Depend on
dxfeed-graal = "0.4". The crates still use dxFeed Graal Native SDK 3.16.0:dxfeed-graal-sysis
0.4.0+sdk.3.16.0and its bindings do not change.
v0.3.0
The release on dxFeed Graal Native SDK 3.16.0.
- SDK. The crates use SDK 3.16.0; the version of
dxfeed-graal-sysnames it (0.3.0+sdk.3.16.0). Depend on
dxfeed-graal = "0.3". The bindings change only in their doc comments. - Logging. A handler of
logging::set_handlerworks withlogging::set_log_levelatTraceandAll: it gets
the Java levelFINERasTraceandCONFIGasDebug. Before, a call that logged atFINER, such as
DXEndpoint::connect, failed with aNullPointerExceptionwhile a handler was set. - Endpoint roles. The SDK deprecates
dxfg_v4_DXEndpoint_getInstanceWithRole, which creates a new endpoint on
every call, and drops it in SDK 4.0.0.DXEndpoint::get_instance_with_roledoes not call it: it returns the
default endpoint of the SDK forRole::Feedand keeps one endpoint per other role, created with
dxfg_v4_DXEndpoint_createWithRole. - Properties files.
dxfg_v4_DXEndpoint_Builder_withPropertiesof the SDK now closes the file it reads.
DXEndpointBuilder::with_propertiesofdxfeed-graalsets the properties one by one and does not use it.
v0.2.1
The release on dxFeed Graal Native SDK 3.15.0; the API is the same as in 0.2.0.
- SDK. The crates use SDK 3.15.0, built with GraalVM 25.5 (JDK 25.0.5); the version of
dxfeed-graal-sysnames it
(0.2.1+sdk.3.15.0). Its headers are those of SDK 3.14.0, so the bindings do not change. - TLS. The SDK trusts the root CAs of JDK 25.0.5 unless
javax.net.ssl.trustStoreis set: it no longer trusts the
eMudhra and Comodo roots that this JDK removes and rejects the blocked eMudhra TLS CAs G3B, so a connection to a
server whose certificate chains up to one of them fails the TLS handshake. The macOS x86-64 library is still built
with JDK 25.0.1, with the trust store of GraalVM 25.5 but without the distrust rules that later JDKs implement in
code (the Chunghwa ePKI Root CA). - Logging. A handler of
logging::set_handlerstill cannot take the levelsTraceandAll.
v0.2.0
The release on dxFeed Graal Native SDK 3.14.0.
- SDK. The crates use SDK 3.14.0; the version of
dxfeed-graal-sysnames it (0.2.0+sdk.3.14.0). Depend on
dxfeed-graal = "0.2". - Message connectors.
DXEndpoint::get_connectorsreturns the connectors of an endpoint. AMessageConnector
gives its name, kind, masked address, current addresses, state, the active flag, the counts of open and closed
connections and the bytes and data records read and written (MessageConnectorStatistics). The feature names
system::feature::MESSAGE_CONNECTORSandCONNECTION_ERRORSare new. - Experimental: connector listener and connection errors. With the
experimentalfeature,
DXEndpoint::add_message_connector_listenercalls a closure on each change of a connector, and
MessageConnector::get_last_errorandDXEndpoint::get_last_connection_errorreturn the last connection error
(ConnectionError: time, masked address,ConnectionErrorCategory, the dropped flag, the class of the Java
exception, the message and the count of errors). - Logging. The SDK sets its root logger to the more verbose of the levels of
logging::set_log_level(INFO
by default) andset_err_level, so the messages below it are not created. A handler oflogging::set_handler
cannot take the levelsTraceandAllin SDK 3.14.0: useDebugor above with a handler. - Live instrument profiles. Closing a live connection ends its thread with the next data or the read timeout;
before, the end of the process could wait for it. - macOS x86-64. The SDK installs no-op handlers of
SIGPIPEandSIGXFSZthere, as on the other platforms. - Packaging. The published manifests drop
license-filenext to the SPDX license, the packages ofdxfeed-graal
anddxfeed-graal-sysinclude their tests, and docs.rs documents all five supported targets.
v0.1.1
The first release on crates.io, on dxFeed Graal Native SDK 3.13.0.
- Crates.
dxfeed-graal-sys,dxfeed-graalanddxfeed-graal-buildare published on crates.io, with their
documentation on docs.rs: depend ondxfeed-graal = "0.1". The version ofdxfeed-graal-sysnames the SDK in its
build metadata (0.1.1+sdk.3.13.0). - SDK download. The build script of
dxfeed-graal-sysretries a timeout, a failed connection and an HTTP 429 or
5xx response, three attempts in all; other failures and a checksum mismatch still fail at once.
v0.1.0
The first release of the dxFeed Graal Rust API, on dxFeed Graal Native SDK 3.13.0.
- Crates.
dxfeed-graal-sys(raw bindings; its build script downloads, verifies and links the SDK),
dxfeed-graal(the safe API) anddxfeed-graal-build(deploys the SDK library next to an application's
executables). The crates are not published on crates.io yet; depend on them by path or by Git. - API. The dxFeed Java API 3.356 wherever the SDK exports it: endpoints of all roles, feeds, subscriptions
(including time-series and indexed), listeners as closures, last events and promises, publishing, all event types
(market, candle, option sale, order book, text and configuration messages, series, Greeks, ...), models (order
book, indexed tx and time-series tx), instrument profiles and their collector and connection, option chains,
schedules, on-demand replay, ORCS, system properties, logging and error handling. The experimental members of the
SDK are behind theexperimentalfeature. Events print as Java prints them. - Tools. One
Toolsbinary with Connect, Dump, PerfTest, LatencyTest, Qds and Help, with the arguments, help
screens and output of the C++ and .NET tools. - Samples. The samples of the Java API, with the names and groups of the C++ samples.
- Releases. Tools and Samples archives for Linux x86-64 and arm64 (glibc 2.28 and newer), Windows x86-64 and
macOS x86-64 and arm64, with SHA-256 checksums. - Platforms. Rust 1.88 or newer. CI checks Linux x86-64 and arm64, Windows x86-64 and macOS x86-64 and arm64.