Open-Source Wikis

/

DuckDB

/

Tools

/

Language bindings (in-tree)

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.
  • DBInterface integration so it works with DBInterface.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 cases

The 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

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Language bindings (in-tree) – DuckDB wiki | Factory