Skip to content

Releases: databento/dbn

0.60.0

09 Jun 16:20

Choose a tag to compare

Release notes

Enhancements

  • Added RecordDecoder::seek_to for absolute byte-offset seeking
  • Added is_compressed helpers for dynamic DBN readers

0.59.0

02 Jun 13:49

Choose a tag to compare

Release notes

Enhancements

  • Added encode_record_ref_with_ts_out and encode_record_refs_with_ts_out methods to
    the EncodeRecordRef and AsyncEncodeRecordRef traits. The DBN encoder uses vectored
    I/O to append the ts_out timestamp without copying the record body, while
    CSV and JSON encoders serialize from a cloned struct as usual
  • Added new venues, datasets, and publishers for US Equities Securities Information
    Processors

0.58.0

12 May 16:48
983d5b5

Choose a tag to compare

Release notes

Enhancements

  • Relaxed TsSymbolMap::insert to accept impl Into<Arc<String>> for the symbol
    parameter, allowing callers to pass a String directly
  • Added flat per-level properties (bid_px_00, pretty_ask_px_03, etc.) to the
    Python MBP1Msg, MBP10Msg, BBOMsg, CMBP1Msg, and CBBOMsg record classes
    for parity with the DataFrame layout

0.57.0

05 May 19:41
b845970

Choose a tag to compare

Release notes

Enhancements

  • Added INDEX InstrumentClass variant
  • Added StatType variants INDICATIVE_CLOSE_PRICE and VENUE_SPECIFIC_PRICE_1

0.56.0

28 Apr 19:42
c932836

Choose a tag to compare

Release notes

Enhancements

  • Added DecodeRecordRef::decode_buf_iter() for lazily iterating owned RecordBufs
    via a standard Iterator
  • Added AsyncDecodeRecordRef::decode_stream() for lazily decoding owned RecordBufs
    via a futures::Stream
    • Added async-stream and futures-core dependencies (gated on async feature)
  • Improved DbnFsm decode throughput by making AlignedBuffer shifts lazy,
    deferring the internal move to buffer refill boundaries (credit: @wtn)
  • Added new publisher values for Cboe Titanium Cboe Global Indices Feed
  • Added support for splitting files by year to TimeSplitter
  • Improved Python DBNDecoder.decode() performance with pre-allocated output buffers
  • Added DBNDecoder.write_and_decode() to combine write and decode in a single call
  • Upgraded pyo3 to 0.28.3
    • Declared free-threaded Python support on the databento_dbn extension module. Not
      yet building free-threaded wheels in CI

0.55.0

21 Apr 19:53
3fec70d

Choose a tag to compare

Release notes

Enhancements

  • Added new publisher values for OPRA MEMX MX2 Options and IEX Options
  • Improved DbnFsm decode throughput on current-version data and AsIs workloads by
    caching whether the upgrade policy-version combination requires upgrading, skipping
    the per-record upgrade_record dispatch on the fast path (credit: @wtn)

Bug fixes

  • Removed unsound Copy and Clone implementations for RecordRefMut

0.54.0

14 Apr 17:37
772a1d2

Choose a tag to compare

Release notes

Enhancements

  • Added RecordBuf, an owned stack-allocated buffer for holding a DBN record of
    dynamic type. Complements RecordRef (borrowed, dynamic) and concrete types
    (owned, static). Supports get(), try_get(), set(), upgrade(), and
    cross-capacity PartialEq
  • Added RecordRefMut for mutable non-owning references to DBN records
  • Added RecordRef::to_owned() and RecordRefMut::to_owned() for converting
    borrowed records to an owned RecordBuf
  • Added Hash, PartialEq, and Eq for RecordRef, including cross-type equality
    between RecordBuf and RecordRef
  • Changed RecordHeader to be Copy

Release notes

Enhancements

  • Added RecordBuf, an owned stack-allocated buffer for holding a DBN record of
    dynamic type. Complements RecordRef (borrowed, dynamic) and concrete types
    (owned, static). Supports get(), try_get(), set(), upgrade(), and
    cross-capacity PartialEq
  • Added RecordRefMut for mutable non-owning references to DBN records
  • Added RecordRef::to_owned() and RecordRefMut::to_owned() for converting
    borrowed records to an owned RecordBuf
  • Added Hash, PartialEq, and Eq for RecordRef, including cross-type equality
    between RecordBuf and RecordRef
  • Changed RecordHeader to be Copy

0.53.0

07 Apr 17:44
3ba305b

Choose a tag to compare

Release notes

Enhancements

  • Made ts_out a permanent field on all Python record types, replacing the
    dynamic __dict__ attribute. ts_out returns an int (UNDEF_TIMESTAMP when
    not set)
  • Removed __dict__ from all Python record classes, eliminating a separate
    per-instance allocation
  • FlagSet setter methods are now const, making it easier to define constants, e.g.
    const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()

Breaking changes

  • record.ts_out now returns UNDEF_TIMESTAMP instead of raising AttributeError
    when ts_out is not set. Code using hasattr(record, "ts_out") should check
    record.ts_out != UNDEF_TIMESTAMP instead
  • bytes(record) now includes the 8-byte ts_out suffix when the record was
    created with ts_out. Code that separately appends ts_out bytes after
    bytes(record) should be updated to avoid double-writing
  • Arbitrary attribute assignment on record instances is no longer supported

Bug fixes

  • Fixed memory leak around ts_out assignment

Release notes

Enhancements

  • Made ts_out a permanent field on all Python record types, replacing the
    dynamic __dict__ attribute. ts_out returns an int (UNDEF_TIMESTAMP when
    not set)
  • Removed __dict__ from all Python record classes, eliminating a separate
    per-instance allocation
  • FlagSet setter methods are now const, making it easier to define constants, e.g.
    const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()

Breaking changes

  • record.ts_out now returns UNDEF_TIMESTAMP instead of raising AttributeError
    when ts_out is not set. Code using hasattr(record, "ts_out") should check
    record.ts_out != UNDEF_TIMESTAMP instead
  • bytes(record) now includes the 8-byte ts_out suffix when the record was
    created with ts_out. Code that separately appends ts_out bytes after
    bytes(record) should be updated to avoid double-writing
  • Arbitrary attribute assignment on record instances is no longer supported

Bug fixes

  • Fixed memory leak around ts_out assignment

0.52.1

31 Mar 20:23
3c9465c

Choose a tag to compare

Release notes

Enhancements

  • Added __index__ to all int-representable and char-backed Python enums, enabling
    use with int(), hex(), and as sequence indices

Bug fixes

  • Fixed memory leak in Python bindings where every record object leaked ~64 bytes
    due to a pyo3 0.28 regression in #[pyclass(dict)] deallocation. Downgraded
    pyo3 to 0.27.2
  • Removed unnecessary dict from BidAskPair and ConsolidatedBidAskPair Python
    classes
  • Fixed Python type stubs to reflect that record_size() is a method, not a property
  • Fixed Python type stubs for record fields to indicate which fields are writable
    (e.g. publisher_id, instrument_id, price, size) and added @setter stubs
    for enum fields (e.g. action, side)

0.52.0

17 Mar 19:52
2e99e61

Choose a tag to compare

Release notes

Enhancements

  • Added SYMBOL_CSTR_LEN constant and versioned variants (SYMBOL_CSTR_LEN_V1,
    SYMBOL_CSTR_LEN_V2, SYMBOL_CSTR_LEN_V3) to Python, including in each versioned
    module (v1, v2, v3) as SYMBOL_CSTR_LEN
  • Added v1, v2, and v3 submodule imports to databento_dbn.__init__ so they are
    accessible as attributes (e.g. databento_dbn.v1)
  • Upgraded pyo3 version to 0.28.2