Contributing #
Development checks #
Before opening a change, run the Rust formatter, Clippy with warnings denied, the Rust tests, the wasm32-unknown-unknown check, and the web checks documented in the README.
Core CPU, IR, memory, ELF, and Linux semantics must remain testable without a browser. Browser capabilities belong behind explicit host boundaries. Add focused regression tests with every behavior change.
Dependencies #
Keep dependencies small and explicit. Record the license, browser compatibility, native-host assumptions, and reason for any foundational dependency in an architecture decision record. GPL implementation code must not enter the permissively licensed core accidentally.
Safety #
The workspace forbids unsafe code by default. A future exception must be narrowly scoped, document its invariants, and include targeted tests.
Commit style #
Use concise imperative subjects, such as feat: add Memory64 browser probe or docs: record Icicle feasibility decision.