-
Notifications
You must be signed in to change notification settings - Fork 1
DX2: the shell and the first bindings #168
Copy link
Copy link
Closed
Labels
cliCLI and interactive shellCLI and interactive shellconformanceConformance measurement, corpus, declarationConformance measurement, corpus, declarationdxDeveloper experience: SDKs, CLI, install, ergonomicsDeveloper experience: SDKs, CLI, install, ergonomicsmilestoneMilestone tracking issueMilestone tracking issuepythonPython SDKPython SDKrustRust SDKRust SDK
Description
Activity
Metadata
Metadata
Assignees
Labels
cliCLI and interactive shellCLI and interactive shellconformanceConformance measurement, corpus, declarationConformance measurement, corpus, declarationdxDeveloper experience: SDKs, CLI, install, ergonomicsDeveloper experience: SDKs, CLI, install, ergonomicsmilestoneMilestone tracking issueMilestone tracking issuepythonPython SDKPython SDKrustRust SDKRust SDK
Milestone DX2 of the developer-experience program (Spec/2064g/dx/00-overview.md). Specs: dx/04, dx/06, dx/12 §2, §5, dx/03 §5, dx/13 §1. Runs with M2 (#3, closed).
M2 landed the query engine, so this is where the SDKs become real. Python goes first, ahead of TypeScript and Go, for one reason: an analytical database is evaluated from a notebook, and the notebook is where a bad first impression is unrecoverable. The 60-second snippet in dx/06 §1 is the target,
import zudb,zudb.connect,.to_pandas(), nothing else.Two things here are corrections from the 2026 audit (Spec/2064g/AUDIT-2026-08.md §2.1). The wheel matrix is not one abi3 wheel: the free-threaded build has no stable ABI until CPython 3.15 and PEP 803's
abi3t, so 3.14t needs a version-specificcp314-cp314twheel, and PyO3 0.29 dropped 3.13t entirely. And the Python floor is 3.11, not 3.9.shell (dx/12 §2):
Ctrl-Ccancel, progress reportingRust SDK v1 (dx/04):
explainandprofilereturning structured plans, not stringsPython SDK v0 (dx/06):
cp311-abi3,cp314-cp314t,cp315-abi3.abi3tto_arrow,to_pandaswith Arrow-backed dtypes for pandas 3.pyistubs inside the wheel withpy.typed, checked against the runtime by griffeimport zudbunder 50 ms, gatederror model end to end (dx/03 §5):
doc_url, retryablecancellation and progress:
zu_conn_interrupt, progress callbacksCtrl-CraisesKeyboardInterruptin Python within 50 ms, and interrupts in the shellcorpus and grammar:
done when:
Ctrl-Cinterrupts a 10-second query within 50 ms in the shell, in Python, and through the ABI