C++
0.69.0 - Upcoming
Enhancements
- Added
Tbbovariant toRTypefor TBBO records in DBN version 4 - Added
Unsubscribe()toLiveBlockingandLiveThreadedfor removing symbols from a live session's subscriptions - Added
Unsubscriptions()toLiveBlockingandLiveThreaded - Modified
Resubscribe()to resubscribe only to active subscriptions
Breaking changes
- Added
sent_atfield toLiveSubscription
0.68.1 - 2026-09-30
Enhancements
- Optimized DBN decoding to decode records in batches through libdbn_c
- Upgraded libdbn_c version to 0.71.0
- Upgraded default cpp-httplib version to 0.57.1
Bug fixes
- Removed clang-format target creation when not the main project
0.68.0 - 2026-09-18
Enhancements
- Added new venue, dataset, and publishers for Databento Core Indices
- Upgraded libdbn_c version to 0.70.0
- Upgraded default cpp-httplib version to 0.54.1
0.67.0 - 2026-09-01
Enhancements
- Added
UnsubscribeAckto theSystemCodeenum for acknowledging unsubscribe requests - Added support for building against cpp-httplib 0.52.0 and newer, which changed the underlying container of
httplib::Paramsandhttplib::Headers - Removed the
httplib.hinclude from the public headers, cutting about a third of the preprocessed size ofrecord.hpp,historical.hpp, andlive.hpp - Upgraded libdbn_c version to 0.69.0
- Upgraded default cpp-httplib version to 0.53.1
Bug fixes
- Fixed incorrect count in DBN metadata causing decoding to read into the start of records
- Fixed CMake error when the consuming project already defines a
zstd::libzstdtarget (credit: Mamadou Babaei)
0.66.0 - 2026-08-25
Enhancements
- Added a dependency on libdbn_c, the C interface to the DBN library, which CMake downloads as a prebuilt library or can be built from source with Cargo
- Decoding DBN is now done via the C interface of the DBN library rather than a separate C++ implementation
- Added CMake configurations
DATABENTO_BUILD_DBN_FROM_SOURCEfor always building libdbn_c from source andDATABENTO_DBN_SOURCE_DIRfor building it from a local DBN checkout - Added an overload of
Historical::MetadataListFieldsthat accepts adatasetparameter. Without it, the returned fields are for the latest DBN encoding version, which may not match a specific dataset's schema - Changed
LiveBlocking::Reconnectto reuse its DBN decoder rather than rebuilding it, so the read buffer keeps the capacity it grew
Breaking changes
- Changed
Historical::BatchListJobsto request the new short response format of thebatch.list_jobsendpoint and returnstd::vector<BatchJobShort>, which contains only theid,state, andts_receivedfields for each job. UseHistorical::BatchGetJobDetailsto fetch the complete details of an individual job - Removed
DbnDecoder::DecodeMetadataVersionAndSize,DbnDecoder::DecodeMetadataFields,DbnDecoder::DecodeRecordCompat, andDbnDecoder::NeedsUpgrade, which the DBN library now handles
Bug fixes
- Changed decoding DBN version 3 data with
VersionUpgradePolicy::UpgradeToV2to throw aDbnResponseError, which the policy was already documented to do, instead of decoding the data as-is
Deprecations
- Deprecated
Historical::BatchListJobsFull, which returns the full job details likeBatchListJobsdid previously. Thebatch.list_jobsendpoint will stop returning full job details at a future date, at which point this method will be removed
0.65.0 - 2026-08-18
Enhancements
- Added
STypevariantsListingId,IssuerId, andSecurityIdfor the reference data API
0.64.0 - 2026-08-11
Breaking changes
- Changed
LiveBlockingto throw aLiveApiErrorinstead of anInvalidArgumentErrorwhen the gateway rejects authentication, so the reason is no longer mislabeled as an invalidkeyargument
Bug fixes
- Fixed Live connect timeouts being reported as
Operation now in progress, and added the gateway, port, and timeout to the error message - Fixed a Live connect interrupted by a signal failing instead of continuing to wait for the connection
- Fixed only the first address being tried when a Live gateway hostname resolves to more than one
0.63.0 - 2026-08-04
Enhancements
- Added
ReplayDataAgedOutvariant toErrorCode - Added new venues, datasets, and publishers for JPX
- Upgraded default date version to 3.0.5
0.62.1 - 2026-07-28
Enhancements
- Upgraded default cpp-httplib version to 0.51.0
Bug fixes
- Fixed
DbnEncoder::EncodeRecordoverload forWithTsOutfailing to compile
0.62.0 - 2026-07-14
Enhancements
- Changed
VersionUpgradePolicyto be backed bystd::uint8_twith explicit values starting at 1 - Added
HistoricalBuilder::SetHttpClientConfigfor customizing the underlying HTTP client
0.61.0 - 2026-07-07
Enhancements
- Added new publisher values for Cboe Titanium Cboe Global Indices Feed
- Added
StatTypevariantsMwcbLevel1,MwcbLevel2, andMwcbLevel3 - Added
StatTypevariantsAuctionCollarReferencePrice,AuctionCollarUpperPrice, andAuctionCollarLowerPrice - Upgraded default cpp-httplib version to 0.49.0
Breaking changes
- Renamed the following Venue, Dataset, and Publisher:
CGIFtoMAINCGIF.TITANIUMtoMAIN.CGIFCGIF.TITANIUM.CGIFtoMAIN.CGIF.MAIN
0.60.0 - 2026-06-16
Enhancements
- Added
MatchAlgorithmvariantAllocation
0.59.0 - 2026-06-02
Enhancements
- Added
Historical::BatchGetJobDetailsfor querying the details for a single batch job - Added new venues, datasets, and publishers for US Equities Securities Information Processors
Bug fixes
- Fixed
HistoricalBuilder::SetAddressnot working with HTTPS
0.58.0 - 2026-05-26
- Added logging for gateway
ErrorMsgandSystemMsgrecords inLiveBlocking. Suppress by raising the minimum level or by passing aNullLogReceiver - Upgraded default cpp-httplib version to 0.46.0
0.57.0 - 2026-05-12
Enhancements
- Added
Case(),DetailMessage(), andDocsUrl()getters onHttpResponseError. These parse the JSON error envelope returned by the historical API and expose its fields directly - Included the error
case(when present) in the message returned byHttpResponseError::what()
Breaking changes
- Removed
HttpResponseError::ResponseBody(). The raw body is still embedded in the message returned bywhat(); use the newCase(),DetailMessage(), andDocsUrl()getters for structured access
0.56.0 - 2026-05-05
Enhancements
- Added
IndexInstrumentClassvariant - Added
StatTypevariantsIndicativeClosePriceandVenueSpecificPrice1
0.55.0 - 2026-04-28
Enhancements
- Improved
DbnDecoderthroughput on current-version data andAsIsworkloads by caching whether the upgrade policy-version combination requires upgrading, skipping the per-recordDecodeRecordCompatdispatch on the fast path - Made
detail::Buffershifts explicit to avoid redundant moves during record decoding - Added new publisher values for Cboe Titanium Cboe Global Indices Feed
- Added
YeartoSplitDurationenum for yearly historical batch job submissions - Upgraded default cpp-httplib version to 0.43.1
- Upgraded default nlohmann/json version to 3.12.0
0.54.0 - 2026-04-21
Enhancements
- Added new publisher values for OPRA MEMX MX2 Options and IEX Options
0.53.0 - 2026-04-08
Enhancements
- Added
TryNextRecordandFillBuffertoLiveBlockingfor more fine-grained control around I/O - Added
TimeoutConfstruct andSetTimeoutConf()builder method for configuring connect and auth timeouts on the Live client (defaults to 10s and 30s) - Added
SessionId()andTimeouts()getters toLiveBlockingandLiveThreaded
0.52.0 - 2026-03-31
Enhancements
- Added client-side heartbeat timeout detection:
NextRecordthrowsHeartbeatTimeoutErrorif no data is received forheartbeat_interval+ 5 seconds (defaults to 35 seconds) - Changed
SlowReaderBehavior::Skipto send "skip" instead of "drop" to the gateway
Breaking changes
NextRecordnow throwsLiveApiErrorinstead ofDbnResponseErrorwhen the gateway closes the session. Code catchingDbnResponseErrorfor this case should be updated
0.51.0 - 2026-03-17
Enhancements
- Added support for
progressfield inBatchJobresponse - Added blocking (pull-based)
TimeseriesGetRangeoverloads that return aDbnStorewithGetMetadata()andNextRecord()methods, unifying the consumption pattern across historical, live, and file sources - Generalized
DbnFileStoreintoDbnStorewhich accepts anyIReadablesource.DbnFileStoreis retained as a type alias for backwards compatibility - Upgraded default
httplibversion to 0.37.2
0.50.0 - 2026-03-03
Enhancements
- Added logic to set
codewhen upgrading version 1ErrorMsgto newer versions
0.49.0 - 2026-02-24
Enhancements
- Added
SkippedRecordsAfterSlowReadingto theErrorCodeenum for gateway errors originating from slow client catch-up
0.48.0 - 2026-02-18
Enhancements
- Added
SlowReaderBehaviorenum andLiveBuilder::SetSlowReaderBehavior()to configure gateway behavior when client falls behind - Added
SlowReaderBehavior()getter toLiveBlockingandLiveThreaded
Bug fixes
- Added conversion for missing schemas for function
RTypeFromSchema - Added explicit optional construction in
json_helpers.hpp(credit: Enrico Detoma)
0.47.0 - 2026-02-04
Enhancements
- Added Zstd compression support to live clients which can be enabled with
LiveBuilder::SetCompression(). It's disabled by default - Added
Compression()getter toLiveBlockingandLiveThreaded - Upgraded default
httplibversion to 0.30.1
Breaking changes
- Added an overload to the
ReadSomemethod onIReadablefor timeout support
0.46.1 - 2026-01-27
Enhancements
- Added new publisher for Blue Ocean ATS (
OCEA_MEMOIR_OCEA)
0.46.0 - 2026-01-20
Enhancements
- Added new off-market publisher for Cboe Futures Exchange (
XCBF_PITCH_XOFF) - Added new
StatTypevariants to be used byXCBF.PITCHdataset:UpperPriceLimitLowerPriceLimitBlockVolumeVenueSpecificVolume1
0.45.0 - 2025-12-10
Enhancements
- Added download retry, resumption, and checksum verification to
Historical::BatchDownload - Added new venue, dataset, and publisher for Cboe Futures Exchange (
XCBF.PITCH) - Upgraded default
httplibversion to 0.28.0
0.44.0 - 2025-11-18
Enhancements
- Added logic to set
codewhen upgrading version 1SystemMsgto newer versions
Bug fixes
- Added missing
<cstddef>include toconstants.hpp(credit: Ognian Milanov)
0.43.0 - 2025-10-22
Enhancements
- Made
Unseta fully-supported variant ofSystemCodeandErrorCode
Breaking changes
- Removed
modeparameter inHistorical::MetadataGetCost()
0.42.0 - 2025-08-19
Enhancements
- Added
EndOfIntervalvariant toSystemCode
Breaking changes
- Removed
bill_idfield fromBatchJobstruct
0.41.0 - 2025-08-12
Enhancements
- Added static
Builder()methods to the clients - Improved debug logging in live clients
- Added
PUBLISHER_SPECIFICflag
Breaking changes
- Removed unused
Receivedvariant fromJobStateenum
0.40.0 - 2025-07-29
Enhancements
- Added
OhlcvEodvariant toRType - Added documentation to more enums and record structs
- Aligned string representation of
RTypewith Rust
Breaking changes
- Switched to
std::bytefor most padding fields in record structs. These fields are now initialized by default - Hidden padding fields now begin with
_
Bug fixes
- Added missing
IndexTs()method tov1::InstrumentDefMsg,v2::InstrumentDefMsg, andv1::SymbolMappingMsg - Fixed error in templated overload of
DbnDecoder::EncodeRecord() - Removed unused
DiskandS3variants fromDeliveryenum
0.39.1 - 2025-07-22
Bug fixes
- Fixed potential corrupted data in
DbnFileStore::Replay
0.39.0 - 2025-07-15
Breaking changes
- Renamed the following Venue, Dataset, and Publishers:
XEERtoXEEEXEER.EOBItoXEEE.EOBIXEER.EOBI.XEERtoXEEE.EOBI.XEEEXEER.EOBI.XOFFtoXEEE.EOBI.XOFF
Bug fixes
- Fixed potential corrupted records when upgrading DBN versions in live clients
- Removed unused
Intradayvariant fromDatasetConditionenum
0.38.2 - 2025-07-01
Enhancements
- Added
LogPlatformInfofunction which logs the client version, compiler, and operating system info to aid troubleshooting - Added compiler and 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
Bug fixes
- Fixed missing implementation for
LiveBuilder::SetBufferSize() - Fixed checking of warnings from server in Historical API in
TimeseriesGetRange()andTimeseriesGetRangeToFile()
0.38.1 - 2025-06-25
Enhancements
- Added
range_by_schemafield toDatasetRangestruct - Changed historical
TimeseriesGetRange()andTimeseriesGetRangeToFile()methods to use aPOSTrequest to allow for requesting supported maximum of 2000 symbols - Added logging around
Historical::BatchDownload - Changed the following Venue, Publisher, and Dataset descriptions:
- "ICE Futures Europe (Financials)" renamed to "ICE Europe Financials"
- "ICE Futures Europe (Commodities)" renamed to "ICE Europe Commodities"
Bug fixes
- Fixed handling of
nulllast_modified_dateinMetadataGetDatasetConditionresponse - Fixed default
ShouldLogimplementation
0.38.0 - 2025-06-10
Enhancements
- Made the buffer size used by the live clients when reading from the TCP socket configurable through the
LiveBuilder::SetBufferSize()method - Added log level prefix to
ConsoleLogReceiveroutput - Added
iomanipcompatibility: fill, precision, and width topretty::Px(formerlyFixPx) - Added new
pretty::Tshelper type for human-readable formatting ofUnixNanos
Breaking changes
- Live client instances can only be created through the
LiveBuilderclass - Changed
HeartbeatInterval()getters onLiveBlockingandLiveThreadedto return anstd::optional - Added new optional
ShouldLogvirtual method toILogReceiverto filter the levels of log messages that will be sent to the receiver
Deprecations
- Deprecated
FixPxin favor ofpretty::Pxwhich has consistent naming with the API and the Python and Rust client libraries
Bug fixes
- Ensure
CPPHTTPLIB_OPENSSL_SUPPORTis defined at all locations wherecpp-httplibis included
0.37.1 - 2025-06-03
Bug fixes
- Fixed issue where not all data was processed in
Historical::TimeseriesGetRange() - Fixed issue with pointer arithmetic in
Buffer::Write() - Fixed issue where more data than necessary was copied in
Buffer::Shift()
0.37.0 - 2025-06-03
Breaking changes
- Changed the type of the
output_dirparameter inHistoricalClient::BatchDownload()to astd::filesystem::pathand the return type tostd::filesystem::path - Changed the type of the
file_pathparameter inHistoricalClient::TimeseriesGetRangeToFile()to astd::filesystem::path - Changed the type of the
file_pathparameter in theDbnFileStore,InFileStream, andOutFileStreamconstructors to astd::filesystem::path - Made
stype_inandschemaoptionals inMetadatato align with howMetadatais represented in other languages and removed the booleanhas_mixed_stype_inandhas_mixed_schemafields
Bug fixes
- Fixed behavior where encoding metadata could lower the
version
0.36.0 - 2025-05-27
This version marks the release of DBN version 3 (DBNv3), which is the new default. API methods and DbnDecoder support decoding all versions of DBN, but now default to upgrading data to version 3.
Enhancements
- Added
UpgradeToV3variant toVersionUpgradePolicyenum - Version 1 and 2 structs can be converted to version 3 structs with templated
Upgrademethod - Metadata will now always be encoded with a length divisible by 8 bytes for better alignment
- Added
is_lastfield to live subscription requests which will be used to improve the handling of split subscription requests
Breaking changes
- Release of DBN version 3:
- Definition schema:
- Updated
InstrumentDefMsgwith newleg_fields to support multi-leg strategy definitions. - 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
assetto 11 bytes andkAssetCstrLento match
- Updated
- Statistics schema:
- Updated
StatMsghas an expanded 64-bitquantityfield.kUndefStatQuantityhas been updated to match - The previous
StatMsghas been moved tov2::StatMsgorStatMsgV2
- Updated
- Definition schema:
Bug fixes
- Fixed "Zstd error decompressing: Operation made no progress over multiple calls, due to output buffer being full" error with
TimeseriesGetRange - Fixed missing implementation of
HistoricalBuilder::SetLogReceiver
0.35.1 - 2025-05-20
Bug fixes
- Added missing
operator<<andToStringimplementations forCmbp1Msg
0.35.0 - 2025-05-13
Enhancements
- Added a
v3::StatMsgrecord with an expanded 64-bitquantityfield - Added
kDbnVersionconstants to each version namespace:v1,v2, andv3 - Added
kUndefStatQuantityconstants to each version namespace - Added new off-market publishers for Eurex, and European Energy Exchange (EEX)
- Increased live subscription symbol chunking size
0.34.2 - 2025-05-06
Bug fixes
- Fixed potential for unaligned records in live and historical streaming requests
0.34.1 - 2025-04-29
Enhancements
- Added
InstitutionalPrioritizationvariant toMatchingAlgorithm
Bug fixes
- Improved memory usage of historical streaming requests (
TimeseriesGetRange)
0.34.0 - 2025-04-22
Enhancements
- Added
SystemCodeandErrorCodeenums to indicate types of system and error messages - Converting a
v1::SystemMsgto av2::SystemMsgnow sets tocodeto the heartbeat value - Introduced
kAssetCstrLenconstant containing the size ofassetfield inInstrumentDefMsg
Breaking changes
- Increased the size of
assetfield inv3::InstrumentDefMsgfrom 7 to 11. Thev3::InstrumentDefMsgmessage size remains 520 bytes. - Set minimum CMake version to 3.24
- Changed type of
codefield inSystemMsgtoSystemCode - Changed type of
codefield inErrorMsgtoErrorCode
Bug fixes
- Changed
TriStateto a regular enum to handle unexpected values - Fixed
ccachesupport - Changed to explicitly only support being built as a static library
0.33.0 - 2025-04-15
Enhancements
- Added
idfield toLiveSubscriptionrequests, which will be used for improved error messages - Removed Windows-only
direntdependency
Breaking changes
- Changed
DbnDecoder,FileStream,IReadable,IWritableto work onbytes
0.32.1 - 2025-04-07
Bug fixes
- Fixed CMake error when
zstdTargets.cmakeexists - Reverted
vcpkgbaseline change
0.32.0 - 2025-04-02
Enhancements
- Upgraded default date version to 3.0.3
- Updated
vcpkgbaseline
Breaking changes
- Upgraded default cpp-httplib version to 0.20.0 which requires OpenSSL >= 3.0
0.31.0 - 2025-03-18
Enhancements
- Added new venues, datasets, and publishers for ICE Futures US, ICE Europe Financial products, Eurex, and European Energy Exchange (EEX).
0.30.0 - 2025-02-11
Enhancements
- Added
Resubscribe()methods toLiveBlockingandLiveThreadedto make it easier to resume a live session after losing the connection to the live gateway - Added
Subscriptions()getter methods toLiveBlockingandLiveThreadedfor getting all active subscriptions - Added
CommoditySpotInstrumentClassvariant
0.29.0 - 2025-02-04
Enhancements
- Fixed documentation for using external versions of libraries (credit: ElBellaCiao)
Breaking changes
- Updated the minimum supported C++ standard to C++17
0.28.0 - 2025-01-21
Breaking changes
- Updated enumerations for unreleased datasets and publishers.
Enhancements
- Added new dataset
EQUS.MINIand new publishersEQUS.MINI.EQUS,XNYS.TRADES.EQUS
Bug fixes
- Changed historical metadata methods with
symbolsparameter to use aPOSTrequest to allow for requesting supported maximum of 2000 symbols
0.27.0 - 2025-01-07
Breaking changes
- Converted the
UserDefinedInstrumentenum class to an enum to safely allow handling invalid data and adding future variants - Updated the value of the
kMaxRecordLenconstant for the changes toInstrumentDefMsgin version 3
Enhancements
- 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
0.26.0 - 2024-12-17
Breaking changes
- Removed deprecated
Packagingenum andpackagingfield that's no longer supported by the API - Renamed
VersionUpgradePolicy::UpgradetoUpgradeToV2in preparation for a future DBN version 3
Enhancements
- Created separate namespaces for each DBN version to create a consistent way to refer to record types from a particular DBN version regardless of whether the record changed between versions
0.25.0 - 2024-11-12
Enhancements
- Added new IntelligentCross venues
ASPN,ASMT, andASPI
Deprecations
- Deprecated
Packagingenum andpackagingfield onBatchJob. These will be removed in a future version. All files from a batch job can be downloaded with theBatchDownloadmethod on the historical client
0.24.0 - 2024-10-22
Enhancements
- Added new
NoneActionvariant that will be gradually rolled out to historical and liveGLBX.MDP3data
0.23.0 - 2024-09-25
Enhancements
- Added new
Cmbp1Msg - Added new consolidated publisher values for
XNAS.BASICandDBEQ.MAX
Breaking changes
- Changed the layout of
CbboMsgto better matchBboMsg - Renamed
Schema::CbbotoSchema::Cmbp1
Deprecations
- Deprecated
Packing::Tarand renamed it toTarDeprecated. This variant will be removed in a future version when it is no longer supported by the API
0.22.0 - 2024-08-27
Enhancements
- Added
Intradayvariant toDatasetConditionin preparation for intraday data being available from the historical API - Added new publisher values for
XCIS.BBOTRADESandXNYS.BBOTRADES
Breaking changes
- Removed previously deprecated
DatasetCondition::Badvariant
0.21.0 - 2024-07-30
Enhancements
- Added new publisher value for
DBEQ.SUMMARY
Breaking changes
- Renamed
SType::Nasdaqvariant toSType::NasdaqSymbol - Renamed
SType::Cmsvariant toSType::CmsSymbol
Bug fixes
- Added missing
ToStringandFromStringbranches forSType::NasdaqSymbolandSType::CmsSymbol - Removed
has_header_vvariable template that broke C++11 compatibility
0.20.1 - 2024-07-16
Enhancements
- Improved installation with
CMake: license is now installed, transitive dependencies are configured when importing package
0.20.0 - 2024-07-09
This release adds support for encoding DBN within the C++ client. It also improves historical symbology support with the new TsSymbolMap class that handles mapping historical records to a text symbol. To support this class, several types for date fields were changed from strings or ints to date::year_month_day.
Enhancements
- Added
TsSymbolMapto support historical symbology where mappings change between days - Added
DbnEncoderclass for encoding DBN data - Added blocking API similar to
LiveBlockingtoDbnFileStorewith newGetMetadataandNextRecordmethods - Added
BboMsgrecord struct for futurebbo-1mandbbo-1sschemas - Added
PitSymbolmap constructor fromMetadataand adate::year_month_day - Added
Metadata::CreateSymbolMapandMetadata::CreateSymbolMapForDatemethods for creating symbology maps from historical metadata - Added blocking API similar to
LiveBlockingtoDbnFileStore - Added
SymbologyResolution::CreateSymbolMapmethod for creating a symbology map from a symbology resolution response - Added
InFileStreamandOutFileStreamhelper classes for reading and writing binary output respectively
Breaking changes
- Added new dependency on Howard Hinnant's date library
- Added
ILogReceiver*parameter to allDbnDecoderconstructors and oneDbnFileStoreconstructor - Removed type
StrMappingInterval.MappingIntervalis now also used inSymbologyResolution. - Changed
Bbo1sMsgandBbo1mMsgto be aliases forBboMsg - Changed type of
start_dateandend_dateinMappingIntervaltodate::year_month_day - Added
stype_inandstype_outfields toSymbologyResolutionto support creating aTsSymbolMap
0.19.1 - 2024-06-25
Enhancements
- Added
Upgrade()method toMetadatato update the metadata fields according to aVersionUpgradePolicy - Added new publisher values for
XNAS.BASICandXNAS.NLS
Bug fixes
- Fixed issue where
Metadatawasn't upgraded when passingVersionUpgradePolicy::Upgrade
0.19.0 - 2024-06-04
Enhancements
- Added configurable
heartbeat_intervalparameter for live clients that determines the timeout before heartbeatSystemMsgrecords will be sent. It can be configured via theSetHeartbeatIntervalmethod of theLiveBuilder - Added
SetAddressmethod toLiveBuilderfor configuring a custom gateway address without using the constructor directly - Added new
UncrossingPriceStatTypevariant - Added new publisher values for
XNAS.BASIC - Added
SetDataset(Dataset)overload toLiveBuilder - Added new off-market publisher values for
IFEU.IMPACTandNDEX.IMPACT
Breaking changes
- Added
heartbeat_intervalparameter to theLiveconstructors - Removed
start_dateandend_datefields fromDatasetRangestruct in favor ofstartandend - Removed live
Subscribemethod overloads withuse_snapshotparameter in favor of separateSubscribeWithSnapshotmethod
Bug fixes
- Fixed overloading of live
Subscribemethods - Fixed live subscribing with default-constructed
UnixNanos - Fixed descriptions for
FINNandFINYpublishers
0.18.1 - 2024-05-22
Enhancements
- Added live
Subscribefunction overload withuse_snapshotparameter - Added
GetIfmethod toRecordthat allowsifchaining for handling multiple record types - Added record type checking to
Record::Getmethod to catch programming errors and prevent reading invalid data - Added
ToStringforRecord
Bug fixes
- Added missing symbol chunking for live
Subscribeoverloads withconst std::string&startparameter
0.18.0 - 2024-05-14
Breaking changes
- Changed
FlagSetto be more class-like:- Added predicate methods and setters for each bit flag
- Improved string formatting
- Removed bitwise operators. Bitwise operations can be performed by first casting to a
std::uint8_tor calling theRaw()method
- Changed format of
display_factorandprice_ratioto a fixed-precision decimal forInstrumentDefMsgandInstrumentDefMsgV1to match existing values and DBN crate - Changed format of
unit_of_measure_qtyto a fixed-precision decimal forInstrumentDefMsgV1to matchInstrumentDefMsg
0.17.1 - 2024-04-08
Enhancements
- Added support for Conan-installed zstd (credit: Jakob Lövhall)
Bug fixes
- Added missing copying of
ts_eventwhen upgrading structs from DBNv1 to DBNv2 - Fixed setting of compiler warnings and warnings that had accumulated
0.17.0 - 2024-04-01
Enhancements
- Added
StatusMsgrecord, andStatusAction,StatusReason,TradingEvent, andTriStateenums - Added
CbboMsgrecord and correspondingConsolidatedBidAskPairstructure - Added new enum values for
SchemaandRTypecorresponding to new schemascbbo,cbbo-1s,cbbo-1m,tcbbo,bbo-1s,bbo-1m - Changed format
unit_of_measure_qtyto a fixed-precision decimal - Added logic to skip
find_packagecall ifnlohmann_jsonandhttplibtargets already exist (credit: Asen Kovachev) - Add specific instructions for installing dependencies on Ubuntu and macOS (credit: Camron Godbout)
Bug fixes
- Fixed out-of-order initialization in
DbnDecoder(credit: Jakob Lövhall)
Breaking changes
- Renamed publishers from deprecated datasets to their respective sources (
XNAS.NLSandXNYS.TRADESrespectively)
Deprecations
- Deprecated dataset values
FINN.NLSandFINY.TRADES
0.16.0 - 2024-03-01
Enhancements
- Added new publisher values for consolidated DBEQ.MAX
- Added constructor to
WithTsOutthat updateslengthto the correct value to account for the extra 8 bytes - Upgraded default cpp-httplib version to 0.14.3 (last to still support OpenSSL 1.1)
- Upgraded default nlohmann_json version to 3.11.3
Breaking changes
- Changed default
upgrade_policytoUpgradeso by default the primary record types can always be used - Renamed
dummyfield inImbalanceMsgandStatMsgtoreserved
Bug fixes
- Fixed handling of
ts_outwhen decoding DBNv1 and upgrading to version 2 - Fixed missing logic to upgrade
ErrorMsgV1andSystemMsgV1when decoding DBN withVersionUpgradePolicy::Upgrade - Added missing
StatType::Vwapvariant used in the ICE datasets - Added missing
ToStringandoperator<<handling forStatType::ClosePriceandStatType::NetChange - Fixed potential for invalid reads when decoding C strings in
DbnDecoder
0.15.0 - 2024-01-16
Breaking changes
- Increased size of
SystemMsgandErrorMsgto provide better messages from Live gateway- Increased length of
errandmsgfields for more detailed messages - Added
is_lastfield toErrorMsgto indicate the last error in a chain - Added
codefield toSystemMsgandErrorMsg, although currently unused - Added new
is_lastparameter toErrorMsg::new - Decoding these is backwards-compatible and records with longer messages won't be sent during the DBN version 2 migration period
- Renamed previous records to
ErrorMsgV1andSystemMsgV1
- Increased length of
0.14.1 - 2023-12-18
Enhancements
- Added
PitSymbolMaphelper for keeping track of symbology mappings in Live - Added new publisher value for OPRA MIAX Sapphire
Bug fixes
- Fixed misaligned read undefined behavior when decoding records
0.14.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 the change should be seamless for most users.
Enhancements
- Added support for DBN encoding version 2 (DBNv2), affecting
SymbolMappingMsg,InstrumentDefMsg, andMetadata- Version 1 structs can be converted to version 2 structs with the
ToV2()method
- Version 1 structs can be converted to version 2 structs with the
- Added
symbol_cstr_lenfield toMetadatato indicate the length of fixed symbol strings - Added
stype_inandstype_outfields toSymbolMappingMsgto provide more context with live symbology updates - Added
IndexTsmethods to every record type which returns the primary timestamp - Added
VersionUpgradePolicyenum to allow specifying how to handle decoding records from prior DBN versions - Added
InstrumentDefMsgV2andSymbolMappingMsgV2type aliases - Added
kDbnVersionconstant for current DBN version - Added
kSymbolCstrLen,kSymbolCstrLenV1, andkSymbolCstrLenV2constants for the length of fixed-length symbol strings in different DBN versions - Added new publisher values in preparation for IFEU.IMPACT and NDEX.IMPACT datasets
- Added new publisher values for consolidated DBEQ.BASIC and DBEQ.PLUS
- Added
kMaxRecordLenconstant for the length of the largest record type - Added ability to convert
FlagSetto underlying representation
Breaking changes
- The old
InstrumentDefMsgis nowInstrumentDefMsgV1incompat.hpp - The old
SymbolMappingMsgis nowSymbolMappingMsgV1incompat.hpp - Converted the following enum classes to enums to allow safely adding new variants:
SecurityUpdateActionandSType - Renamed
dummytoreservedinInstrumentDefMsg - Removed
reserved2,reserved3,reserved4, andreserved5fromInstrumentDefMsg - Moved position of
strike_pricewithinInstrumentDefMsg - Removed deprecated
SecurityUpdateAction::Invalidvariant
0.13.1 - 2023-10-23
Enhancements
- Added new publisher values in preparation for DBEQ.PLUS
- Added
ToIso8601forUnixNanosfor converting to human-readable ISO8601 datetime string - Added
kUndefTimestampandkUndefStatQuantityconstants - Added flag
kTobfor top-of-book messages
0.13.0 - 2023-09-21
Enhancements
- Added
pretty_pxoption forBatchSubmitJob, which formats prices to the correct scale using the fixed-precision scalar 1e-9 (available for CSV and JSON text encodings) - Added
pretty_tsoption forBatchSubmitJob, which formats timestamps as ISO 8601 strings (available for CSV and JSON text encodings) - Added
map_symbolsoption toBatchSubmitJob, 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 forBatchSubmitJob, which will split files by raw symbol - Added
encodingoption toBatchSubmitJobto allow requesting non-DBN encoded data through the client - Added
map_symbols,pretty_px, andpretty_tstoBatchJobresponse - Added
ARCX.PILLAR.ARCXpublisher - Added
ClosePriceandNetChangeStatTypes used in theOPRA.PILLARdataset
Breaking changes
- Remove
default_valueparameter fromHistorical::SymbologyResolve
0.12.0 - 2023-08-24
Enhancements
- Added the
Publisher,Venue, andDatasetenums - Added
Publishergetters toRecordandRecordHeaderto convert thepublisher_idto its enum
0.11.0 - 2023-08-10
Enhancements
- Added
raw_instrument_idto definition schema - Added
operator==andoperator!=implementations forDatasetConditionDetailandDatasetRange
Breaking changes
- Changed
MetadataListPublishersto return avector<PublisherDetail> MetadataListFields:- Changed return type to
vector<FieldDetail> - Made
encodingandschemaparameters required - Removed
datasetparameter
- Changed return type to
MetadataListUnitPrices:- Changed return type to
vector<UnitPricesForMode> - Made
datasetparameter required - Removed
modeandschemaparameters
- Changed return type to
Bug fixes
- Fixed installation of
nlohmann_jsonwhen using bundled version - Added missing
operator!=implementations forMetadata,MappingInterval, andSymbolMapping
0.10.0 - 2023-07-20
Enhancements
- Added preliminary support for Windows
- Added
LiveThreaded::BlockForStopto make it easier to wait for one or more records before closing the session - Changed
TimeseriesGetRangeto request a Zstd-compressed result for more efficient data transfer - Switched
BatchSubmitJobto use form data to avoid query param length limit - Switched
SymbologyResolveto use POST request with form data to avoid query param length limit
Breaking changes
- Changed size-related fields and
limitparameters to usestd::uint64_tfor consistency across architectures
Bug fixes
- Remove usage of non-portable
__PRETTY_FUNCTION__
0.9.1 - 2023-07-11
Enhancements
- Added constants for dataset IDs for Databento Equity Basic and OPRA Pillar
- Added
const char*getters to records for fixed-lengthchararrays - Added
RTypegetter toRecord
Bug fixes
- Added batching for live subscriptions to avoid hitting max message length
- Fixed bug in Zstd decompression
- Fixed
Historical::BatchDownloadtruncating file before writing each chunk
0.9.0 - 2023-06-13
Enhancements
- Added
Reconnectmethods toLiveBlockingandLiveThreaded - Added optional
exception_callbackargument toLiveThreaded::Startto improve error handling options - Added batch download support data files (
condition.jsonandsymbology.json) - Added support for logging warnings from Historical API
- Relaxed 10 minute minimum request time range restriction
Breaking changes
- Changed
use_ts_outdefault tofalse
Bug fixes
- Fixed missing definition for
operator==forImbalanceMsg
0.8.0 - 2023-05-16
Enhancements
- Changed
endandend_dateto optional to support new forward-fill behaviour
Breaking changes
- Renamed
booklevelMBP field tolevelsfor brevity and consistent naming - Removed
open_interest_qtyandcleared_volumefields from definitions schema that were always unset
0.7.0 - 2023-04-28
Enhancements
- Added initial support for live data with
LiveBlockingandLiveThreadedclients - Added support for statistics schema
- Added
SystemMsgandErrorMsgrecords for use in live data - Added
strike_price,strike_price_currency, andinstrument_classtoInstrumentDefMsg - Added
FixedPxhelper class for formatting fixed prices - Added configurable log receiver
ILogReceiver - Added
instrument_class,strike_price, andstrike_price_currencyto definition schema - Added additional
conditionvariants forDatasetConditionDetail(degraded, pending, missing) - Added additional member
last_modified_datetoDatasetConditionDetail - Added
has_mixed_schema,has_mixed_stype_in, andts_outtoMetadatato support live data - Added optional
compressionparameter toBatchSubmitJob
Breaking changes
- Removed
relatedandrelated_security_idfromInstrumentDefMsg - Renamed
BatchJob.costtocost_usdand value now expressed as US dollars - Renamed
SType::ProductIdtoSType::InstrumentIdandSType::NativetoSType::RawSymbol - Renamed
RecordHeader::product_idtoinstrument_id - Renamed
InstrumentDefMsg::symboltoraw_symbol - Renamed
SymbolMapping::native_symboltoraw_symbol - Changed
expirationandactiontype toUnixNanos - Changed some fields to enums in
InstrumentDefMsg
Deprecations
- Deprecated
SType::Smartto split intoSType::ParentandSType::Continuous
Bug fixes
- Fixed parsing of
BatchSubmitJobresponse - Fixed invalid read in
DbnDecoder - Fixed memory leak in
TryCreateDir
0.6.1 - 2023-03-28
Breaking changes
- Removed usage of unreliable
std::ifstream::readsome
Bug fixes
- Fixed Zstd decoding of files with multiple frames
0.6.0 - 2023-03-24
Enhancements
- Added support for imbalance schema
- Added support for decoding
ts_outfield - Added flags
kSnapshotandkMaybeBadBook
Breaking changes
- Removed
record_countfromMetadata - Changed
Historical::BatchDownloadto return the paths of the downloaded files
0.5.0 - 2023-03-13
Enhancements
- Added
Historical::MetadataGetDatasetRange
Breaking changes
- Changed
MetadataGetDatasetConditionto returnvector<DatasetConditionDetail> - Removed
MetadataListCompressions(redundant with docs) - Removed
MetadataListEncodings(redundant with docs) - Removed optional
startandendparams fromMetadataListSchemas(redundant) - Renamed
FileBentotoDbnFileStore
0.4.0 - 2023-03-02
Enhancements
- Added live gateway resolution
- Added
SymbolMappingMsgandErrorMsgrecords - Added
ActionandSideenums - Added
available_start_dateandavailable_end_datetoDatasetConditionInfo - Made
start_dateandend_dateoptional forHistorical::MetadataGetDatasetCondition - Improved API for
flagsrecord fields - Added
PKGBUILDto demonstrate installation - Disabled unit testing by default
Breaking changes
- Removed
is_full_universeandis_examplefields fromBatchJob - Refactored rtypes
- Introduced separate rtypes for each OHLCV schema
- Renamed DBZ to DBN
- Renamed
DbzParsertoDbnDecoder
- Renamed
- Renamed
TimeseriesStreamtoTimeseriesGetRange - Changed
kAllSymbolsrepresentation
Bug fixes
- Fixed usage of as a system library
0.3.0 - 2023-01-06
Enhancements
- Added support for definition schema
- Added option for CMake to download gtest
- Updated
Flagenum
Breaking changes
- Standardized getter method names to pascal case
- Renamed
is_full_booktois_full_universe - Renamed
TickMsgtoMboMsg - Changed
flagsfields to unsigned
Bug fixes
- Fixed cancellation in
Historical::TimeseriesStream - Fixed race condition in
Historical::TimeseriesStreamexception handling - Fixed gtest linker error on macOS
0.2.0 - 2022-12-01
Enhancements
- Added
Historical::MetadataGetDatasetCondition - Improved Zstd CMake integration
Bug fixes
- Fixed requesting all symbols for a dataset
0.1.0 - 2022-11-07
- Initial release with support for historical data