Releases: databento/dbn
Releases · databento/dbn
Release list
0.70.0
Release notes
Enhancements
- Added
DbnDecoder_process_manyto the C API for decoding a batch of records in a
single call, which is significantly faster than callingDbnDecoder_processfor each
record - Added
DbnDecoder_take_metadatato the C API for taking ownership of the metadata
after aMetadataresult - Sped up
decode_ref()anddecode_record_ref()on the sync and async record
decoders, which now decode records in batches - Added
DbnFsm::process_batch()for decoding a batch of records in a single call,
along withhas_buffered_record()andnext_buffered_record()for draining the
batch - Added new venue, dataset, and publishers for Databento Core Indices
- Upgraded async-compression to 0.4.44
Breaking changes
- Replaced
Record::header()with a method per header field:raw_rtype(),
publisher_id(),instrument_id(), andraw_ts_event(), joining the existing
record_size(),rtype(), andpublisher().RecordRef,RecordRefMut,
RecordBuf,RecordEnum, andRecordRefEnumkeep aheader()method of their own,
and concrete record types keep theirhdfield Record::raw_rtype()returnsu16andRecord::instrument_id()returnsu64, wider
than the correspondingRecordHeaderfields, which are unchangedRType::try_into_schema()takes au16and returnsNonefor values outside the
range of theRecordHeaderrtypefield- Removed the
read_moreandmetadataout parameters fromDbnDecoder_process. Call
DbnDecoder_take_metadataafter aMetadataresult
Bug fixes
- Fixed
DbnFsm::process_all()andDbnFsm::process_many()returningRecordwith no
records instead ofReadMorewhen the buffer held no complete record - Fixed unsound
RecordRefMutaccessors, which returned references outliving the borrow
ofselfand let safe code hold two mutable references to the same record, or a
shared reference aliasing a mutable one.get_mut()andget_mut_unchecked()now
take&mut self, andheader()returns a reference borrowingself - Fixed undefined behavior when mutating a record through a
RecordRefMut, where the
write went through a pointer that permitted only reads, or that did not span the
whole record - Fixed
DbnFsm::process_all()andDbnFsm::process_many()discarding the records
decoded before an invalid record. They now return those records and the error on the
following call, matchingDbnFsm::process()
0.69.0
Release notes
Enhancements
- Added
UnsubscribeAckto theSystemCodeenum for acknowledging unsubscribe requests
Bug fixes
- Fixed unsound
AsRef<[u8]>forRecordBuf, which produced a slice longer than the
buffer when the headerlengthwritten throughraw_buf_mut()exceeded the capacity - Fixed incorrect count in DBN metadata causing decoding to read into the start of
records
0.68.0
Release notes
Enhancements
- Added
MetadataEncoder::encoded_len()for the number of bytesencode()will write - Added
DbnMetadata_encodeandDbnMetadata_encoded_sizeto the C API for encoding
metadata, including symbols, symbol mappings, and every symbology field - Added
STypeto the generated C header - Improved documentation for the
min_price_increment_amountandinst_attrib_value
fields
Breaking changes
- Removed
encode_metadatafrom the C API. UseDbnMetadata_encode, which takes a
DbnMetadataRefdescribing the full metadata rather than only the dataset, schema,
and start
0.67.0
Release notes
Enhancements
- Added
LISTING_ID,ISSUER_ID, andSECURITY_IDvariants toSType, for use
with the reference data API - Added
DbnDecoder_resetto the C API for decoding another stream with the same
decoder
Breaking changes
- Updated the minimum supported
tokioversion to 1.47, which was released one year ago
0.66.0
Release notes
Enhancements
- Improved performance of record field accessors that convert a raw value to an enum, such
asside(),action()andrtype(), by no longer copying the description when
constructing the conversion error - Improved performance of
Record::raw_index_ts()for records with an unrecognizedrtype - Relaxed the bound on
From<&R> for RecordReffromR: HasRTypetoR: Record, so a
RecordRefcan be constructed from any record type, includingRecordRefitself - Upgraded
pyo3to 0.29.2
0.65.0
Release notes
Enhancements
- Added
ReplayDataAgedOutvariant toErrorCodefor when the data for a replay
subscription is no longer retained and the schema is incompatible with skipping records - Added new publisher values for JPX
- Added a
zstdfeature, enabled by default, gating Zstandard compression and
decompression, the DBZ format, and theDynreaders, writers, decoders, and
encoders - Improved FFI library
- The static library no longer bundles Zstandard
- Added a
DBN_C_HEADER_DIRenvironment variable to control where the generated
dbn.his written - Added
native-static-libs.txtto the C static library release archives, recording
the linker arguments the static library requires - Added a shared library to the
libdbn_crelease archives
- Upgraded
timeto 0.3.55 - Upgraded
pyo3to 0.29.1
Bug fixes
- Fixed
DbnMetadata_endin the C API returning 0 for an unset queryendinstead of
UNDEF_TIMESTAMP, the value it's encoded with on the wire
0.64.0
Release notes
Enhancements
- Added a push-based decoder to the C API, where the caller owns the read loop
and any decompression, feeding bytes in and draining decoded metadata and
records out - Added a
finish()method toDynWriterto flush data and finalize the
output stream. For compressed data this will write the zstandard end-of-frame
block - Added
finish()method to the PythonTranscoderand a context manager
to call this method on exit. This will ensure compressed output contains the
end-of-frame block - Upgraded
timeto 0.3.54
Breaking changes
- Replaced the file-descriptor-based
DbnDecoder_*C API with the new
push-based decoder;DbnDecoder_createnow takes aDbnDecoderOptionsand
reports errors through aDbnDecoderErrorout parameter
Bug fixes
- Fixed
AsRef<[u8]>for concrete record types encoding only
size_of::<Self>()bytes instead of the fullrecord_size()from the header
length, which dropped appendedts_outbytes and corrupted output when
re-encoding a typed record decoded from a stream withts_out
0.63.0
Release notes
Enhancements
- Added an integer representation for
VersionUpgradePolicy: the enum is now
repr(u8)with discriminants starting at 1, derivesTryFromPrimitiveand
IntoPrimitive, and in Python gained avalueproperty, afrom_int
constructor, integer construction, and comparison against integers
0.62.0
Release notes
Enhancements
- Added new publisher values for Cboe Titanium Cboe Global Indices Feed
- Added
StatTypevariantsMwcbLevel1,MwcbLevel2, andMwcbLevel3 - Added
StatTypevariantsAuctionCollarReferencePrice,AuctionCollarUpperPrice,
andAuctionCollarLowerPrice - Upgraded
timeto 0.3.53
Breaking changes
- Renamed the following Venue, Dataset, and Publisher:
CGIFtoMAINCGIF.TITANIUMtoMAIN.CGIFCGIF.TITANIUM.CGIFtoMAIN.CGIF.MAIN
- Changed the default
sizefield to 0 inMboMsg,TradeMsg,Mbp1Msg,Mbp10Msg,
BboMsg,Cmbp1Msg, andCbboMsg
0.61.0
Release notes
Enhancements
- Added
MatchAlgorithmvariantAllocation - Upgraded
timeversion to 0.3.49 - Upgraded
pyo3to 0.29.0