Contributing
We welcome PRs that improve tooling, documentation, or hardware support—but every change must respect our pillars: safety, performance, developer experience, and zero debt. Follow this checklist to keep the review loop quick.
Development Workflow
- Branch from
master— keep your changes focused and rebase before submitting. - Format Zig sources —
mise run fmt(mirrors CI). - Run host tests —
zig build test -Doptimize=Debugand-Doptimize=ReleaseFast(or simplymise run test-tiger). Add new tests undertests/and import them throughtests/all.zigso thesrc/tree stays free of inline tests. - Cross build affected boards — e.g.
zig build -Dboard=stm32f103-bluepill .... - Simulate each board —
mise run sim-<board>and inspectbuild/renode/<board>-uart.log. No warnings is the standard. - Update docs — extend the mdBook when you touch behaviour or add hardware. “Done” includes documentation.
- Leave nothing half-finished — remove TODOs, resolve edge cases, and ensure defaults are explicit.
- Follow commit guidelines — use
type(scope): description(e.g.,feat(drivers): add spi backend).
Pull Request Expectations
- Include a summary of changes and the commands you executed.
- Mention any gaps (e.g., missing Renode support for a new peripheral) so reviewers can help plan follow-up work.
- Keep the mdBook and README in sync with new features.
Reporting Issues
When filing a bug, include:
- Zig version (
zig version) - Renode version (
renode --version) - Board(s) affected
- Reproduction steps (commands + logs)
Screenshots of UART output or Renode monitors are encouraged when the behaviour is visual.
Roadmap
The high-level roadmap lives in SPEC.md. Feel free to propose additions via issues or discussions—especially for new board support or driver categories.