Skip to content

Releases: Alparse/databento-dotnet

v5.1.1

16 Dec 03:01

Choose a tag to compare

Patch release to fix README badges in NuGet package.

v5.1.0

16 Dec 02:53

Choose a tag to compare

Release v5.1.0: Fix SecurityMasterRecord JSON Deserialization

Bug Fixes

Fixed JSON deserialization errors in SecurityMasterRecord when calling ReferenceClient.SecurityMaster.GetLastAsync():

Field Before After Reason
LotSize int? decimal? API returns Number (can be 1.0)
VotePerSec int? decimal? API returns Number (can be 1.0)
SharesOutstanding long? string? API returns String
SharesOutstandingDate DateOnly? string? API returns String

Installation

dotnet add package Databento.Client --version 5.1.0

v4.3.0: Fix BlockUntilStoppedAsync and StopAsync behavior

10 Dec 03:06

Choose a tag to compare

What's New

Bug Fixes

  • Fixed BlockUntilStoppedAsync and StopAsync behavior (#9)
    • BlockUntilStoppedAsync() now correctly blocks until StopAsync() is called
    • BlockUntilStoppedAsync(timeout) properly waits for the specified timeout duration
    • Implemented TaskCompletionSource-based signaling matching C++ BlockForStop behavior

Documentation

  • Added Client Lifecycle section clarifying that clients cannot be restarted after stopping
  • Added BlockUntilStoppedAsync usage examples for event-based streaming patterns
  • Updated API Reference and AI Coding Agents guide

Changes

  • LiveClient.cs - Added _stoppedTcs TaskCompletionSource field and updated StopAsync/BlockUntilStoppedAsync
  • BacktestingClient.cs - Applied same pattern for consistency

Installation

dotnet add package Databento.Client --version 4.3.0

Full Changelog

v4.2.0...v4.3.0

v4.1.1 - Documentation Overhaul

29 Nov 06:52

Choose a tag to compare

What's Changed

Documentation Overhaul

  • API_REFERENCE.md: Simplified from 3,723 → 364 lines (90% reduction) - now serves as quick-start guide
  • API_Classification.md: Updated for v4.1.1, added resilience methods, architecture diagram shows .NET 8.0/9.0
  • README.md: Complete symbol mapping examples for Live, LiveBlocking, and Historical clients

Details

  • Added WithKeyFromEnv() to all builder tables
  • Added resilience methods to LiveClientBuilder documentation:
    • WithAutoReconnect(bool)
    • WithRetryPolicy(RetryPolicy)
    • WithHeartbeatTimeout(TimeSpan)
    • WithResilienceOptions(ResilienceOptions)

NuGet Package: https://www.nuget.org/packages/Databento.Client/4.1.1

v4.1.0 - Production Release

29 Nov 03:31

Choose a tag to compare

🚀 Production Release - v4.1.0

This is the first stable production release of databento-dotnet.

✨ New Features

  • .NET 9 Support: Now targets both .NET 8 and .NET 9
  • Resilience Features: Comprehensive connection resilience (opt-in, non-breaking)
    • RetryPolicy class with exponential backoff and jitter
    • ResilienceOptions for configuring auto-reconnect behavior
    • ConnectionHealthMonitor for detecting stale connections
    • New builder methods: WithAutoReconnect(), WithRetryPolicy(), WithHeartbeatTimeout(), WithResilienceOptions()
    • Pre-built policies: RetryPolicy.Default, RetryPolicy.Aggressive, ResilienceOptions.HighAvailability

🐛 Bug Fixes

  • CRITICAL: Fixed SEHException (STATUS_STACK_BUFFER_OVERRUN) crash during LiveClient disposal
    • Implemented proper thread synchronization using databento-cpp's BlockForStop() method
    • await using pattern now works reliably without crashes

📦 Installation

dotnet add package Databento.Client --version 4.1.0

📚 Documentation

See CHANGELOG.md for full details.

v4.0.1-beta

26 Nov 03:35

Choose a tag to compare

v4.0.1-beta Pre-release
Pre-release

v4.0.1-beta

Overview

This release adds new replay examples and updates badges. All Bug*_Proof.Internal validation projects confirmed working correctly.

What's New

  • ✅ Added 5 new replay examples for live streaming demonstrations
  • ✅ LiveStreaming.Replay.Example - Full replay demo with trade display
  • ✅ LiveBlocking.Replay.Example - Blocking pattern with replay
  • ✅ LiveAuthentication.Replay.Example - Authentication flow demo
  • ✅ LiveStreaming.Readme.Replay.Example - Simplified README-style example
  • ✅ LiveThreaded.ExceptionCallback.Replay.Example - Exception handling with replay

Bug Fixes

  • Fixed LiveStreaming.Replay.Example not completing execution (removed blocking Console.ReadKey())
  • Enhanced trade data display across all replay examples

Improvements

  • Updated downloads badge to 5.4K
  • Updated version badges to v4.0.1-beta
  • Improved .gitignore patterns for internal examples

Validation

All Bug*_Proof.Internal projects validated successfully:

  • Bug1: GLBX.MDP3 Ohlcv1D (172 bars)
  • Bug3: GLBX.MDP3 Trades with Parent symbology (100 trades)
  • Bug4: GLBX.MDP3 ALL_SYMBOLS definitions
  • Bug5: XEUR.EOBI FGBM.FUT definitions
  • Bug6: IFEU.IMPACT BRN.FUT definitions (42,000+ records)
  • Bug7: IFEU.IMPACT Statistics schema (20,000+ records)

Installation

NuGet Package

dotnet add package Databento.Client --version 4.0.1-beta

.csproj Reference

<PackageReference Include="Databento.Client" Version="4.0.1-beta" />

Full Changelog

v4.0.0-beta...v4.0.1-beta

v4.0.0-beta - Breaking Change: 64-bit RawInstrumentId

25 Nov 06:12

Choose a tag to compare

🚨 Breaking Change

InstrumentDefMessage.RawInstrumentId changed from uint to ulong to support venues with 64-bit instrument IDs.

Why?

European venues like Eurex (XEUR.EOBI) use 64-bit IDs that exceed uint.MaxValue.

Example: Eurex spread ID 0x010002B100000060 = 72,060,553,270,394,976 > 4,294,967,295

Quick Fix (30 seconds)

// OLD
uint rawId = instrumentDef.RawInstrumentId;

// NEW
ulong rawId = instrumentDef.RawInstrumentId;

Most users unaffected: Code using var continues to work unchanged.

See MIGRATION_GUIDE_v4.md for details.


✨ What's New

3 New Examples

  • IntradayReplay2.Example - LiveClient streaming with replay mode
  • Get_Most_Recent_Market_Open.Example - Market open time calculation
  • List_Available_Schemas.Example - Schema discovery via MetadataListSchemas

Improvements

  • InstrumentDefinitionDecoder.Example → Renamed to "OHLCV Bar Decoder" (properly demonstrates OHLCV-1S schema)
  • TestsScratchpad.Internal → Fixed stream lifetime management
  • Documentation → Improved LiveClient vs LiveBlockingClient distinction
  • API_REFERENCE.md → Added 5 complete working examples (487 lines)

📦 Installation

dotnet add package Databento.Client --version 4.0.0-beta

📋 Full Changelog

Changed (BREAKING):

  • InstrumentDefMessage.RawInstrumentId: uintulong

Added:

  • 3 new example projects
  • Complete working examples in API_REFERENCE.md

Fixed:

  • InstrumentDefinitionDecoder.Example renamed and rewritten
  • TestsScratchpad.Internal stream lifetime management
  • Documentation improvements

📚 Resources

v3.0.29-beta - Symbology Parameter Support

23 Nov 10:35

Choose a tag to compare

What's New

Added symbology parameter support to historical data queries, enabling filtering by instrument type using parent symbology.

Features

  • ✨ New GetRangeAsync overloads with stypeIn and stypeOut parameters
  • ✨ New GetRangeToFileAsync overloads with symbology parameters
  • ✨ Parent symbology support (e.g., ES.FUT for all E-mini S&P 500 futures, QQQ.OPT for all QQQ options)
  • ✨ Full-stack implementation from C++ wrapper through C API to C# interface

Examples

  • 📚 Added FuturesFilter.Example demonstrating parent symbology usage
  • 📚 Added ParentSymbolValidator for input validation with typo correction
  • 📚 Added GetParentSymbols helper for discovering available parent symbols
  • 📚 Comprehensive documentation and README

Technical Details

  • Non-breaking change: Added as new method overloads
  • Proper exception handling via channel propagation
  • Supports dataset-specific symbology combinations (GLBX.MDP3, OPRA.PILLAR)

Usage Example

```csharp
await foreach (var record in client.GetRangeAsync(
dataset: "GLBX.MDP3",
schema: Schema.Trades,
symbols: new[] { "ES.FUT" },
startTime: startTime,
endTime: endTime,
stypeIn: SType.Parent,
stypeOut: SType.InstrumentId))
{
// All records are from ES futures only
}
```

See filter.md for quick reference and examples/FuturesFilter.Example/ for complete example.

Documentation: https://databento.com/docs/standards-and-conventions/symbology

v3.0.26-beta - Quality Improvements & Clean Production Build

22 Nov 22:45

Choose a tag to compare

🎯 Quality Improvements Release

This release adds industry-standard NuGet quality indicators and ensures clean production DLL without debug logging.

✨ What's New

NuGet Quality Indicators:

  • Source Link: Debug directly into library source code from GitHub
  • Deterministic Builds: Reproducible builds for security verification
  • Symbol Packages: Enhanced debugging with .snupkg symbol packages
  • Compiler Flags: Embedded build metadata for transparency

Critical Fixes:

  • Clean Production DLL: Replaced debug DLL (784K) with production version (789K)
  • No Debug Logging: Removed all [C++ DEBUG] messages from native library
  • Verified Examples: All 33 example projects tested and passing

📦 Package Information

Main Package: Databento.Client.3.0.26-beta
Symbols Package: Databento.Client.3.0.26-beta.snupkg (auto-downloaded by debuggers)

🔧 Installation

dotnet add package Databento.Client --version 3.0.26-beta

Or add to your .csproj:

<ItemGroup>
  <PackageReference Include="Databento.Client" Version="3.0.26-beta" />
</ItemGroup>

📊 Impact

  • Zero functional changes - Metadata and quality improvements only
  • 100% backward compatible - No API changes from v3.0.24-beta
  • Enhanced debugging - Step into library code while debugging
  • Improved trust - Reproducible builds, deterministic output
  • Better discoverability - Quality badges on NuGet.org

🎁 For Developers

When debugging code that uses this library, your IDE can now:

  1. Automatically download source files from GitHub
  2. Set breakpoints in library code
  3. Step through the actual implementation
  4. Inspect variables in library context

No configuration needed - it just works! ✨

📚 Previous Fixes (Still Included)

All fixes from v3.0.24-beta and earlier:

  • ✅ Fixed AccessViolationException in Historical and Batch APIs
  • ✅ Bundled VC++ runtime DLLs (no manual installation needed)
  • ✅ Enhanced error handling and logging

🧪 Testing

  • All 33 example projects build successfully
  • Clean DLL verified (789KB, no debug messages)
  • Comprehensive example test report generated
  • Zero regressions detected

Full Changelog: v3.0.24-beta...v3.0.26-beta

v3.0.24-beta - Critical Bug Fix Release

21 Nov 03:44

Choose a tag to compare

Pre-release

Critical Bug Fix

RESOLVED: AccessViolationException crash in Historical and Batch APIs when server returns warning headers.

What's Fixed

  • ✅ Historical API with future dates now works (was crashing)
  • ✅ Batch API error handling now safe (was at risk)
  • ✅ All 33 examples passing (up from 32/33)
  • ✅ Server warnings now visible on stderr

Changes

  • Created StderrLogReceiver for safe logging across all client types
  • Updated all 4 native wrappers (Historical, Batch, LiveBlocking, LiveThreaded)
  • Enhanced diagnostic logging with DEBUG-level visibility
  • Log format changed: stdout → stderr, INFO:[Databento INFO]

Compatibility

  • ✅ Zero API changes - fully backward compatible
  • ✅ No breaking changes
  • ⚠️ ~10% of users may need to update log redirection scripts (see migration guide)

Installation

dotnet add package Databento.Client --version 3.0.24-beta --prerelease

Testing

  • 33/33 examples passing (100% success rate)
  • Zero functionality regressions
  • Zero performance regressions

Documentation

Closes #1


NuGet: https://www.nuget.org/packages/Databento.Client/3.0.24-beta
Commit: aa93f93