-
Notifications
You must be signed in to change notification settings - Fork 1
DX0: foundations, the repository split, the API model #166
Copy link
Copy link
Open
Labels
capiC ABI surface and stabilityC ABI surface and stabilityconformanceConformance measurement, corpus, declarationConformance measurement, corpus, declarationdxDeveloper experience: SDKs, CLI, install, ergonomicsDeveloper experience: SDKs, CLI, install, ergonomicsmilestoneMilestone tracking issueMilestone tracking issuepackagingDistribution, registries, release trainDistribution, registries, release train
Description
Activity
Metadata
Metadata
Assignees
Labels
capiC ABI surface and stabilityC ABI surface and stabilityconformanceConformance measurement, corpus, declarationConformance measurement, corpus, declarationdxDeveloper experience: SDKs, CLI, install, ergonomicsDeveloper experience: SDKs, CLI, install, ergonomicsmilestoneMilestone tracking issueMilestone tracking issuepackagingDistribution, registries, release trainDistribution, registries, release train
Milestone DX0 of the developer-experience program (Spec/2064g/dx/00-overview.md). Specs: dx/17 §DX0, dx/18, dx/02, dx/03, dx/14 §10, dx/15 §2. Runs with M0 (#1).
Nothing user-facing. This is the machinery every later SDK depends on, and the part of it that is genuinely irreversible is the repository boundary, so it is settled before any binding exists. The rule dx/18 §1 lands on, after auditing what DuckDB actually does: code that compiles against the engine's internals stays in this repo, code that compiles against the frozen C ABI leaves. That puts the Rust SDK,
zu.h, the CLI, and the conformance corpus here, and puts Python, Node, Go, Java, .NET, the C/C++ kit, and the site in their own repositories.tamnd/zu-cdeliberately does not containzu.h, because the header is generated from the API model and is therefore an output of this build.The second irreversible thing is the pinned toolchain table (dx/14 §10), audited against the registries on 2026-08-15 and recorded in Spec/2064g/AUDIT-2026-08.md. It is one table, referenced everywhere, so "which version do we build against" never has two answers.
repository split (dx/18 §2, §5):
libzu-*,zu.h,model.json,gql.json,errors.json,cli.json,conformance-<version>.tar.zstclients/index in the README and a repository map in the docsAPI model and map (dx/03 §2, docs/04 §2, dx/18 §4):
model.jsongenerator from the Rust API surfaceapi-map.tomlschema, one per binding repositoryconformance corpus skeleton (dx/15 §2):
{type, value}value encoding, strings for int64/decimal/timestampconformance-<version>.tar.zstfoundations:
zu-web/style/zu/terms.yml, shared by docs, SDKs, CLI, and error messages (docs/03 §5)libzuin CI: linux gnu/musl x64+arm64, macOS x64+arm64, windows x64 (dx/14 §2)bigintfor INT64; Panama over JNI; the repository splitdone when:
libzufor all seven tier-1 platforms and publishes every artifact in the contract