Update quack-rs to v0.14.0, add in-process integration tests, bump to v0.7.0#76
Merged
Conversation
… v0.7.0 Update the SDK to the new quack-rs release and harden the test/supply-chain story end to end. The extension's public surface (the 7 SQL functions) is unchanged; this is a dependency + testing + docs upgrade. quack-rs v0.13.0 -> v0.14.0 Every public API this crate uses (AggregateFunctionSetBuilder, FfiState, VectorReader/VectorWriter, ListVector, LogicalType::list, returns_logical, AggregateTestHarness, Connection/Registrar, entry_point_v2!) is unchanged -- zero changes to existing source. 0.14.0 is purely additive (wasm32-unknown-emscripten support, bundled-test-prebuilt, open_unsigned()). In-process integration tests (tests/extension_load.rs, 7 tests) Build the real release cdylib, append the DuckDB metadata footer (a Rust port of append_extension_metadata.py), and LOAD it into an in-memory DuckDB via quack-rs 0.14.0's testing::InMemoryDb::open_unsigned(), then exercise all seven functions through live SQL. Runs inside `cargo test` with no external duckdb CLI -- closing the long-standing gap where unit tests could pass while the FFI registration path was broken (segfault-on-load / silent non-registration / wrong-result class of bugs). Adds the quack-rs bundled-test dev-feature, which unifies with the existing duckdb/bundled dev-dependency (no extra DuckDB build). Dependencies (cargo update) tar 0.4.45 -> 0.4.46 (GHSA-3pv8-6f4r-ffg2), cc 1.2.61 -> 1.2.63, shlex 1.3.0 -> 2.0.1, arrow 58.1 -> 58.3, plus routine transitive bumps. All direct deps at latest; all bumped crates declare MSRV <= 1.85 (project MSRV stays 1.87). deny.toml: tightly-scoped CC0-1.0 exception for tiny-keccak (a phantom lockfile entry, never built, never shipped) so modern cargo-deny passes the license gate. Version + docs Bump extension to v0.7.0 and update every version reference across README, CLAUDE.md, SECURITY.md, description.yml, scripts/setup.sh, docs/src/**, issue/PR templates, and the community-submission workflow. Verified: cargo test (453 unit + 7 integration + 1 doc), cargo nextest run --profile ci (460), clippy --all-targets -Dwarnings (0), fmt --check, doc --no-deps -Dwarnings, cargo deny (advisories/bans/licenses/sources ok). https://claude.ai/code/session_01XrxjxwWKPZWTspc1UBQScN
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Updates the SDK to the new quack-rs v0.14.0 release and hardens the testing and supply-chain story end to end. The extension's public surface (the 7 SQL functions) is unchanged — this is a dependency + testing + docs upgrade.
quack-rs
0.13.0→0.14.0Every public API this crate uses (
AggregateFunctionSetBuilder,FfiState,VectorReader/VectorWriter,ListVector,LogicalType::list,returns_logical,AggregateTestHarness,Connection/Registrar,entry_point_v2!) is unchanged — zero changes to existing source. v0.14.0 is purely additive:wasm32-unknown-emscripten(DuckDB-WASM) support, abundled-test-prebuiltfeature, andInMemoryDb::open_unsigned().New: in-process extension-load integration tests (
tests/extension_load.rs, 7 tests)The headline improvement. They build the real release
cdylib, append the DuckDB metadata footer (a Rust port ofappend_extension_metadata.py), andLOADit into an in-memory DuckDB via quack-rs 0.14.0'stesting::InMemoryDb::open_unsigned(), then exercise all seven functions through live SQL — insidecargo test, with no externalduckdbCLI.This closes the long-standing gap CLAUDE.md flags as the #1 testing risk: the segfault-on-load / silent-non-registration / wrong-result class of FFI bugs that unit tests cannot reach. Adds the
quack-rsbundled-testdev-feature, which unifies with the existingduckdb/bundleddev-dependency (no extra DuckDB build) and never reaches the release.so.Dependencies (
cargo update)tar 0.4.45 → 0.4.46— resolves GHSA-3pv8-6f4r-ffg2 ("PAX header desynchronization", moderate; alibduckdb-sysbuild-dependency). This is the open Dependabot alert onmain.cc 1.2.61 → 1.2.63,shlex 1.3.0 → 2.0.1,arrow 58.1 → 58.3, plus routine transitive bumps.comfy-table(constrained by theduckdbdev-dependency). All bumped crates declare MSRV ≤ 1.85, so the project MSRV stays 1.87.deny.toml: tightly-scopedCC0-1.0exception fortiny-keccak— a phantomCargo.lockentry behindahash's optional, never-enabledcompile-time-rngfeature (absent from every buildable graph and from the shipped.so), so moderncargo-denyreleases pass the license gate.Version + docs
Bumps the extension to v0.7.0 (the project convention: each quack-rs upgrade gets a version bump) and updates every version reference across
README.md,CLAUDE.md,SECURITY.md,description.yml,scripts/setup.sh,docs/src/**, the issue/PR templates, and the community-submission workflow +CHANGELOG.md. Thedescription.ymlrefis intentionally left for the release step.Verification (run locally, directly)
cargo testcargo nextest run --profile cicargo clippy --all-targets -- -D warningscargo fmt -- --checkcargo doc --no-deps --document-private-items(-Dwarnings)cargo deny check advisories bans licenses sourcescargo bench --no-runThe mature core algorithm modules are intentionally left untouched — they're exhaustively (mutation-guided) tested already; changing them would be churn, not improvement.
https://claude.ai/code/session_01XrxjxwWKPZWTspc1UBQScN
Generated by Claude Code