Skip to content

Releases: Alparse/databento-dotnet

v5.3.6

Choose a tag to compare

@Alparse Alparse released this 07 Sep 05:51

Fixed

  • BatchSubmitJobAsync ignored splitDuration — the C# SplitDuration enum (None, Day, Week, Month) was passed to databento-cpp by raw integer, but databento-cpp orders its enum Day, Week, Month, Year, None. Every value landed one step off: Month was submitted as year, Week as month, Day as week, and None as day. The native wrapper now maps the value explicitly in both directions, so BatchJob.SplitDuration returned from submit and list calls is also decoded correctly. (Issue #37)
  • Unsupported batch options now fail clearlyCompression.Gzip, Delivery.S3, and Delivery.Disk have no databento-cpp counterpart and were sent to the server as "Unknown". BatchSubmitJobAsync now throws DbentoException naming the unsupported value.

Added

  • SplitDuration.Year — yearly splitting for batch jobs, matching databento-cpp v0.58.0.

Install: dotnet add package Databento.Client --version 5.3.6

v5.3.5

Choose a tag to compare

@Alparse Alparse released this 25 Jul 01:41

Fixed

  • ConsolidatedBidAskPair.AskPublisher always 0 — deserialization read from reserved padding at byte offset 26 instead of the actual ask_pb field at offset 28 per the DBN spec. Affects all record types carrying consolidated levels: Cmbp1 (rtype 177), Cbbo (rtypes 192/193), and Tcbbo (rtype 194). (Issue #36)

Install: dotnet add package Databento.Client --version 5.3.5

v5.3.4

Choose a tag to compare

@Alparse Alparse released this 28 Jun 23:32

What's Changed

Added

  • stype_in and limit parameters for metadata APIsGetCostAsync, GetRecordCountAsync, GetBillableSizeAsync, and GetBillingInfoAsync now accept SType stypeIn and ulong limit parameters, enabling queries with Continuous, Parent, Smart, and other symbol types (Issue #35)

Changed

  • Native wrapper updateddbento_metadata_get_cost, dbento_metadata_get_record_count, dbento_metadata_get_billable_size, and dbento_metadata_get_billing_info now pass stype_in and limit through to databento-cpp's full overloads

Notes

  • Non-breaking: existing overloads without stypeIn continue to work identically (default SType.RawSymbol)
  • Matches databento-cpp's full MetadataGetCost(dataset, range, symbols, schema, stype_in, limit) overload

Full Changelog: v5.3.3...v5.3.4

v5.3.3

Choose a tag to compare

@Alparse Alparse released this 30 May 00:19

What's Changed

Fixed

  • NOMINMAX guards on native wrappers — prevents <windows.h> min/max macro conflicts that could cause compilation failures (Issue #24)

Changed

  • Thread safety documentation — added class-level and method-level thread safety remarks to ILiveClient and ILiveBlockingClient documenting the databento-cpp calling convention: complete all Subscribe calls before StartAsync, await each call sequentially
  • README thread safety callout — added thread safety guidance between LiveClient and LiveBlockingClient API reference sections
  • Coding agent guide — added pitfall #6 documenting concurrent Subscribe call risks with correct/incorrect code examples

Full Changelog: v5.3.2...v5.3.3

v5.3.2

Choose a tag to compare

@Alparse Alparse released this 27 May 03:56

What's Changed

Fixed

  • Pin databento-cpp to v0.58.0 — prevents builds from pulling broken intermediate states from main branch (#24)
  • Fix FormUrlEncodedContent disposal in retry loops — content was created outside the retry lambda, causing ObjectDisposedException on retry attempts in Reference API methods (PR #28)
  • Fix XML doc comments — escape S&P as S&P, qualify BatchSubmitJobAsync cref (PR #25)
  • Fix CA1826 — replace FirstOrDefault() with direct indexer in FileDataSource (PR #27)

Changed

  • Deprecate caching API — WithMemoryCache(), WithDiskCache(), and related types marked [Obsolete] with guidance to use WithFileSource() (Issue #29)
  • PlaybackController implements IDisposable — disposes internal SemaphoreSlim; called automatically during data source disposal (Issue #29)
  • StreamAsync XML documentation — detailed docs explaining live mode vs backtest mode behavior (Issue #30)
  • Add ConfigureAwait(false) across Reference API methods (PR #28)
  • Remove CA1805 default initializations across 10 files (PR #26)
  • Remove dead _apiKey field from LiveClient and ReferenceClient (PR #31)

Testing

  • 427 tests passing across 13 test suites
  • Verified against both project references and NuGet package

v5.3.0

Choose a tag to compare

@Alparse Alparse released this 15 Mar 02:51

Breaking Change

SchemaDateRange.Start and .End changed from string to DateTimeOffset (Issue #21)

DatasetRange already used DateTimeOffset for its Start/End properties, but SchemaDateRange (used in DatasetRange.RangeBySchema) was using raw strings. This inconsistency meant consumers had to manually parse dates to do comparisons or arithmetic.

What changed

  • SchemaDateRange.Start: stringDateTimeOffset
  • SchemaDateRange.End: stringDateTimeOffset
  • Added SchemaDateRange.Duration computed property (matches DatasetRange.Duration)

How to fix if affected

If your code assigned SchemaDateRange.Start or .End to a string variable:

// Before (v5.2.x)
string start = schemaRange.Start;

// After (v5.3.0)
string start = schemaRange.Start.ToString("o");  // ISO 8601
// Or better — just use DateTimeOffset directly
DateTimeOffset start = schemaRange.Start;

Other changes

  • [JsonIgnore] added to Duration on both DatasetRange and SchemaDateRange to prevent serialization leakage
  • Cleaned up .sln file: removed 23 gitignored project references that showed as absent for public repo clones (Issue #19 follow-up)

v5.2.3

Choose a tag to compare

@Alparse Alparse released this 01 Mar 01:17

Fixes & Features

Issue #18: Fix native DLL loading failures (debug builds)

  • Root cause: libcrypto-3-x64.dll, libssl-3-x64.dll, zstd.dll, legacy.dll were debug builds requiring VCRUNTIME140D.dll / ucrtbased.dll (only available with Visual Studio)
  • All native DLLs rebuilt as Release configuration
  • Removed unused zlib1.dll
  • Improved NativeLibraryLoader diagnostics with debug-build detection

Issue #19: Fix build-native.ps1 vcpkg/FetchContent conflict

  • Added vcpkg.json manifest so CMake FetchContent properly installs OpenSSL/zstd via vcpkg
  • Build script now requires vcpkg and validates no debug dependencies in shipped DLLs

Issue #20: Add stype_in to Live API subscribe methods

  • New overloads for SubscribeAsync, SubscribeWithReplayAsync, SubscribeWithSnapshotAsync on both ILiveClient and ILiveBlockingClient
  • Enables continuous symbols (e.g., "MNQ.v.0" with SType.Continuous)
  • Fully backward compatible — existing overloads default to SType.RawSymbol

Install

dotnet add package Databento.Client --version 5.2.3

v5.2.2

Choose a tag to compare

@Alparse Alparse released this 27 Feb 04:22

Fix DllNotFoundException for native libraries (Issue #17)

Changes

  • Rewrite .targets file — Use explicit <Copy> tasks instead of fragile <None> + CopyToOutputDirectory for reliable native DLL deployment from NuGet packages
  • Add buildTransitive support — Transitive package consumers now also get native DLLs copied to output
  • Improved diagnosticsNativeLibraryLoader now throws DllNotFoundException with detailed search path info, OS/arch, and dependency status instead of silently failing

Install

dotnet add package Databento.Client --version 5.2.2

v5.2.0

Choose a tag to compare

@Alparse Alparse released this 25 Jan 22:57

What's New

New Feature: keepZip option for BatchDownloadAsync (Issue #15)

Added a new overload to BatchDownloadAsync that creates a zip archive of downloaded files:

// Download and create a zip archive
var paths = await client.BatchDownloadAsync(outputDir, jobId, keepZip: true);
var zipPath = paths[0];  // Returns path to {jobId}.zip

Behavior:

  • Downloads all files from the batch job
  • Creates a local {jobId}.zip archive containing all files
  • Deletes the extracted files after zipping
  • Returns the path to the zip file

Non-Breaking Change

This release uses default interface implementation (C# 8+), so existing code that implements IHistoricalClient will continue to work without modification.

Documentation

  • Updated API_REFERENCE.md with new method signature and examples
  • Updated API_Classification.md with method details
  • Added BatchDownloadKeepZip.Example demonstrating the feature

Full Changelog: v5.1.4...v5.2.0

v5.1.1

Choose a tag to compare

@Alparse Alparse released this 16 Dec 03:01

Patch release to fix README badges in NuGet package.