Releases: duckdb/duckdb-rs
Releases · duckdb/duckdb-rs
Release list
v1.10505.0
Highlights
- New type support:
UHUGEINTviau128(#795), a DuckDB-nativeDecimalcarrier covering all decimals up toDECIMAL(38, s)(#799),GEOMETRYexposed as WKB with CRS metadata (#801), Arrowarrow.uuidextension mapping toUUID(#808), and narrow ArrowDecimal32/Decimal64(#806) - Nested types via Arrow:
LIST,STRUCT,MAP, and fixed-sizeARRAYvalues now round-trip through Arrow record batches, vtabs, and scalar functions, with correct timestamp unit handling (#811, #813, #819) - Panic containment: panics in scalar and table function callbacks become query errors instead of aborting the host process so the connection stays usable (#824)
- Correct result metadata: schema and logical types are decoded from the executed result, fixing stale metadata when cached prepared statements outlive schema changes (#800, #803)
- Leaner build deps:
libduckdb-sysdownloads now useureqinstead ofreqwest, dropping the tokio/hyper stack from build dependencies (#826) ⚠️ Breaking:Type,Value, andValueRefare now#[non_exhaustive]with newUHugeIntvariants (#795);Statement::stepreturnsResult<Option<StructArray>>(#800);stream_arrowno longer takes a schema parameter and the deprecatedstream_stepis removed (#807)- Updated DuckDB to v1.5.5 (#825) and Rust to 1.97 (#812)
What's Changed
- Document Andium LTS branch by @mlafeldt in #790
- Add stub nightly CI job for integration testing by @mlafeldt in #791
- Test DuckDB nightly commits by @mlafeldt in #792
- Speed up nightly CI runs by @mlafeldt in #793
- Save Rust CI caches only from main by @mlafeldt in #794
- Harden Rust CI cache saves by @mlafeldt in #796
- Add UHUGEINT support by @mlafeldt in #795
- Represent DuckDB decimals natively by @mlafeldt in #799
- Fix stale logical metadata by decoding from executed result by @mlafeldt in #800
- Support GEOMETRY type by @mlafeldt in #801
- Bump sanitizer nightly toolchain to 2026-07-02 by @mlafeldt in #802
- Extract RAII ExecutedResult owner by @mlafeldt in #803
- Add modern Arrow API examples and coverage by @mlafeldt in #804
- Document deferred constraint checking on Appender by @mlafeldt in #805
- Support narrow Arrow decimals by @mlafeldt in #806
- Remove ignored schema parameter from Arrow streaming API by @mlafeldt in #807
- Support Arrow UUID extension metadata by @mlafeldt in #808
- Split up the Arrow monolith by @mlafeldt in #809
- Improve rustdoc accuracy and coverage by @mlafeldt in #810
- Update Rust to 1.97 by @mlafeldt in #812
- Unify recursive Arrow-to-DuckDB vector writes by @mlafeldt in #811
- Fix extension header for downloaded DuckDB libs by @mlafeldt in #814
- Pin macOS deployment target to silence linker warnings by @mlafeldt in #818
- Read nested DataChunks as Arrow by @mlafeldt in #813
- Fix Arrow timestamp carrier conversion by @mlafeldt in #819
- Prepare vector modules for native nested types by @mlafeldt in #823
- Contain panics across scalar and table callbacks by @mlafeldt in #824
- Replace reqwest with ureq for the libduckdb download by @mlafeldt in #826
- Update DuckDB to v1.5.5 by @mlafeldt in #825
- Correct documentation for supported workflows by @mlafeldt in #827
Full Changelog: v1.10504.0...v1.10505.0
v1.10504.0
What's Changed
- Slice large RecordBatches in ArrowVTab by @mlafeldt in #770
- Harden ArrowVTab batch slicing by @mlafeldt in #771
- Overhaul developer documentation by @mlafeldt in #772
- Update Rust to 1.96 by @mlafeldt in #775
- I see dead code by @mlafeldt in #776
- Build script cleanups by @mlafeldt in #777
- Expose Arrow C Data ABI structs in libduckdb-sys by @mlafeldt in #778
- Implement Sync for Appender by @mlafeldt in #779
- Add vscalar example by @mlafeldt in #780
- Add vtab example covering complex column types by @mlafeldt in #781
- Rebuild when pregenerated bindings change by @mlafeldt in #782
- Fix bundled builds on Windows/MSVC by @mlafeldt in #783
- Make VScalar::invoke safe to align with VTab by @mlafeldt in #785
- Enable pre-release testing by @mlafeldt in #787
- Update DuckDB to v1.5.4 by @mlafeldt in #788
Full Changelog: v1.10503.1...v1.10504.0
v1.4.5 (Andium LTS)
v1.10503.1
v1.10503.0
Highlights
- New ergonomic named parameter binding:
named_params!macro,&[(&str, &dyn ToSql)]slices, and a genericHashMapParamsimpl. - New build env vars:
DUCKDB_DISABLE_EXTENSION_LOAD=1disables extension install/load, andDUCKDB_DISABLE_JEMALLOC=1opts bundled-cmake builds out of jemalloc (now re-enabled by default on supported targets). - FFI soundness: typed vector slice/
set_childAPIs are nowunsafe; DuckDB-owned C strings use RAII; binding unsupportedValuevariants errors instead of panicking. ArrowVTabview rebinds no longer dereference freed Arrow FFI memory.vtab::Valuegains typed primitive getters andto_list() -> Option<Vec<Value>>.- Bundled DuckDB upgraded to v1.5.3 (adds
VARIANTmetadata).
What's Changed
- Fix unsound vector slice API by @mlafeldt in #745
- Refine vtab::Value API from #676 by @mlafeldt in #747
- Build out vtab::Value to enable more diverse parameters to Table Functions by @marksomething in #676
- Bump rustls-webpki from 0.103.11 to 0.103.13 by @dependabot[bot] in #744
- Add ergonomic named parameter binding by @mlafeldt in #748
- Implement Params for HashMap and serde_json::Value by @ryanschneider in #615
- Harden DuckDB-owned string handling at FFI boundaries by @mlafeldt in #750
- Update Rust to 1.95 by @mlafeldt in #751
- Stop panicking when binding/appending unsupported Value variants by @mlafeldt in #749
- Fix ArrowVTab view rebind lifetime by @mlafeldt in #754
- Retain ArrowVTab batches for sanitizer visibility by @mlafeldt in #755
- Pass Rust edition to rust.vim for proper formatting by @mlafeldt in #756
- Make DuckDB source archive reproducible by @mlafeldt in #759
- Change LogicalTypeHandle::set_alias to take &mut self by @vergenzt in #758
- libduckdb-sys: expose DEP_DUCKDB_INCLUDE for downstream C/C++ shims by @frhack in #753
- Update DuckDB to v1.5.3 by @mlafeldt in #760
- Allow to disable extension install/load support by @mlafeldt in #738
- Use improved upstream extension loader by @mlafeldt in #746
- Stop disabling jemalloc in bundled-cmake builds by @mlafeldt in #762
- Add bundled-cmake jemalloc escape hatch by @mlafeldt in #763
New Contributors
- @marksomething made their first contribution in #676
- @ryanschneider made their first contribution in #615
- @vergenzt made their first contribution in #758
- @frhack made their first contribution in #753
Full Changelog: v1.10502.0...v1.10503.0
v1.10502.0
Highlights
- Lifetime-safe vectors:
FlatVector,ListVector,ArrayVector, andStructVectornow carry a lifetime parameter tied toDataChunkHandle, preventing use-after-free bugs. Breaking: these types must be written asFlatVector<'_>, etc. - Static DuckDB extensions (experimental): new
bundled-cmakefeature builds DuckDB through upstream CMake, enabling static extensions likeicu. Checkout-only for now. - Upgraded to bundled DuckDB v1.5.2.
What's Changed
- Restrict Dependabot to direct dependencies by @mlafeldt in #719
- Disable routine dependabot version PRs by @mlafeldt in #730
- Add -c flag to example REPL for testing by @mlafeldt in #735
- Update Cargo.lock and pin comfy-table by @mlafeldt in #736
- Tie vector lifetimes to DataChunkHandle by @mlafeldt in #737
- Enable static DuckDB extensions via Cargo in checkouts by @mlafeldt in #732
- Update DuckDB to v1.5.2 by @mlafeldt in #741
Full Changelog: v1.10501.0...v1.10502.0
v1.10501.0
Highlights
- New profiling metrics API: collect query profiling data (timing, row counts, operator tree) via
Connection. - Removed deprecated
arrow2exposure:step2()is gone. Usequery_polars()for Polars DataFrames orstep()for raw arrow-rs access. Breaking change. duckdb_entrypoint_c_apimacro now suppresses theclippy::missing_safety_doclint automatically.- Upgraded to Arrow 58 and bundled DuckDB v1.5.1.
What's Changed
- duckdb_entrypoint_c_api: suppress missing_safety_doc lint by @mlafeldt in #704
- Clarify MSRV policy under new versioning by @mlafeldt in #705
- Update deps for development by @mlafeldt in #706
- Add support for collecting profiling metrics by @Maxxen in #707
- Profiling metrics follow-up by @Maxxen in #712
- chore: update to arrow v58 by @gadomski in #702
- Remove direct arrow2 exposure by @mlafeldt in #698
- Adapt upgrade.sh scripts to new versioning by @mlafeldt in #717
- Update DuckDB to v1.5.1 by @mlafeldt in #718
New Contributors
Full Changelog: v1.10500.0...v1.10501.0
v1.10500.0
Warning
New crate versioning scheme. Crate versions now encode the DuckDB version in their second semver component (1.MAJOR_MINOR_PATCH.x), allowing patch releases independent of DuckDB. For example, DuckDB v1.5.0 maps to crate version 1.10500.x.
Highlights
- Full
rust_decimal::Decimalsupport:FromSql,ToSql, andAppenderbinding for decimal values. Paramsimplemented for tuples (up to arity 16), enablingconn.execute("...", (a, b, c))syntax.- ENUM columns now support
FromSql<String>directly. Date32andTime64can now be bound in prepared statements.- Loadable extensions need only a single
duckdbcrate dependency; eliminated.unwrap()panic paths induckdb_entrypoint_c_apimacro. - Fix: cloned database handles now keep the original
dbhandle alive (fixes #312). - Fix: chrono datetime writes normalized to UTC.
- Upgraded to Rust edition 2024, Arrow 57, and bundled DuckDB v1.5.0.
What's Changed
- Allow to write extension using a single crate dependency by @mlafeldt in #674
- Update authors to include DuckDB Labs and contributors by @mlafeldt in #675
- Upgrade to arrow 57 by @mjgarton in #631
- Bump bytes from 1.11.0 to 1.11.1 by @dependabot[bot] in #677
- Fix: keep db handle alive for clones by @mlafeldt in #678
- Simplify ASan CI job by @mlafeldt in #685
- Allow binding Date32 and Time64 by @ultrabear in #682
- Rust 2024 by @mlafeldt in #686
- Remove stale copyright years from README by @mlafeldt in #688
- Verify MSRV in CI by @mlafeldt in #687
- Implement Params for tuples by @mlafeldt in #689
- Fix MSRV CI: disable cargo bin caching by @mlafeldt in #690
- Update contributing doc for required dependency by @dentiny in #633
- Skip CI for doc changes by @mlafeldt in #691
- Add regression test for reading ENUM by @mlafeldt in #693
- Support FromSql for ENUM columns by @mlafeldt in #694
- Speed up ASAN in CI by @mlafeldt in #695
- Update Rust to 1.94 by @mlafeldt in #697
- Feat/bind support for rust_decimal::Decimal by @destinyFvcker in #634
- Improve error handling in duckdb_entrypoint_c_api by @mlafeldt in #699
- fix(loadable-macros): eliminate .unwrap() panic paths in generated extern "C" entry point by @tomtom215 in #696
- Update DuckDB to v1.5.0 by @mlafeldt in #701
New Contributors
- @mjgarton made their first contribution in #631
- @ultrabear made their first contribution in #682
- @dentiny made their first contribution in #633
- @destinyFvcker made their first contribution in #634
- @tomtom215 made their first contribution in #696
Full Changelog: v1.4.4...v1.10500.0
v1.4.4
Highlights
Appender::append_rowsnow accepts tuples for heterogeneous data types directly.- Loadable extension setup simplified: single
loadable-extensionfeature replacesvtab-loadable+loadable-extension. duckdb_entrypoint_c_apimacro re-exported from main crate - no need to depend onduckdb-loadable-macrosdirectly anymore.stream_arrow()now works with CALL statements via automatic fallback toduckdb_fetch_chunk().- Streaming execution returns descriptive DuckDB error messages instead of "Unknown error code".
- Performance: ~2x faster column name lookups via lazy
HashMapcache; removed redundant null checks; zero-copyFlatVector::insertfor strings. - Build: fixed static linking (
libduckdb_static.a) and cargo cache invalidation from absoluteOUT_DIR. - Updated bundled DuckDB to v1.4.4 and Rust to 1.93.
What's Changed
- Update Cargo.lock and bump crate version in README by @mlafeldt in #646
- Remove legacy duckdb_entrypoint macro by @mlafeldt in #652
- Re-export duckdb_entrypoint_c_api from main crate by @mlafeldt in #653
- Consolidate loadable extension features by @mlafeldt in #654
- Update Rust to 1.92 by @mlafeldt in #656
- fix(build): prevent cargo cache invalidation from absolute OUT_DIR path by @cameronraysmith in #658
- libduckdb-sys/build.rs: fix link directive when statically linking by @brunal in #655
- performance(row): remove useless null check in value_ref_internal by @fvaleye in #662
- Enable
stream_arrow()to work with CALL statements by @leo-altertable in #660 - Extract error messages in execute_streaming to provide descriptive errors by @redox in #661
- performance(statement): introduce a lazy cache for column name to index by @fvaleye in #663
- Avoid unnecessary copy and allocation in FlatVector::insert by @sfc-gh-bhannel in #665
- feat: implement AppenderParams for tuples by @MathewBravo in #647
- Update Rust to 1.93 by @mlafeldt in #669
- Update DuckDB to v1.4.4 by @mlafeldt in #671
- Update copyright year by @mlafeldt in #672
New Contributors
- @cameronraysmith made their first contribution in #658
- @brunal made their first contribution in #655
- @redox made their first contribution in #661
- @sfc-gh-bhannel made their first contribution in #665
- @MathewBravo made their first contribution in #647
Full Changelog: v1.4.3...v1.4.4
v1.4.3
Highlights
- Build can auto-download matching prebuilt libduckdb via
DUCKDB_DOWNLOAD_LIB=1. - Appenders now support column subsets and column switching; defaults/NULLs fill the rest.
- Table functions can store extra info via the new
register_table_function_with_extra_info. - Scalar functions can be marked volatile using the
volatiletrait method. - Logical type coverage broadened (new DuckDB IDs,
Unsupportedfallback). - Updated bundled DuckDB to v1.4.3
What's Changed
- Update Rust to 1.91 by @mlafeldt in #626
- Download pre-built DuckDB libraries by @mlafeldt in #628
- Handle invalid & unsupported DuckDB types more gracefully by @mlafeldt in #629
- Add missing LogicalTypeId variants to match DuckDB C API by @leo-altertable in #630
- Allow to pass extra info to table functions by @mlafeldt in #637
- Align scalar state semantics and revert TableFunctionOptions by @mlafeldt in #638
- Support volatile scalar functions by @mlafeldt in #639
- Add ListVector::get_entry by @mlafeldt in #640
- Update broken links in CONTRIBUTING.md by @mlafeldt in #641
- Add column-selective appender API with default support by @mlafeldt in #642
- Remove broken release changelog/action by @mlafeldt in #645
- Update DuckDB to v1.4.3 by @mlafeldt in #644
New Contributors
- @leo-altertable made their first contribution in #630
- @tobilg made their first contribution in #639
Full Changelog: v1.4.2...v1.4.3