-
Notifications
You must be signed in to change notification settings - Fork 0
Development
Daniel Du edited this page Jun 9, 2026
·
1 revision
- Rust 1.86+ (MSRV)
- Python 3.9+ and maturin — for the Python bindings
- Go 1.21+ — for the Go client
- JDK 8+ and Maven — for the Java client
cargo build --release
cargo test --all-features
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
cargo deny check # advisories, licenses, bans, sourcesThe Python extension is built from the same crate with the python feature (configured
in pyproject.toml); there is no separate sub-crate.
maturin develop # build + install into the current venv (dev)
maturin build --release # build a release wheelcd clients/go
go test ./...
go vet ./...
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ./... # cross-compiles freelycd clients/java
mvn verify # compiles and runs tests (JDK 8/11/17 in CI)-
ci.yml— Rust check, fmt, clippy (-D warnings), test,cargo-deny, docs, Python wheel build, and an MSRV (1.86) check. -
clients.yml— the Java client on a JDK 8 / 11 / 17 matrix, and the Go client (test, vet, cross-compile). Both run the shared conformance vectors.
Versioning has a single source of truth: the [package] version in Cargo.toml.
pyproject.toml reads it dynamically, and the Python __version__, the crate, and the
wheels therefore always agree.
The release workflow is tag-driven and reproducible:
- Bump the version in
Cargo.toml, commit. - Create a GitHub Release with a matching tag
vX.Y.Z. - A
check-versionjob fails the release unless the tag equals theCargo.tomlversion; then the crate is published to crates.io and wheels to PyPI at that version.
Usage
Reference