Contributing
WAVE is open source and hosted on GitHub at github.com/Oabraham1/wave. Contributions are welcome across the entire project.
Building from Source
Section titled “Building from Source”WAVE is written in Rust. You need a working Rust toolchain installed via rustup.
git clone https://github.com/Oabraham1/wave.gitcd wavecargo build --releaseThis builds all crates in the workspace: the compiler (wave-compiler), the emulator (wave-emu), the runtime (wave-runtime), and the language SDKs.
Running Tests
Section titled “Running Tests”Each crate has its own test suite. Run tests for a specific crate from the workspace root:
cargo test -p wave-compilercargo test -p wave-emucargo test -p wave-runtimeOr run the full test suite:
cargo testContinuous Integration
Section titled “Continuous Integration”The CI pipeline runs on every pull request and checks:
- Lint -
cargo clippyacross all crates. - Format -
cargo fmt --checkto enforce consistent style. - SDK tests - test suites for all language SDKs (Rust, Python, TypeScript, C++).
All CI checks must pass before a pull request can be merged.
Areas of Contribution
Section titled “Areas of Contribution”There are several areas where contributions have high impact:
New Backends
Section titled “New Backends”WAVE currently compiles to Metal IR, PTX, and GCN ISA. Adding support for additional targets - particularly Intel Xe - would expand hardware coverage. Backend work lives in wave-compiler.
Compiler Optimizations
Section titled “Compiler Optimizations”The compiler performs ahead-of-time translation from WAVE’s portable encoding to vendor-native instructions. There are opportunities for optimization passes such as instruction scheduling, register allocation improvements, and vendor-specific peephole optimizations.
Hardware Verification
Section titled “Hardware Verification”If you have access to GPU hardware that WAVE targets - especially Intel Xe - running the verification suite and reporting results is a valuable contribution. See the Hardware Verification page for the methodology.
Spec Improvements
Section titled “Spec Improvements”The WAVE specification defines the portable instruction set and binary format. Proposals to extend the spec with new primitives, refine edge-case semantics, or improve clarity are welcome as issues or pull requests.
Documentation
Section titled “Documentation”Improvements to these docs, additional examples, and tutorials for the language SDKs are always appreciated.
Code Style
Section titled “Code Style”- Rust code follows
rustfmtdefaults. Runcargo fmtbefore committing. - All public items should have doc comments.
- Address
clippywarnings - CI will reject code that produces them.
Pull Request Process
Section titled “Pull Request Process”- Fork the repository and create a feature branch from
main. - Make your changes, ensuring that
cargo test,cargo fmt --check, andcargo clippyall pass locally. - Write a clear commit message describing what the change does and why.
- Open a pull request against
main. The PR description should summarize the motivation and any design decisions. - CI will run automatically. Address any failures before requesting review.