Contributing¶
House rules¶
- Safe Rust only. Every crate forbids
unsafe_code. cargo clippy --workspace --all-targets -- -D warningsis the gate.cargo fmt --all --checkmust pass.- One focused change per PR. No drive-by refactors.
The full style guide is in
GUIDELINES.md.
Getting oriented¶
- Start with the language spec for grammar and semantics.
- Each crate under
crates/has a module-level//!doc describing the compiler phase it belongs to. - Design notes live under
docs/(perf baseline, binary-size baseline, diagnostics style guide, self-hosting study, incremental-compile rollout).
Picking an issue¶
Streams ordered by impact, smallest to biggest:
- Landing a new lint in
gossamer-lint(the framework is in place; each lint is ~20 lines). - Wiring a new native stdlib module (see the
std::regexwrapper for the pattern). - Extending the diagnostics style guide with acceptance fixtures.
- Closing a security item in the roadmap.
- Implementing a major language feature (Cranelift codegen, scheduler, LSP capabilities beyond the shipped slice).
Running the tests¶
cargo test --workspace
Per-crate:
cargo test -p gossamer-mir
cargo test -p gossamer-std --lib
Release benches:
cargo test -p gossamer-interp --test perf_baseline --release -- --nocapture
Docs¶
pip install mkdocs
mkdocs serve
Opens at http://localhost:8000/. Edit docs_src/*.md and save;
the site reloads.