Doc status: Up to date for Adze 0.8.0-dev.
- Rust 1.92.0+ (2024 edition support)
- Node.js: Required for
tree-sitterCLI compatibility (legacy/C backend only) - C Compiler: Required for
tree-sitterC integration - just: Command runner (optional but recommended)
Adze uses a "Support Lane" model to keep the core green while allowing experimental features to evolve.
These crates are the core product. CI enforces passing tests and lints on every PR.
adze(core runtime)adze-macroadze-tooladze-commonadze-iradze-glr-coreadze-tablegen
These crates are useful but may break during major refactors.
grammars/*(Python, JS, Go examples)example/(Arithmetic demo)runtime2(alternative runtime path)cli/playground/
To run the supported gate locally:
just ci-supported# Run tests for core crates only (fast)
just test
# Run strict linting
just clippy
# Format code
just fmt# Build everything (including experimental)
cargo build --workspace
# Run all tests (may require heavy resources)
cargo test --workspace# Build a specific grammar
cargo build -p adze-python
# Snapshot testing
cargo test -p adze-example
cargo insta reviewIf you need to inspect generated parsers:
export ADZE_EMIT_ARTIFACTS=true
cargo build -p adze-example
# Check target/debug/build/*/out/grammar_*/- Verify State: Ensure
just ci-supportedpasses. - Update Docs: Check
docs/status/FRICTION_LOG.mdandCHANGELOG.md. - Bump Version: Update
versioninCargo.tomlfiles (workspace members). - Tag:
git tag v0.8.0 - Publish:
cargo publish(scripted in CI). - Release surface configuration: choose
RELEASE_SURFACE_MODE(fixed/auto) and optionalRELEASE_CRATE_FILEoverride as needed. - Release surface strictness: decide whether to run
strict_publish_surface(fixed mode only) in the GitHub Release workflow when publishing, orSTRICT_PUBLISH_SURFACE=truefor local helper runs. - Optionally set workflow dispatch inputs
release_surface_modeandrelease_crate_filefor one-off releases.
- Formatting:
rustfmtis enforced. - Lints:
clippywarnings are errors in the supported lane. - Safety: Unsafe code must be documented with
// SAFETY:comments. - Testing: New features must have corresponding tests in
tests/or unit tests.
The full workspace test suite opens many files. Increase your ulimit or run tests per-crate.
The GLR table generation can be memory intensive for huge grammars. Try cargo test --release to use optimized table generation.