duckdb/duckdb
Language bindings (in-tree)
tools/juliapkg/ and tools/swift/ are small in-tree packages that wrap the C API. The Python, R, Node.js, JDBC, Go, Rust, ODBC, and Wasm clients live in separate repositories (https://github.com/duckdb/) and are not part of this codebase.
Julia
tools/juliapkg/ is a Julia package (DuckDB.jl) that ships in this repo because it is tightly coupled to the engine's release cadence.
tools/juliapkg/
├── Project.toml Julia package manifest
├── src/ Wrapper sources
├── test/ Tests
└── ...It builds against the shared library produced by make plus the C header src/include/duckdb.h. The package exposes:
DuckDB.DB(path)— open a database.DBInterfaceintegration so it works withDBInterface.execute(...).- DataFrames.jl integration via
DBInterface.fetch.
For development, add tools/juliapkg/ as a Pkg dependency pointing at the local checkout. CI for the Julia package runs through .github/workflows/Main.yml together with the C++ build.
Swift
tools/swift/ is a Swift package that wraps the same C API. It is mostly used by macOS / iOS embedders.
tools/swift/
├── Package.swift Swift package manifest
├── Sources/ Wrapper code
└── Tests/ XCTest casesThe Swift binding's release matrix is driven by .github/workflows/Swift.yml and SwiftRelease.yml.
utils
tools/utils/ is a small helper directory with development utilities used by the in-tree clients (e.g., shared test fixtures). It is not user-facing.
Out-of-tree clients
For everything else, see the per-client repositories:
| Client | Repository | Notes |
|---|---|---|
| Python | duckdb/duckdb-python (or the tools/pythonpkg/ historical path; the modern source is in a separate repo) |
The most heavily used binding. Includes pandas / pyarrow / Arrow integration. |
| R | duckdb/duckdb-r |
Includes dplyr integration via duckplyr. |
| Node.js | duckdb/duckdb-node |
Includes both the legacy duckdb and the newer duckdb-async packages. |
| JDBC / Java | duckdb/duckdb-java |
JDBC driver. |
| ODBC | duckdb/duckdb-odbc |
ODBC driver. |
| Wasm | duckdb/duckdb-wasm |
The browser/Node Wasm build. |
| Go | marcboeker/go-duckdb |
Community-maintained. |
| Rust | duckdb/duckdb-rs |
Rust bindings. |
These all use the C API exposed by systems/main and link against amalgamation builds produced by scripts/amalgamation.py.
See also
- tools/cli-shell — the CLI shipped in this repo.
- systems/main — the C API everyone wraps.
- how-to-contribute/tooling —
scripts/amalgamation.pyand related build scripts.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.