Contribute
Patch the engine, Studio, clients, or docs. Product naming: NAMING.md. Agent-facing rules (full text): AGENTS.md.
Before you open a PR
cargo fmt --allcargo clippy --workspace --all-targets -- -D warningscargo test --workspace- If you touch wasm surfaces: build
eelden-langandeelden-wasmwith--profile wasm-size --target wasm32-unknown-unknown - If you change a public capability claim: update Status in the same PR
See Build for Studio/docs commands and CI shape.
Rust policy (enforced by CI)
- Stdlib only. A new dependency needs an entry in
internals/decisions.mdexplaining why the stdlib cannot do the job. No exception for dev-deps. - No
unsafe. Every crate carries#![forbid(unsafe_code)]. The one audited exception is the wasm bump allocator ineelden-lang(cfg-gated). A new exception requires a decisions entry, a module-level justification comment, and Miri coverage in CI. - Clippy pedantic, warnings denied. Fix the lint or
#[allow]with a one-line justification. A bare#[allow]is a review blocker. cargo fmtbefore every commit.
When to update public Status
Status is the honesty contract for consumers. Update it (and any matching consumer guide/language/reference page) when your change:
- Ships a capability listed as Not yet, or removes/regresses one listed Yes
- Changes the meaning of an existing Yes row (e.g. join shape, atomic conflict model, OPFS durability default)
- Adds a product-facing CLI flag, HTTP surface, or client API that docs will describe
Do not treat internals/engine-plan.md or internals/plans/* as the public roadmap. Plans stay private; Status is what the site claims.
Teaching mandate (summary)
Substantial PRs need a review guide, reviewer questions, and PR-description explanations for unsafe, non-elided lifetimes, locking/Arc/Rc, and new deps. Full process: Review process.
Comments and tests
- Comments explain intent and trade-offs, not mechanics. Port divergences from the Odin original (spike commit
f6818eb) are documented at the divergence site. - Tests are tripwires: when the type system prevents a bug class, keep a test that would fail if the protection were removed (see
read_future_is_sendinasync_pager.rs).