Releases: databento/dbn
Releases · databento/dbn
0.56.0
Release notes
Enhancements
- Added
DecodeRecordRef::decode_buf_iter()for lazily iterating ownedRecordBufs
via a standardIterator - Added
AsyncDecodeRecordRef::decode_stream()for lazily decoding ownedRecordBufs
via afutures::Stream- Added
async-streamandfutures-coredependencies (gated onasyncfeature)
- Added
- Improved
DbnFsmdecode throughput by makingAlignedBuffershifts 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
pyo3to 0.28.3- Declared free-threaded Python support on the
databento_dbnextension module. Not
yet building free-threaded wheels in CI
- Declared free-threaded Python support on the
0.55.0
Release notes
Enhancements
- Added new publisher values for OPRA MEMX MX2 Options and IEX Options
- Improved
DbnFsmdecode throughput on current-version data andAsIsworkloads by
caching whether the upgrade policy-version combination requires upgrading, skipping
the per-recordupgrade_recorddispatch on the fast path (credit: @wtn)
Bug fixes
- Removed unsound
CopyandCloneimplementations forRecordRefMut
0.54.0
Release notes
Enhancements
- Added
RecordBuf, an owned stack-allocated buffer for holding a DBN record of
dynamic type. ComplementsRecordRef(borrowed, dynamic) and concrete types
(owned, static). Supportsget(),try_get(),set(),upgrade(), and
cross-capacityPartialEq - Added
RecordRefMutfor mutable non-owning references to DBN records - Added
RecordRef::to_owned()andRecordRefMut::to_owned()for converting
borrowed records to an ownedRecordBuf - Added
Hash,PartialEq, andEqforRecordRef, including cross-type equality
betweenRecordBufandRecordRef - Changed
RecordHeaderto beCopy
Release notes
Enhancements
- Added
RecordBuf, an owned stack-allocated buffer for holding a DBN record of
dynamic type. ComplementsRecordRef(borrowed, dynamic) and concrete types
(owned, static). Supportsget(),try_get(),set(),upgrade(), and
cross-capacityPartialEq - Added
RecordRefMutfor mutable non-owning references to DBN records - Added
RecordRef::to_owned()andRecordRefMut::to_owned()for converting
borrowed records to an ownedRecordBuf - Added
Hash,PartialEq, andEqforRecordRef, including cross-type equality
betweenRecordBufandRecordRef - Changed
RecordHeaderto beCopy
0.53.0
Release notes
Enhancements
- Made
ts_outa permanent field on all Python record types, replacing the
dynamic__dict__attribute.ts_outreturns anint(UNDEF_TIMESTAMPwhen
not set) - Removed
__dict__from all Python record classes, eliminating a separate
per-instance allocation FlagSetsetter methods are nowconst, making it easier to define constants, e.g.
const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()
Breaking changes
record.ts_outnow returnsUNDEF_TIMESTAMPinstead of raisingAttributeError
whents_outis not set. Code usinghasattr(record, "ts_out")should check
record.ts_out != UNDEF_TIMESTAMPinsteadbytes(record)now includes the 8-bytets_outsuffix when the record was
created withts_out. Code that separately appendsts_outbytes 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_outassignment
Release notes
Enhancements
- Made
ts_outa permanent field on all Python record types, replacing the
dynamic__dict__attribute.ts_outreturns anint(UNDEF_TIMESTAMPwhen
not set) - Removed
__dict__from all Python record classes, eliminating a separate
per-instance allocation FlagSetsetter methods are nowconst, making it easier to define constants, e.g.
const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()
Breaking changes
record.ts_outnow returnsUNDEF_TIMESTAMPinstead of raisingAttributeError
whents_outis not set. Code usinghasattr(record, "ts_out")should check
record.ts_out != UNDEF_TIMESTAMPinsteadbytes(record)now includes the 8-bytets_outsuffix when the record was
created withts_out. Code that separately appendsts_outbytes 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_outassignment
0.52.1
Release notes
Enhancements
- Added
__index__to all int-representable and char-backed Python enums, enabling
use withint(),hex(), and as sequence indices
Bug fixes
- Fixed memory leak in Python bindings where every record object leaked ~64 bytes
due to apyo30.28 regression in#[pyclass(dict)]deallocation. Downgraded
pyo3to 0.27.2 - Removed unnecessary
dictfromBidAskPairandConsolidatedBidAskPairPython
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@setterstubs
for enum fields (e.g.action,side)
0.52.0
Release notes
Enhancements
- Added
SYMBOL_CSTR_LENconstant 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) asSYMBOL_CSTR_LEN - Added
v1,v2, andv3submodule imports todatabento_dbn.__init__so they are
accessible as attributes (e.g.databento_dbn.v1) - Upgraded
pyo3version to 0.28.2
0.51.0
Release notes
Enhancements
- Added logic to set
codewhen upgrading version 1ErrorMsgto newer versions - Upgraded
async-compressiondependency version to 0.4.41 - Upgraded
timeversion to 0.3.47
Bug fixes
- Fixed miri issue with potential for unaligned data when decoding DBN through
DbnFsm
0.50.0
Release notes
Enhancements
- Added
SkippedRecordsAfterSlowReadingto theErrorCodeenum for gateway errors
originating from slow client catch-up
0.49.0
Release notes
Enhancements
- Added
encode_recordstoEncodeRecordandAsyncEncodeRecordtraits for more
efficient batch encoding - Added
encode_record_refstoEncodeRecordRefandAsyncEncodeRecordReftraits with
more efficient vectored I/O implementation for DBN - Added support for decompressing Zstd in the Python
DBNDecoderand new optional
compressionparameter
Breaking changes
- Moved
encode_recordsmethod from theEncodeDbntrait toEncodeRecord
0.48.0
Release notes
Enhancements
- Added initial support for splitting DBN files:
- Added new
SplitEncoderthat supports synchronous and asynchronous encoding - Added new
Splittertrait that allows for extensible splitting of files while
reusing theSplitEncoderboilerplate. - Added
SchemaSplitter,SymbolSplitter, andTimeSplitterwhich allow for
different methods of splitting DBN files - Added split support to the CLI. For example:
dbn mbo.dbn --split-by week --output-pattern '{date}.json'--json
- Added new
- Added new publisher for Blue Ocean ATS (
OCEA_MEMOIR_OCEA)
Bug fixes
- Fixed issue where
AsyncDynReaderinstances created fromwith_buffer()would only
decode the first frame of multi-frame Zstandard files