Rust
0.64.0 - Upcoming
Enhancements
- Added
LiveClient::unsubscribe()and theUnsubscriptiontype for removing symbols from a live session's subscriptions - Added
LiveClient::unsubscriptions()andLiveClient::unsubscriptions_mut() - Added
Subscription::to_unsubscription()andFrom<&Subscription>forUnsubscriptionfor reversing a subscription - Modified
LiveClient::resubscribe()to resubscribe only to active subscriptions
Breaking changes
- Added
sent_atfield toSubscription
0.63.0 - 2026-09-29
Enhancements
- Optimized
LiveClient::next_record()andLiveClient::try_next_record()to decode records in batches - Upgraded DBN version to 0.71.0
- Upgraded zstd to 0.14
Deprecations
- From DBN:
- Deprecated
dbn::decode::dbn::async_decode_record_ref_with_fsm;DbnFsmcan be used directly
- Deprecated
0.62.0 - 2026-09-21
Enhancements
- Upgraded DBN version to 0.70.0:
- 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
- Sped up
Breaking changes
- From DBN:
- Replaced
Record::header()with a method per header field:raw_rtype(),publisher_id(),instrument_id(), andraw_ts_event(), joining the existingrecord_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
- Replaced
Bug fixes
- From DBN:
- 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()
- Fixed
0.61.0 - 2026-09-01
Enhancements
- Upgraded DBN version to 0.69.0:
- Added
UnsubscribeAckto theSystemCodeenum for acknowledging unsubscribe requests
- Added
Bug fixes
- From DBN:
- 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
- Fixed unsound
0.60.0 - 2026-08-25
Enhancements
- Upgraded DBN version to 0.68.0:
- Added
MetadataEncoder::encoded_len()for the number of bytesencode()will write - Improved documentation for the
min_price_increment_amountandinst_attrib_valuefields
- Added
Breaking changes
- Changed
BatchClient::list_jobs()to request the new short response format of thebatch.list_jobsendpoint and returnVec<BatchJobShort>, which contains only theid,state, andts_receivedfields for each job. UseBatchClient::get_job_details()to fetch the complete details of an individual job
Deprecations
- Deprecated
BatchClient::list_jobs_full(), which returns the full job details likelist_jobs()did previously. Thebatch.list_jobsendpoint will stop returning full job details at a future date, at which point this method will be removed
0.59.0 - 2026-08-18
Enhancements
- Added a
datasetfield toListFieldsParamsforMetadataClient::list_fields(). If not provided, the returned fields are for the latest DBN encoding version, which may not match a specific dataset's schema - Upgraded DBN version to 0.67.0:
- Added
SType::ListingId,SType::IssuerId, andSType::SecurityIdvariants, for use with the reference data API
- Added
- Upgraded
sha2version to 0.11
Breaking changes
- Updated the minimum supported
tokioversion to 1.47, which was released one year ago
0.58.0 - 2026-08-11
Enhancements
- Upgraded DBN version to 0.66.0:
- Improved performance of record field accessors that convert a raw value to an enum, such as
side(),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 aRecordRefcan be constructed from any record type, includingRecordRefitself
- Improved performance of record field accessors that convert a raw value to an enum, such as
0.57.0 - 2026-08-04
Enhancements
- Added an
allocate_isinsfield toGetRangeParamsandGetLastParamsforAdjustmentFactorsClient,CorporateActionsClient, andSecurityMasterClientto control whether new ISINs are allocated for plans that are ISIN-limited - Upgraded DBN version to 0.65.0:
- Added a
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
- Upgraded
timeversion to 0.3.55
- Added a
0.56.0 - 2026-07-28
Enhancements
- Added
CorporateActionsClient::list_events()andlist_enums()for fetching documentation on supported corporate action event types and enum values - Upgraded DBN version to 0.64.0:
- Added a
finish()method toDynWriterto flush data and finalize the output stream. For compressed data this will write the zstandard end-of-frame block - Upgraded
timeversion to 0.3.54
- Added a
Bug fixes
- From DBN:
- Fixed
AsRef<[u8]>for concrete record types encoding onlysize_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
- Fixed
0.55.0 - 2026-07-14
Enhancements
- Upgraded DBN version to 0.63.0:
- Added an integer representation for
VersionUpgradePolicy
- Added an integer representation for
0.54.0 - 2026-07-07
Enhancements
- Upgraded DBN version to 0.62.0:
- Added
RecordDecoder::seek_tofor absolute byte-offset seeking - Added
is_compressedhelpers for dynamic DBN readers - Added
MatchAlgorithmvariantAllocation - Added new publisher values for Cboe Titanium Cboe Global Indices Feed
- Added
StatTypevariantsMwcbLevel1,MwcbLevel2, andMwcbLevel3 - Added
StatTypevariantsAuctionCollarReferencePrice,AuctionCollarUpperPrice, andAuctionCollarLowerPrice - Upgraded
timeversion to 0.3.53
- Added
Breaking changes
- Breaking changes from DBN:
- 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
- Renamed the following Venue, Dataset, and Publisher:
0.53.0 - 2026-06-02
Enhancements
- Added
BatchClient::get_job_details()to access the full details of a batch job - Upgraded DBN version to 0.59.0:
- Added
encode_record_ref_with_ts_outandencode_record_refs_with_ts_outmethods to theEncodeRecordRefandAsyncEncodeRecordReftraits. The DBN encoder uses vectored I/O to append thets_outtimestamp 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
- Added
0.52.0 - 2026-05-26
Enhancements
- Added logging for gateway
ErrorMsgandSystemMsgrecords in the liveClient. Suppress via thetracingsubscriber's level filter
0.51.0 - 2026-05-12
Enhancements
- Added
caseandpayloadfields toApiErrorto expose the machine-readable error identifier and structured context (dataset, requested range, available range, etc.) returned by the historical API - Included the error
caseinApiError'sDisplayoutput - Upgraded DBN version to 0.58.0:
- Relaxed
TsSymbolMap::insertto acceptimpl Into<Arc<String>>for thesymbolparameter
- Relaxed
0.50.0 - 2026-05-05
Enhancements
- Upgraded DBN version to 0.57.0:
- Added
INDEXInstrumentClassvariant - Added
StatTypevariantsINDICATIVE_CLOSE_PRICEandVENUE_SPECIFIC_PRICE_1
- Added
0.49.0 - 2026-04-29
Enhancements
- Added
SplitDuration::Yearfor historical batch job submission - Upgraded DBN version to 0.56.0:
- Added
DecodeRecordRef::decode_buf_iter()for lazily iterating ownedRecordBufs via a standardIterator - Added
AsyncDecodeRecordRef::decode_stream()for lazily decoding ownedRecordBufs via afutures::Stream - Improved
DbnFsmdecode throughput by makingAlignedBuffershifts lazy, deferring the internal move to buffer refill boundaries - Added new publisher values for Cboe Titanium Cboe Global Indices Feed
- Added support for splitting files by year to
TimeSplitter
- Added
0.48.0 - 2026-04-21
Enhancements
- Upgraded DBN version to 0.55.0:
- Added new publisher values for OPRA MEMX MX2 Options and IEX Options
- Improved
DbnFsmdecode throughput on current-version data andAsIsworkloads
Bug fixes
- Removed unsound
CopyandCloneimplementations forRecordRefMut
0.47.0 - 2026-04-15
Enhancements
- Replaced
typed-builderdependency withbonfor all parameter builder structs - Added
maybe_prefixed setters for allOptionfields on parameter builders, allowing callers to passOption<T>directly (e.g.maybe_start(Some(datetime))ormaybe_start(None)) - Upgraded DBN version to 0.54.0:
- 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
- Added
Breaking changes
- Changed
use_snapshot()setter onSubscriptionbuilder to require an explicitboolargument:.use_snapshot()becomes.use_snapshot(true) - Changed
map_symbolsfield inSubmitJobParamsfrombooltoOption<bool> - Changed
limit()setter onGetRangeParams,GetRangeToFileParams,GetQueryParams, andSubmitJobParamsbuilders to acceptNonZeroU64instead ofOption<NonZeroU64>. Usemaybe_limit()for the previous behavior of passing anOptiondirectly
Bug fixes
- Removed
#[doc(hidden)]fromSubscription::use_snapshot
0.46.0 - 2026-04-07
Enhancements
- Added
TimeoutConfstruct andtimeout_conf()builder method for configuring connect and auth timeouts on the Live client (defaults to 10s and 30s) - Added
ConnectTimeoutandAuthTimeouterror variants - Upgraded DBN version to 0.53.0:
FlagSetsetter methods are nowconst, making it easier to define constants
Breaking changes
- Changed
split_durationfield inSubmitJobParamsandBatchJobfromOption<SplitDuration>toSplitDuration. UseSplitDuration::Noneinstead ofNone
Bug fixes
- Added missing
Nonevariant toSplitDurationenum for explicitly requesting no time-based splitting
0.45.0 - 2026-03-31
Enhancements
- Upgraded DBN version to 0.52.0
- Added
HeartbeatTimeouterror variant:next_recordandfill_bufreturnError::HeartbeatTimeoutif no data is received forheartbeat_interval+ 5 seconds (defaults to 35 seconds) - Changed
SlowReaderBehavior::Skipto send "skip" instead of "drop" to the gateway
0.44.0 - 2026-03-17
Enhancements
- Added support for
progressfield inBatchJobresponse
0.43.0 - 2026-03-04
Enhancements
- Upgraded DBN version to 0.51.0:
- Added logic to set
codewhen upgrading version 1ErrorMsgto newer versions - Upgraded
async-compressiondependency version to 0.4.41 - Upgraded
timeversion to 0.3.47 - Fixed miri issue with potential for unaligned data when decoding DBN through
DbnFsm
- Added logic to set
0.42.0 - 2026-02-24
Enhancements
- Upgraded DBN version to 0.50.0:
- Added
SkippedRecordsAfterSlowReadingto theErrorCodeenum for gateway errors originating from slow client catch-up
- Added
- Upgraded reqwest version to 0.13
0.41.0 - 2026-02-18
Enhancements
- Added three new methods to the Live client for more control over when I/O occurs. Together they provide an alternative to
next_record():fill_buf(): reads available data from the socket into the internal buffer without processing recordstry_next_record(): returns the next record from the internal buffer without performing any I/O. ReturnsOk(None)if no complete records are available in the buffer.is_closed(): returns whether the connection has been closed
- Added
SlowReaderBehaviorenum andslow_reader_behavior()setter on the live client builder to configure gateway behavior when client falls behind - Added
slow_reader_behavior()getter toLiveClient - Upgraded DBN version to 0.49.0:
- Added
encode_recordstoEncodeRecordandAsyncEncodeRecordtraits for more efficient batch encoding - Added
encode_record_refstoEncodeRecordRefandAsyncEncodeRecordReftraits with more efficient vectored I/O implementation for DBN
- Added
Breaking changes
- From DBN:
- Moved
encode_recordsmethod from theEncodeDbntrait toEncodeRecord
- Moved
0.40.0 - 2026-01-27
Enhancements
- Added support for using compression in the live API:
- Added
compression()setter on the live client builder - Added
compression()getter on the live client
- Added
- A new
Unknown(String)variant was added to the reference data enumsCountry,Currency,Event, andEventSubType. This allows for forward compatibility when new variants are added - Upgraded DBN version to 0.48.0:
- Added initial support for splitting DBN files
- Added new publisher for Blue Ocean ATS (
OCEA_MEMOIR_OCEA)
- Added
http_client_buildermethod to the reference and historical client builders to allow more customization over the HTTP client used - Improved logging in Historical and Reference APIs
- The following reference data enums now implement
Display:CountryCurrencyEventEventSubTypeFrequencyOutturnStyleSecurityType
Breaking changes
- Refactor
live::protocolmessages to implement a newRawApiMsgtrait - Move optional session parameters into
SessionOptionsstruct which implementsDefault - As part of adding the new variant to the four reference data enums:
Country,Currency,Event, andEventSubTypeare no longerCopy- The
Errortype of theFromStrimplementation was changed toInfallible: any unknown string will be parsed to theUnknownvariant - The
as_strmethod on these enums was removed: useas_refinstead
Eventhas been marked non-exhaustivehistorical::ClientBuilderandreference::ClientBuilderare no longerClone
Bug fixes
- From DBN:
- Fixed issue where
AsyncDynReaderinstances created fromwith_buffer()would only decode the first frame of multi-frame Zstandard files
- Fixed issue where
0.39.0 - 2026-01-20
Enhancements
- Upgraded DBN version to 0.47.0:
- Added new off-market publisher for Cboe Futures Exchange (
XCBF_PITCH_XOFF) - Added new
StatTypevariants to be used byXCBF.PITCHdataset:UpperPriceLimitLowerPriceLimitBlockVolumeVenueSpecificVolume1
- Upgraded
timeversion to 0.3.45
- Added new off-market publisher for Cboe Futures Exchange (
- Improved documentation of heartbeat intervals
0.38.0 - 2025-12-16
Breaking changes
- Changed
Error::BadArgument::param_namefrom aStringto a&'static str
Bug fixes
- Fixed panic on failed write during authentication
0.37.0 - 2025-12-09
Enhancements
- Added optional
chronofeature for convertingchronodate and datetime types toDateRange,DateTimeRange, andSubscription::start(credit: William Nelson) - Upgraded DBN version to 0.45.0:
- Added new venue, dataset, and publisher for Cboe Futures Exchange (
XCBF.PITCH)
- Added new venue, dataset, and publisher for Cboe Futures Exchange (
Breaking changes
- Changed the default to
truefor themap_symbolsparameter inSubmitJobParams::builder()for JSON and CSV encodings - Moved
DateTimeLiketrait to top level
Bug fixes
- Fixed checksum verification for resumed downloads in
batch().download(). Previously, it would erroneously fail
0.36.0 - 2025-11-19
Enhancements
- Added support for using built-in range syntax for specifying date and datetime ranges in the historical API, e.g.
date!(2020-01-01)..=date!(2020-12-31) - Changed
metadata().get_dataset_range(),metadata().list_schemas(), andmetadata().list_unit_prices()to accept anyimpl AsRef<str>as the dataset parameter - Upgraded DBN version to 0.44.0:
- Added logic to set
codewhen upgrading version 1SystemMsgto newer versions - Added
Dataset::publishers()method to retrieve allPublishervalues for a dataset
- Added logic to set
Breaking changes
- Updated the minimum supported
tokioversion to 1.41, which was released one year ago - Made reference enums
Country,Currency, andEventSubTypenon-exhaustive - Removed variants from
CountryandCurrencythat were not present in any data - Added more variants to
EventSubType
0.35.0 - 2025-10-22
Enhancements
- Initial release with Reference API support
- Upgraded DBN version to 0.43.0:
- Added explicit
Unsetvariant forSystemCodeandErrorCode - Added
Defaultimplementation forSystemCodeandErrorCode
- Added explicit
0.34.1 - 2025-09-30
Enhancements
- Upgraded DBN version to 0.42.0
Bug fixes
- Fixed visibility of fields in
DateRangeandDateTimeRange
0.34.0 - 2025-09-23
Enhancements
- Added batch download retry, resumption, and checksum verification
- Changed setter for
batch::DownloadParamsto accept anyimpl ToStringforfilename_to_download
Breaking changes
- Changed
sha2to a required dependency
0.33.1 - 2025-08-26
Enhancements
- Upgraded DBN version to 0.41.0:
- Added
intervalmethod toRTypeandSchemato get the duration for subsampled schemas likeOhlcv1HandCbbo1S - Changed the default value for
channel_idto beu8::MAXinMboMsgandu16::MAXelsewhere since 0 is a valid channel ID
- Added
0.33.0 - 2025-08-19
Enhancements
- Upgraded DBN version to 0.40.0:
- Added
DbnVersionnew type
- Added
Breaking changes
- Removed
bill_idfield fromBatchJobstruct - Breaking changes from DBN:
- Marked
ErrorCodeandSystemCodenon-exhaustive to allow adding future variants without a breaking change - Added
EndOfIntervalvariant toSystemCodeto notify when all OHLCV bars and subsampled BBO records have been published for a time interval
- Marked
0.32.0 - 2025-08-12
Enhancements
- Upgraded DBN version to 0.39.1:
- Added
PUBLISHER_SPECIFICflag - Improved JSON encoding performance
- Added a
Defaultimplementation forSecurityUpdateAction
- Added
Breaking changes
- Removed unused
Receivedvariant fromJobStateenum
0.31.0 - 2025-07-30
Enhancements
- Changed
timeseries.get_range_to_file()to return a concrete type instead of an impl trait type - Upgraded DBN version to 0.39.0:
- Added
side()andunpaired_side()methods toImbalanceMsgthat convert the fields of the same name to theSideenum - Added
pretty_auction_timeproperty in Python forImbalanceMsg - Added
Defaultimplementation forStatUpdateAction - Added warnings to the floating-point getter methods' docstrings
- Added
actionandts_in_deltagetters toBboMsg - Added
ts_recvgetter toStatusMsg - Added missing floating-point price getters to
InstrumentDefMsgrecord types from all DBN versions - Added more floating-point price getters to
ImbalanceMsg - Added floating-point price getter to
StatMsgandv1::StatMsg
- Added
Breaking changes
- Breaking changes from DBN:
- Changed
SystemMsg::code()andErrorMsg::code()methods to return aResultinstead of anOptionto be consistent with other enum conversion methods - Changed
auction_timefield inImbalanceMsgto be formatted as a timestamp
- Changed
Bug fixes
- Removed unused
S3andDiskvariants fromDeliveryenum
0.30.0 - 2025-07-22
Breaking changes
- Upgraded DBN version to 0.38.0:
- Renamed
Compression::ZStdtoZstdfor consistency
- Renamed
0.29.0 - 2025-07-15
Breaking changes
- Upgraded DBN version to 0.37.0:
- Renamed the following Venue, Dataset, and Publishers:
XEERtoXEEEXEER.EOBItoXEEE.EOBIXEER.EOBI.XEERtoXEEE.EOBI.XEEEXEER.EOBI.XOFFtoXEEE.EOBI.XOFF
- Renamed
CMBP1constant toCMBP_1for consistency withMBP_1andMBP_10
- Renamed the following Venue, Dataset, and Publishers:
Bug fixes
- Removed
Intradayvariant fromDatasetConditionenum
0.28.0 - 2025-07-01
Enhancements
- Added operating system info to the user agent to aid troubleshooting
- Standardized
clientinfo sent by live clients to match historical - Added methods to the client builders to extend the user agents with a custom string
Deprecations
- Deprecated
Historical::with_url(): use the builder to override the base URL - Deprecated the
upgrade_policyparameters fortimseries().get_range()andtimeseries().get_range_to_file(): use theHistoricalclient parameter instead
0.27.1 - 2025-06-25
Enhancements
- Added
range_by_schemafield toDatasetRangestruct
Bug fixes
- Changed type of
last_modified_dateinDatasetConditionDetailtoOption<time::Date>to support missing dates
0.27.0 - 2025-06-10
Enhancements
- Made the buffer size used by the live client when reading from the TCP socket configurable through the
LiveBuilder::buffer_size()method - Added support for using
rustlswithout pulling in OpenSSL.reqwestwith OpenSSL is still the default - Upgraded DBN version to 0.36.0:
- Added support for width, fill, and padding when formatting
pretty::Ts - Added support for sign, precision, width, fill, and padding when formatting
pretty::Px - Optimized pretty formatting of prices and timestamps
- Added support for width, fill, and padding when formatting
Breaking changes
- Changed type of
split_durationtoOption<SplitDuration>to support setting no split duration - Breaking changes from DBN:
- Moved core async decoding and encoding functionality to new traits to match the sync interface and present a standardized interface
- Decoding:
AsyncDecodeRecordRefandAsyncDecodeRecord - Encoding:
AsyncEncodeRecord,AsyncEncodeRecordRef, andAsyncEncodeRecordTextExt
- Decoding:
- Moved core async decoding and encoding functionality to new traits to match the sync interface and present a standardized interface
Deprecations
- Deprecated
LiveClient::connectandLiveClient::connect_with_addrmethods in favor of using the builder so additional optional parameters can be added without a breaking change
Bug fixes
- Fixed bug with deserializing
nullsplit_durationin historicalbatch().list_jobs()
0.26.2 - 2025-06-03
Enhancements
- Improved performance of live client by removing redundant state
- Upgraded DBN version to 0.35.1
Bug fixes
- Fixed handling of
VersionUpgradePolicyintimeseries().get_range()andget_range_to_file() - Bug fixes from DBN:
- Fixed behavior where encoding metadata could lower the
version - Changed
DbnFsm::data()to exclude all processed data - Fixed
Metadata::upgrade()behavior withUpgradeToV2
- Fixed behavior where encoding metadata could lower the
0.26.1 - 2025-05-30
Bug fixes
- Fixed handling of
VersionUpgradePolicyin live client - Fixed default upgrade policies to
UpgradeToV3to match announcement for version 0.26.0
0.26.0 - 2025-05-28
This version marks the release of DBN version 3 (DBNv3), which is the new default. API methods and decoders support decoding all versions of DBN, but now default to upgrading data to version 3.
Enhancements
- Added
From<DatasetRange>conversion forDateTimeRange - Added
is_lastfield to live subscription requests which will be used to improve the handling of split subscription requests - Upgraded DBN version to 0.35.0:
- Version 1 and 2 structs can be converted to version 3 structs with the
Fromtrait - Implemented conversion from
RecordReftoIoSlicefor use withWrite::write_vectored
- Version 1 and 2 structs can be converted to version 3 structs with the
Breaking changes
- Breaking changes from DBN:
- Definition schema:
- Updated
InstrumentDefMsgwith newleg_fields to support multi-leg strategy definitions. - Expanded
assetto 11 bytes andASSET_CSTR_LENto match - Expanded
raw_instrument_idto 64 bits to support more venues. Like other 64-bit integer fields, its value will now be quoted in JSON - Removed
trading_reference_date,trading_reference_price, andsettl_price_typefields which will be normalized in the statistics schema - Removed
md_security_trading_statusbetter served by the status schema
- Updated
- Statistics schema:
- Updated
StatMsghas an expanded 64-bitquantityfield. Like other 64-bit integer fields, its value will now be quoted in JSON - The previous
StatMsghas been moved tov2::StatMsgorStatMsgV2
- Updated
- Changed the default
VersionUpgradePolicytoUpgradeToV3 - Updated the minimum supported
tokioversion to 1.38, which was released one year ago
- Definition schema:
0.25.0 - 2025-05-13
Enhancements
- Increased live subscription symbol chunking size
- Upgraded DBN version to 0.34.0:
- Added a
v3::StatMsgrecord with an expanded 64-bitquantityfield - Added
with_compression_levelmethods toDynWriter,AsyncDynWriter, andAsyncDynBufWriter - Added
DBN_VERSIONconstants to each version module:v1,v2, andv3 - Added
UNDEF_STAT_QUANTITYconstants to each version module - Added statistics compatibility trait
StatRecfor generalizing across different versions of the statistics record - Added
AsRef<[u8]>implementations forRecordEnumandRecordRefEnum - Added new off-market publishers for Eurex, and European Energy Exchange (EEX)
- Added a
Breaking changes
- From DBN:
- Made
Recorda subtrait ofAsRef<[u8]>as all records should be convertible to bytes
- Made
0.24.0 - 2025-04-22
Enhancements
- Upgraded DBN version to 0.33.0:
- Added
SystemCodeandErrorCodeenums to indicate types of system and error messages - Added
code()methods toSystemMsgandErrorMsgto retrieve the enum value if one exists and equivalent properties in Python - Converting a
v1::SystemMsgto av2::SystemMsgnow sets tocodeto the heartbeat value - Added
ASSET_CSTR_LENconstants for the size ofassetfield inInstrumentDefMsgin different DBN versions - Added
encode_record_with_sym()method toAsyncJsonEncoderwhich encodes a record along with its text symbol to match the sync encoder
- Added
Breaking changes
- Breaking changes from DBN:
- Added
codeparameter toSystemCode::new()andErrorMsg::new() - Updated the
rtype_dispatchandschema_dispatchmacro invocations to look more like function invocation - Increased the size of
assetfield inv3::InstrumentDefMsgfrom 7 to 11. TheInstrumentDefMsgV3message size remains 520 bytes.
- Added
0.23.0 - 2025-04-15
Enhancements
- Added
subscriptionstoLiveClientDebugimplementation - Upgraded DBN version to 0.32.0:
- Added
SystemCodeandErrorCodeenums to indicate types of system and error messages - Added
code()methods toSystemMsgandErrorMsgto retrieve the enum value if one exists and equivalent properties in Python - Converting a
v1::SystemMsgto av2::SystemMsgnow sets tocodeto the heartbeat value - Added
OrdandPartialOrdimplementations for all enums andFlagSetto allow for use in ordered containers likeBTreeMap - Added
decode_records()method toAsyncDbnDecoderandAsyncDbnRecordDecoderwhich is similar to the sync decoder methods of the same name - Upgraded
pyo3version to 0.24.1 - Upgraded
timeversion to 0.3.41
- Added
Breaking changes
- Added new
idfield to liveSubscription, which will be used for improved error messages - Added new
idparameter tolive::protocol::SubRequest::new()method - Breaking changes from DBN:
- Added
codeparameter toSystemCode::new()andErrorMsg::new() - Updated the
rtype_dispatchandschema_dispatchmacro invocations to look more like function invocation - Removed deprecated
datasetmodule. The top-levelDatasetenum and itsconstas_str()method provide the same functionality for all datasets - Removed deprecated
SymbolIndex::get_for_rec_ref()method
- Added
0.22.0 - 2025-04-01
Enhancements
- Added an implementation
From<Date>forDateRangeandDateTimeRangeto make it simpler to request a single full day's worth of data - Added conversions between
DateRangeandDateTimeRange - Added conversions from
timeseries::GetRangeParams,timeseries::GetRangeToFileParams, anddbn::Metadatatosymbology::ResolveParams - Upgraded DBN version to 0.30.0:
- Added support for mapping symbols from instrument definitions to
PitSymbolMapwith a newon_instrument_def()method - Added instrument definition compatibility trait
InstrumentDefRecfor generalizing across different versions of the instrument definition record - Added
OrdandPartialOrdimplementations for all enums andFlagSetto allow for use in ordered containers likeBTreeMap - Added
decode_records()method toAsyncDbnDecoderandAsyncDbnRecordDecoderwhich is similar to the sync decoder methods of the same name - Removed deprecated
datasetmodule. The top-levelDatasetenum and itsconstas_str()method provide the same functionality for all datasets - Removed deprecated
SymbolIndex::get_for_rec_ref()method
- Added support for mapping symbols from instrument definitions to
0.21.0 - 2025-03-18
Enhancements
- Improved error when calling
LiveClient::next_record()on an instance that hasn't been started - Improved error when calling
LiveClient::start()on an instance that has already been started - Upgraded DBN version to 0.29.0:
- Added new venues, datasets, and publishers for ICE Futures US, ICE Europe Financials products, Eurex, and European Energy Exchange (EEX)
- Added new
SkipBytesandAsyncSkipBytestraits which are a subset of theSeekandAsyncSeektraits respectively, only supporting seeking forward from the current position - Deprecated
AsyncRecordDecoder::get_mut()andAsyncDecoder::get_mut()as modifying the inner reader after decoding any records could lead to a corrupted stream and decoding errors
0.20.0 - 2025-02-12
Enhancements
- Added
LiveClient::reconnect()andLiveClient::resubscribe()methods to make it easier to resume a live session after losing the connection to the live gateway - Added
subscriptions()andsubscriptions_mut()getters toLiveClientfor getting all active subscriptions - Added
shutdown()method tolive::protocolto clean up the active session - Downgraded to tracing span level on
LiveClient::next_record()to "debug" to reduce performance impact - Added
From<&[&str]>andFrom<[str; N]>implementations forSymbols
Breaking changes
- Changed
LiveClient::close()to take&mut selfrather than an owned value toselfnow that clients can be reused through thereconnect()method - Changed
LiveClient::subscribe()to take aSubscriptionparameter rather than a&Subscriptionbecause it will now store theSubscriptionstruct internally - Upgraded DBN version to 0.28.0:
- Added
CommoditySpotInstrumentClassvariant and madeInstrumentClassnon-exhaustive to allow future additions without breaking changes
- Added
0.19.0 - 2025-01-21
Enhancements
- Upgraded DBN version to 0.27.0:
- Updated enumerations for unreleased US equities datasets and publishers
- Added new venue
EQUSfor consolidated US equities - Added new dataset
EQUS.MINIand new publishersEQUS.MINI.EQUSandXNYS.TRADES.EQUS
Bug fixes
- Changed historical metadata methods with
symbolsparameter to use aPOSTrequest to allow for requesting supported maximum of 2000 symbols
0.18.0 - 2025-01-08
Enhancements
- Upgraded DBN version to 0.26.0:
- Added
v3namespace in preparation for future DBN version 3 release. DBN version 2 remains the current and default version - Added
v3::InstrumentDefMsgrecord with new fields to support normalizing multi-leg strategy definitions- Removal of statistics-schema related fields
trading_reference_price,trading_reference_date, andsettl_price_type - Removal of the status-schema related field
md_security_trading_status
- Removal of statistics-schema related fields
- Added initial support for merging DBN:
- Decoding streams:
MergeDecoderandMergeRecordDecoderstructs - Metadata:
MergeDecoderstruct andMetadata::merge()method - In the CLI: specify more than one input file to initiate a merge
- Decoding streams:
- Eliminated
unsafeinFromimplementations for record structs from different versions
- Added
0.17.0 - 2024-12-17
Enhancements
- Upgraded DBN version to 0.25.0:
- Added
v1andv2namespaces in DBN to allow unambiguously referring to the record types for a given DBN version regardless of whether the record type has changed - Changed
dataset()method onMetadataBuilderto accept animpl ToStringso nowDatasetand&strcan be passed directly - Changed async DBN decoding to return
Ok(None)when an incomplete record remains in the stream. This matches the existing behavior of sync DBN decoding
- Added
- Upgraded
thiserrorversion to 2.0
Breaking changes
- Removed deprecated
Packagingenum andpackagingfield that's no longer supported by the API - As part of the DBN version upgrade:
VersionUpgradePolicy::Upgradewas renamed toUpgradeToV2- Changed async DBN decoding to return
Ok(None)when an incomplete record remains in the stream
0.16.0 - 2024-11-12
Enhancements
- Upgraded DBN version to 0.23.1:
- Added floating-point getters for price fields
- Added new IntelligentCross venues
ASPN,ASMT, andASPI - Upgraded
thiserrorversion to 2.0
Deprecations
- Deprecated
Packagingenum andpackagingfield onSubmitJobParamsandBatchJob. These will be removed in a future version. All files from a batch job can be downloaded with thebatch().download()method on the historical client
0.15.0 - 2024-10-22
Enhancements
- Upgraded DBN version to 0.23.0:
- Added new
NoneActionvariant that will be gradually rolled out to historical and liveGLBX.MDP3data - Added consistent escaping of non-printable and non-ASCII values when text encoding
c_charfields - Implemented
DefaultforActionandSide - Implemented missing
Serializefor (withserdefeature enabled) forVenue,Dataset,Publisher,Compression,SType,Schema, andEncoding
- Added new
0.14.1 - 2024-10-08
Enhancements
- Upgraded DBN version to 0.22.1:
- Fixed buffer overrun in
c_chars_to_stron non-null terminated input - Combined
_reserved3andreserved4fields inCbboMsg
- Fixed buffer overrun in
0.14.0 - 2024-10-01
Enhancements
- Made several previously internal functions public to allow advanced users more customization and piecemeal usage of the live API:
ApiKeySymbols::to_chunked_api_string()live::protocolmodule containing implementations of the raw API messages
- Changed from
logcrate totracingfor better diagnostics
0.13.0 - 2024-09-25
Deprecations
- Deprecated
Packaging::Tar. Users should switch toPackaging::Zip. This variant will be removed in a future version when it is no longer supported by the API
0.12.1 - 2024-08-27
Enhancements
- Added
Intradayvariant toDatasetConditionin preparation for intraday data being available from the historical API - Upgraded DBN version to 0.20.1 for new publisher values for
XCIS.BBOTRADESandXNYS.BBOTRADES
0.12.0 - 2024-07-30
Breaking changes
- Upgraded DBN version to 0.20.0:
- Renamed
SType::Nasdaqvariant toSType::NasdaqSymbol - Renamed
SType::Cmsvariant toSType::CmsSymbol
- Renamed
0.11.4 - 2024-07-16
Enhancements
- Upgraded DBN version to 0.19.1 with fixes for
BBOMsgrecord struct
0.11.3 - 2024-07-09
Enhancements
- Upgraded DBN version to 0.19.0 with new
BBOMsgrecord struct
0.11.2 - 2024-06-25
Enhancements
- Added
historical::timeseries::get_range_to_filemethod to persist the data stream to a given path before returning anAsyncDbnDecoder
0.11.1 - 2024-06-11
Enhancements
- Added getter for
heartbeat_intervaltoLiveClient
Bug fixes
- Fixed potential incorrect DNS resolution when overriding the live gateway address with
live::Builder::addr
0.11.0 - 2024-06-04
Enhancements
- Added configurable
heartbeat_intervalparameter for live client that determines the timeout before heartbeatSystemMsgrecords will be sent. It can be configured via theheartbeat_intervalandheartbeat_interval_smethods of thelive::ClientBuilder - Added
addrfunction tolive::ClientBuilderfor configuring a custom gateway address without usingLiveClient::connect_with_addrdirectly - Upgraded DBN version to 0.18.1
Breaking changes
- Added
heartbeat_intervalparameter toLiveClient::connectandLiveClient::connect_with_addr - Removed deprecated
start_dateandend_datefields fromDatasetRangestruct
0.10.0 - 2024-05-22
Enhancements
- Added
use_snapshotattribute toSubscription, defaults to false - Upgraded reqwest version to 0.12
Breaking changes
- Upgraded DBN version to 0.18.0
- Changed type of
flagsinMboMsg,TradeMsg,Mbp1Msg,Mbp10Msg, andCbboMsgfromu8to a newFlagSettype with predicate methods for the various bit flags as well as setters. Theu8value can still be obtained by calling theraw()method- Improved
Debugformatting
- Improved
- Switched
DecodeStreamfromstreaming_iteratorcrate tofallible_streaming_iteratorto allow better notification of errors - Changed default value for
stype_inandstype_outinSymbolMappingMsgtou8::MAXto match C++ client and to reflect an unknown value. This also changes the value of these fields when upgrading aSymbolMappingMsgV1to DBNv2
- Changed type of
0.9.1 - 2024-05-15
Bug fixes
- Fixed build when only
livefeature is enabled
0.9.0 - 2024-05-14
Enhancements
- Added
startandendfields to theDatasetRangestruct which are instances ofOffsetDateTimeand provide time resolution and an exclusive end - Upgraded DBN version to 0.17.1
Deprecations
- The
start_dateandend_datefields of theDatasetRangestruct are deprecated and will be removed in a future release
0.8.0 - 2024-04-01
Enhancements
- Upgraded DBN version to 0.17.0
- Added new record types and schema variants for consolidated BBO and subsampled BBO
- Added
VolatilityandDeltaStatTypevariants
Breaking changes
- Removed previously-deprecated
live::SymbolMap. Please usedatabento::dbn::PitSymbolMapinstead
0.7.1 - 2024-03-05
Enhancements
- Improve error handling when a historical HTTP error response is not in the expected JSON format
0.7.0 - 2024-03-01
Enhancements
- Documented cancellation safety of
LiveClientmethods - Documented
live::Subscription::startis based onts_event - Allow constructing a
DateRangeandDateTimeRangewith anendbased on atime::Duration - Implemented
DebugforLiveClient,live::ClientBuilder,HistoricalClient,historical::ClientBuilder,BatchClient,MetadataClient,SymbologyClient, andTimeseriesClient - Derived
Cloneforlive::ClientBuilderandhistorical::ClientBuilder - Added
ApiKeytype for safely derivingDebugfor types containing an API key
Breaking changes
- Changed default
upgrade_policyinLiveBuilderandGetRangeParamstoUpgradeso by default the primary record types can always be used - Simplified
DateRangeandDateTimeRangeby removingFwdFillvariant that didn't work correctly - Upgraded DBN version to 0.16.0
- Updated
StatusMsgin preparation for status schema release - Fixed handling of
ts_outwhen upgrading DBNv1 records to version 2 - Fixed handling of
ErrorMsgV1andSystemMsgV1inrtypedispatch macros
- Updated
0.6.0 - 2024-01-16
Enhancements
- Relaxed version requirements for
tokio,tokio-util, andthiserror
Breaking changes
- Upgraded DBN version to 0.15.0
- Added support for larger
SystemMsgandErrorMsgrecords - Improved
Debugimplementations for records andRecordRef - Improved panic messages for
RecordRef::get
- Added support for larger
- Upgraded
typed-builderto 0.18
Bug fixes
- Fixed documentation for
endinDateRange::ClosedandDateTimeRange::Closed
0.5.0 - 2023-11-23
This release adds support for DBN v2.
DBN v2 delivers improvements to the Metadata header symbology, new stype_in and stype_out fields for SymbolMappingMsg, and extends the symbol field length for SymbolMappingMsg and InstrumentDefMsg. The entire change notes are available here. Users who wish to convert DBN v1 files to v2 can use the dbn-cli tool available in the databento-dbn crate. On a future date, the Databento live and historical APIs will stop serving DBN v1.
This release is fully compatible with both DBN v1 and v2, and so should be seamless for most users.
Enhancements
- Made
LiveClient::next_record,dbn::decode::AsyncDbnDecoder::decode_recordanddecode_record_ref, anddbn::decode::AsyncRecordDecoder::decodeanddecode_refcancel safe. This makes them safe to use within atokio::select!statement - Improved error reporting for
HistoricalClientwhen receiving an error from Databento's API - Improved error messages around API keys
- Improved performance of CSV and JSON encoding
- Added support for emitting warnings from historical API response headers, such as for future deprecations
- Added
symbol_mapmethod to theResolutionstruct returned bysymbology::resolvethat returns aTsSymbolMap - Added
PartialEqandEqimplementations for parameter builder classes - Added
upgrade_policysetter to theLiveClientbuilder and a getter to theLiveClient - Added
upgrade_policyoptional setter to thetimeseries::GetRangeParamsbuilder
Breaking changes
- Upgraded
dbnto 0.14.2. There are several breaking changes in this release as we begin migrating to DBN encoding version 2 (DBNv2) in order to support the ICE exchange:- Renamed
dbn::InstrumentDefMsgtodbn::compat::InstrumentDefMsgV1and added a newdbn::InstrumentDefMsgwith a longerraw_symbolfield - Renamed
dbn::SymbolMappingMsgtodbn::compat::SymbolMappingMsgV1and added a newdbn::SymbolMappingMsgwith longer symbol fields and newstype_inandstype_outfields - Added
symbol_cstr_lenfield todbn::Metadata
- Renamed
- Made
Errornon-exhaustive, meaning it no longer be exhaustively matched against, and new variants can be added in the future without a breaking change - Added an
upgrade_policyparameter toLiveClient::connectandconnect_with_addr. The builder provides a more stable API since new parameters are usually introduced as optional
Deprecations
- Deprecated
live::SymbolMapin favor ofdatabento::dbn::PitSymbolMap
0.4.2 - 2023-10-23
Enhancements
- Upgraded
dbnto 0.13.0 for improvements to symbology helpers - Upgraded
tokioto 1.33 - Upgraded
typed-builderto 0.17
Bug fixes
- Fixed panic in
LiveClientwhen gateway returned an auth response without thesuccesskey
0.4.1 - 2023-10-06
Enhancements
- Added support for changing datetime format used in batch job responses
- Upgraded
dbnto 0.11.1
0.4.0 - 2023-09-21
Enhancements
- Added
pretty_pxoption forbatch::submit_job, which formats prices to the correct scale using the fixed-precision scalar 1e-9 (available for CSV and JSON text encodings) - Added
pretty_tsoption forbatch::submit_job, which formats timestamps as ISO 8601 strings (available for CSV and JSON text encodings) - Added
map_symbolsoption tobatch::submit_job, which appends the raw symbol to every record (available for CSV and JSON text encodings) reducing the need to look at thesymbology.jsonfile - Added
split_symbolsoption forbatch::submit_job, which will split files by raw symbol - Added
encodingoption tobatch::submit_jobto allow requesting non-DBN encoded data through the client - Added
map_symbols,pretty_px, andpretty_tstoBatchJobresponse
0.3.0 - 2023-09-13
Enhancements
- Added
SymbolMaptype to help maintain up-to-date symbol mappings with live data - Added chunking to handle subscribing to many symbols for the Live client
- Upgraded DBN version to 0.10.2 for easier historical symbology
0.2.1 - 2023-08-25
Enhancements
- Upgraded DBN version to 0.9.0 for publisher improvements to support OPRA
0.2.0 - 2023-08-10
Breaking changes
- Changed
metadata::list_publishersto return aVec<PublisherDetail> metadata::list_fields:- Changed return type to
Vec<FieldDetail> - Made
encodingandschemaparameters required - Removed
datasetparameter
- Changed return type to
metadata::list_unit_prices:- Changed return type to
Vec<UnitPricesForMode> - Made
datasetparameter required - Removed
modeandschemaparameters
- Changed return type to
0.1.0 - 2023-08-02
- Initial release with support for historical and live data