Releases: skuirrels/DuckDB.NET
Release list
Skuirrels DuckDB.NET 1.5.5
Skuirrels DuckDB.NET 1.5.5
Stable fork release containing the latest mapped-appender, prepared-parameter, and collection-writer performance work. The packages retain the official DuckDB.NET namespaces and assembly identities while using distinct Skuirrels.DuckDB.NET.* package IDs.
Highlights
- Compiles mapped-appender projections into a cached row writer.
- Adds typed prepared-parameter conversion and binding fast paths.
- Specializes LIST/ARRAY writes for arrays,
List<T>, and typed enumerable collections. - Preserves non-SZ-array and general collection fallback behavior.
- Uses weak collection-plan caching without permanently rooting runtime types.
- Includes the consolidated prepared-command, appender, result-materialization, map-reader, and scoped-writer optimizations from the fork.
Performance
Representative LIST/ARRAY results for one million rows with 32 integers:
| Workload | Previous baseline | 1.5.5 |
|---|---|---|
| Array to LIST | 221.6 ms | 125.9 ms |
List<int> to LIST |
339.3 ms | 139.7 ms |
| Array to fixed ARRAY | 208.0 ms | 123.4 ms |
For ReadOnlyCollection<int> at 100,000 rows, runtime improved from 35.59 ms to 16.10 ms and allocations fell from 78,139.55 KB to 3,138.35 KB.
Packages
dotnet add package Skuirrels.DuckDB.NET.Data.Full --version 1.5.5Skuirrels.DuckDB.NET.Data.FullSkuirrels.DuckDB.NET.Bindings.Full
This release bundles native DuckDB v1.5.4. Do not reference the fork package and the official DuckDB.NET.Data.Full package in the same dependency graph because they contain assemblies with the same identities.
Validation
- 7,019 tests passed on .NET 8.
- 7,019 tests passed on .NET 10.
- Stable
1.5.5package metadata and native assets validated. - Package smoke tests passed on .NET 8 and .NET 10.
Merged through PR #8.
Skuirrels DuckDB.NET 1.5.4
Stable release of the Skuirrels DuckDB.NET performance fork, promoted from 1.5.4-preview.2.
Packages:
Skuirrels.DuckDB.NET.Data.Full1.5.4Skuirrels.DuckDB.NET.Bindings.Full1.5.4
Install:
dotnet add package Skuirrels.DuckDB.NET.Data.Full --version 1.5.4These are distinct, unofficial fork package IDs and do not replace the official DuckDB.NET.* packages. Do not reference both package families in the same dependency graph because they expose the same assembly identities.
DuckDB.NET fork preview 1.5.4-preview.2
Unofficial preview release of the consolidated DuckDB.NET performance work, built against DuckDB v1.5.4.
Changes since preview.1:
- Prepared
ExecuteScalarnow reads the first result value directly without constructing a fullDuckDBDataReader. - The measured prepared scalar operation allocates 176 B instead of 944 B through the former reader path, an approximately 81% reduction.
- Added materialized and streaming coverage for values, nulls, empty results, representative reader types, and command reuse after materialization failure.
Packages:
- Skuirrels.DuckDB.NET.Data.Full
- Skuirrels.DuckDB.NET.Bindings.Full
Install:
dotnet add package Skuirrels.DuckDB.NET.Data.Full --version 1.5.4-preview.2The packages retain the official DuckDB.NET assembly and namespace identities. Do not reference the fork package and the official DuckDB.NET.Data.Full package in the same dependency graph. Preview packages are not selected by IDEs unless prerelease versions are enabled.
DuckDB.NET fork preview 1.5.4-preview.1
Unofficial preview release of the consolidated DuckDB.NET performance work, built against DuckDB v1.5.4.\n\nPackages:\n- Skuirrels.DuckDB.NET.Data.Full\n- Skuirrels.DuckDB.NET.Bindings.Full\n\nInstall:\nshell\ndotnet add package Skuirrels.DuckDB.NET.Data.Full --version 1.5.4-preview.1\n\n\nThe packages retain the official DuckDB.NET assembly and namespace identities. Do not reference the fork package and the official DuckDB.NET.Data.Full package in the same dependency graph. Preview packages are not selected by IDEs unless prerelease versions are enabled.