Contributing
Contributions are welcome. This page is the quick version; the canonical, more
detailed guide is
CONTRIBUTING.md in
the repository.
Build & test
$ zig build # build the CLI → zig-out/bin/zut
$ zig build test --summary all # unit tests + sandbox smoketests
You need Zig 0.16.0 exactly. See Installation.
Conventions
- No raw
std.debug.print. Use the logger:@import("log")thenlog.outfor program output,log.err/warn/info/debug/tracefor diagnostics. - Tests live with their code. When a source file grows large, its tests move
to a sibling
<name>_test.zig, pulled in from the original viatest { _ = @import("<name>_test.zig"); }. White-box tests drive code through its public API. - Layers point downward. Respect the source layout;
aws/gcs/logare standalone modules that must not reach into zut. - Match the surrounding code — comment density, naming, and idiom. zut’s source is heavily commented with the why; keep that up.
- Every change keeps the suite green and adds tests for new behavior.
Where to start
- Good entry points are tracked on the roadmap (Phase 2/3 work).
- Read
docs/ARCHITECTURE.mdfirst — it’s the design contract and explains why things are shaped the way they are. - Small, reviewable commits with a clear message are preferred; pure moves (e.g. splitting a file) should carry no logic change.