Language Bindings and Distribution¶
Ecosystem packages introduced in ROADMAP 0.10.0 (current through 0.13.x). The Rust
dpcs library remains the canonical implementation; bindings wrap a subset of
parse / validate / plan / capabilities / bind / compatibility / registry /
conformance entry points. Report/TUI DX surfaces in 0.11 are Rust/CLI-first;
bindings do not require --format parity.
| Channel | Package | Install |
|---|---|---|
| Guides | dpcs.readthedocs.io | — |
| crates.io | dpcs, dpcs-cli |
cargo install dpcs-cli |
| docs.rs | dpcs API |
— |
| PyPI | dpcs |
pip install dpcs |
| npm | @eddiethedean/dpcs |
npm install @eddiethedean/dpcs |
| Wasmer | eddiethedean/dpcs |
see Wasmer registry |
The bare npm name dpcs is reserved/blocked by npm similarity rules; the scoped
@eddiethedean/dpcs package is what release CI publishes.
Python (bindings/python)¶
Maturin / PyO3 (abi3-py39). Outside the Cargo workspace (workspace.exclude).
pip install dpcs
# local:
cd bindings/python && python -m venv .venv && source .venv/bin/activate
pip install maturin pytest && maturin develop && pytest -q
Import the dpcs module (same name as the Rust crate; Rust sources use ::dpcs
to avoid the PyO3 module-name clash).
WebAssembly (bindings/wasm)¶
wasm-bindgen / wasm-pack. Workspace member; release builds enable
wasm-opt with --enable-bulk-memory and --enable-nontrapping-float-to-int
(required for Rust 1.87+ WASM feature defaults).
npm install @eddiethedean/dpcs
# local:
cd bindings/wasm
wasm-pack build --target bundler --release --out-dir pkg --out-name dpcs
npm pkg set name=@eddiethedean/dpcs # when publishing from pkg/
Wasmer publishes the same crate as eddiethedean/dpcs with module ABI none
(host JS still required for wasm-bindgen glue).
Release automation¶
| Workflow | When | What |
|---|---|---|
release.yml |
Tag v*.*.* |
crates.io, PyPI, npm (@eddiethedean/dpcs), Wasmer (eddiethedean/dpcs) after CI |
publish-wasm.yml |
Manual workflow_dispatch |
Re-publish npm and/or Wasmer from main (version must match the selected tag) |
Secrets: CARGO_REGISTRY_TOKEN, PYPI_API_TOKEN, NPM_TOKEN, WASM_TOKEN.