Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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") then log.out for program output, log.err/warn/info/ debug/trace for 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 via test { _ = @import("<name>_test.zig"); }. White-box tests drive code through its public API.
  • Layers point downward. Respect the source layout; aws/gcs/log are 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.md first — 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.