Development Setup
Prerequisites
- Rust 1.94 or later
- Node.js 22.12+ for TypeScript targets and examples
- Go 1.22+ for the Go runtime and interop example
- Python 3.10+ for Python runtime work and repository checks
Build the workspace
git clone https://github.com/vexil-lang/vexil
cd vexil
cargo build --workspace
Rust baseline
cargo fmt --all
cargo test --workspace
cargo clippy --workspace -- -D warnings
cargo fmt --all -- --check
There is no repository pre-commit hook. Run formatting explicitly; CI checks it without changing the contributor's staged files.
Target suites
cd packages/runtime-ts
npm ci
npm run build
npm test
cd ../runtime-go
go test ./...
cd ../runtime-py
python -m pytest
Return to the repository root before running the curated examples:
python scripts/examples.py check all
Generated output
Generator tests compare source against checked-in goldens. Regenerate only for an intentional output change:
UPDATE_GOLDEN=1 cargo test -p vexil-codegen-rust
UPDATE_GOLDEN=1 cargo test -p vexil-codegen-ts
UPDATE_GOLDEN=1 cargo test -p vexil-codegen-go
UPDATE_GOLDEN=1 cargo test -p vexil-codegen-py
Inspect every generated diff. A passing updated snapshot is not evidence that the new output is correct.
Documentation
python scripts/check-doc-links.py
cd docs/book && mdbook build
Benchmarks
crates/vexil-bench is excluded from the main workspace. Run its Criterion
benchmarks explicitly when performance is in scope:
cargo bench --manifest-path crates/vexil-bench/Cargo.toml
Read the root contribution guide for change boundaries, contract tests, and pull-request expectations.