Release 1.0.0

2024-03-16

API Changes

Client

A new polling client to support easier integration with third-party vendor solutions.

This has been tested with the roq-tui application and it is now used by the roq-python package.

RateLimitsUpdate

Last received exchange rate-limiter usage will be communicated through the RateLimitsUpdate message.

Note

Not all exchange/transport protocols can support this. This is best-effort.

roq-market / roq-utils

Warning

BREAKING CHANGE

Market utilities have been moved to the roq-market package (from the roq-utils package). You may have to add roq-market as a new dependency and also use the roq::market namespace instead of roq::utils.

libabseil vs Abseil-CPP

It was noticed that the abseil-cpp package from conda-forge was no longer maintained and that the replacement package is now libabseil.

When using newer versions of the library, it was then noticed that the hash containers were not ABI compatible when used from debug build (often used together with the sanitizer compiler flags).

This has prompted us to replace all containers exposed in the C++ interfaces: we do not anymore use the absl::flat_* or absl::node_* containers!

unordered_dense

This is the library we currently prefer when using hash containers.

Gateway Changes

Binance-Futures

There is now support for PAPI (portfolio margin mode).

CME

Gateway logic was rewritten to support PCAP replay.

A new tool roq-cme-import was added to create event-logs from PCAP files. This can be useful when implementing and simulating strategies.

Event-Logs

Warning

BREAKING CHANGE

Because event-logs can create relatively large files and may ultimately cause storage space issues without proper admin jobs (backup and/or purge), it was decided to make this an opt-in feature.

You should now explicitly set the --event_log_dir flag to a directory before event-logs are saved.

CHANGELOG

Milestone on GitHub.

Fixed

  • utils::compare<double> could incorrectly compare values in the [0;1] range (API) (#446).

  • MbP Sequencer could cause memory leak (Market) (#440).

Changed

  • Make it possible to publish the same message multiple times (SBE Publisher) (#443).

  • Event-log is now opt-in (Server) (#442).

  • Suspend all activity when receiving the Retry-After HTTP header (Binance) (#441).

  • Promote Decimal to (from utils::Number) and rename Precision (from Decimals) (API) (#439).

  • Separate market functions from general utilities (Utilities) (#438).

Added

  • New polling client (Client) (#445).

  • Support PAPI (Binance Futures) (#444).

Removed

Other