Open an issue with:
- What happened (expected vs actual)
- Minimal reproduction (wire bytes, event type, input data)
- Platform + Rust version
- Fork → branch → PR.
- Keep commits atomic with clear messages.
cargo testmust pass.cargo clippy -- -D warningsmust pass.cargo fmt --all -- --checkmust pass.- If adding a new event type, update:
spec/WAYLAND_STREAM_PROTOCOL.mdspec/wlstream.schema.jsonsrc/parser.rs(decode)src/sender.rs(encode)- Tests in both modules
Protocol versioning follows the spec. Breaking changes require a new major version (v2, v3, ...). Non-breaking additions (new event types with new IDs) can be minor versions.
Backward compatibility: receivers must silently skip unknown event types.
The wire format is language-agnostic. If you implement a parser/sender in another language (C, Python, Go, etc.), open a PR with:
- A
bindings/<lang>/directory - Tests proving round-trip compatibility with the Rust crate
- A
build.zigor equivalent build configuration
By contributing, you agree that your contributions are licensed under MIT.