Contributing
Contributions are managed in the WAVE repository.
Build and test
Section titled “Build and test”Follow Installation to build the toolchain. Each package has its own manifest. From the repository root, run the relevant package's checks:
cargo fmt --manifest-path wave-compiler/Cargo.toml --checkcargo clippy --manifest-path wave-compiler/Cargo.toml --all-targets -- -D warningscargo test --manifest-path wave-compiler/Cargo.tomlFor changes to instruction encoding, execution, or translation, also run the integration checks:
bash tests/ci/run_emulator_tests.shbash tests/ci/run_backend_tests.shcargo run --manifest-path tests/spec-verification/Cargo.tomlCI checks formatting, linting, package tests, SDK tests, and emulator and backend integration tests. The workflow contains the commands for each language.
Changes
Section titled “Changes”Compiler and backend changes must preserve the ISA's behavior. Include a test that exercises the affected behavior. Performance claims need measurements and correctness checks on the named hardware. See Hardware verification for the benchmark methods.
Specification proposals should identify the operation or rule being changed and explain its effect on each backend. SDK and documentation changes should include examples that work with the current interfaces.
Pull requests
Section titled “Pull requests”- Create a branch from
main. - Make the change and run the relevant checks.
- Describe the problem, resulting behavior, and validation in the pull request.
- Address CI failures before requesting review.
Use rustfmt defaults, document public interfaces, and fix Clippy warnings at their source.