Changelog
May 2, 2026 · View on GitHub
All notable changes to dbfy. Format loosely follows Keep a Changelog; versioning is SemVer.
[0.4.1] — 2026-05-02
Hardening release. No API changes.
Added — testing
- Postgres integration tests against a real
postgres:11-alpinecontainer viatestcontainers-modules(5 cases — pushdown, count(*), JOIN, LIMIT, streaming). Gated#[ignore]; run via.github/workflows/integration.yml. - LDAP integration tests against
bitnami/openldap:2.6(5 cases — simple bind, eq pushdown, IN-list,__dn__synthetic column, ORDER BY + LIMIT). - Parquet TPC-H-lite integration test (4 cases on a 5 000-row, 2-row-group synthetic dataset).
- CI workflow
integration.ymlmatrix on ubuntu-latest with pre-pulled images.
Added — showcases
Every showcase doubles as an integration test via assertion
validators in run.sh.
examples/auth-audit/— LDAP × Postgres × syslog. Killer query: per-useraudit_countvssyslog_countgap. Catchesmalloryorphan,evelogin storm.examples/finance-recon/— Excel × Parquet × REST. Killer query: per-dealwarehouse_missing | payment_pending | amount_mismatch | reconciledstatus.examples/saas-metrics/— GraphQL × Postgres × Excel. Killer query: ARPU per million events vs tier budget share. Catchestyrellshelf-ware,initechMRR drift.
Added — language hello-worlds
examples/lang/{rust,python,csharp,java,kotlin,node,swift}/ — same
canonical query, idiomatic shape per binding.
Added — docs
docs/pushdown-matrix.md— operator coverage per source.CHANGELOG.md(this file).
[0.4.0] — 2026-05-02
Added
dbfy-jvmMaven Central artifact — Java JNI binding withCompletableFuture<byte[]> queryAsyncArrowIpc(sql). Per-platform classifier jars (natives-linux-x86_64,natives-osx-arm64, …).dbfy-kotlinMaven Central artifact — Kotlin coroutine extensions overdbfy-jvm:suspend fun query(sql)+Flow<ByteArray> queryStream(sql). Idiomatic exceptions (noExecutionExceptionunwrap).@typeeffect/dbfynpm package via napi-rs. Per-platform prebuilds (linux x64/arm64, macOS x64/arm64, windows x64).await engine.query(sql)returnsPromise<Buffer>resolved on the V8 main thread.- Swift Package Manager bindings — binaryTarget xcframework
covering macOS 12+, iOS 15+, Mac Catalyst 15+.
actor Enginewithtry await engine.query(sql)viawithCheckedThrowingContinuation. bindings-smoke.ymlCI workflow runs each binding's unit tests on every PR.maven-jvm.yml,npm.yml,swift.ymlpublish workflows triggered on tag push.
[0.3.0] — 2026-05-02
Added
- LDAP source with native filter pushdown. AND-merges SQL
WHEREpredicates into native LDAP filter syntax. Anonymous + simple bind. RFC 4515 value escaping.__dn__synthetic column. - Streaming Postgres + LDAP — replaces the fetch-all-then-
MemoryExec pattern with
RecordBatchReceiverStream+ custom ExecutionPlan. Cancellation propagates via channel-drop signal: the producer task exits and the underlyingClient/Ldaphandle drops, releasing wire connections. - C#
Engine.QueryAsync(sql, ct)via FFI callback →TaskCompletionSource<Result>. Continuations off the tokio worker thread (RunContinuationsAsynchronously). - Java
Dbfy.queryAsyncArrowIpc(sql)via JNI GlobalRef +JavaVM::AttachCurrentThread. Same FFI design as C#. - Excel
spawn_blocking— calamine I/O moved to the blocking thread pool so it doesn't sequester tokio workers.
Source coverage matrix (8/8 with pushdown)
REST · rows-file · Parquet · Excel · GraphQL · PostgreSQL · LDAP · Programmatic.
[0.2.0] — 2026-04-29
Added
- Project rename
restsql→dbfy. Crate split:dbfy-provider*/dbfy-frontend-*/dbfy-{c,jni,py,cli}. - Postgres source with filter / projection / LIMIT pushdown into native wire SQL.
- GraphQL source with
pushdown.variablesmapping (WHERE col = lit→ GraphQL variable). - Excel source with predicate-during-row-stream pushdown.
- Parquet source via DataFusion
ListingTable(row-group + projection pushdown native). dbfy-cC ABI with cbindgen-generated header.DbfyNuGet package for .NET (syncEngine.Query(), Apache.Arrow zero-copy via the C Data Interface).- GitHub Actions release pipeline — CLI binaries (Linux x86_64, macOS arm64), DuckDB extension, PyPI publish via trusted publishing.
[0.1.0] — Earlier 2026
Initial release. REST + rows-file (JSONL / CSV / logfmt / syslog /
regex) sources. Single SQL surface via DataFusion engine.
Programmatic provider trait. Python bindings via PyO3 + maturin.
DuckDB extension via shim with dbfy_rest() / dbfy_rows_file()
table functions.