Table of Contents
Zig
Learning Resources 🔗
- https://ziglang.org/learn/overview/
- https://ziglang.org/learn/getting-started/
- https://github.com/ziglang/zig/wiki/How-to-read-the-standard-library-source-code
- https://ziggit.dev/
- https://zig.guide/
- https://codeberg.org/ziglings/exercises/
- https://exercism.org/tracks/zig
- https://www.openmymind.net/learning_zig/
- https://www.youtube.com/@dudethebuilder
- https://www.youtube.com/@sphaerophoria
- https://github.com/oven-sh/bun
- https://github.com/tigerbeetle/tigerbeetle/
- https://cookbook.ziglang.cc/
- Zig type system illustrated using ascii diagrams
Blog posts / Tips 🔗
- https://matklad.github.io/2024/03/21/defer-patterns.html
- https://matklad.github.io/2025/03/19/comptime-zig-orm.html
- https://ziggit.dev/t/zig-debugging-with-lldb/3931/7
Packages 🔗
- ANDRVV/zprof: Cross-allocator profiler for Zig
- zig-interface: A compile-time interface checker for Zig that enables interface-based design with comprehensive type checking and detailed error reporting
- zigfsm
- zap: blazingly fast backends in zig
- jetzig: Web framework written in Zig
- zig-cli: A simple package for building command line apps in Zig
- libxev: libxev is a cross-platform, high-performance event loop that provides abstractions for non-blocking IO, timers, events, and more and works on Linux (io_uring or epoll), macOS (kqueue), and Wasm + WASI. Available as both a Zig and C API
- getty: A (de)serialization framework for Zig
- ohsnap: Easy Snapshot Testing for Zig
- poop: Performance Optimizer Observation Platform
- coz: Causal Profiling
- zig-clap: Command line argument parsing library
- gremlin.zig: A zero-dependency Google Protocol Buffers implementation in pure Zig. Single allocation encode and lazy decode
- spice: Fine-grained parallelism with sub-nanosecond overhead
- nexlog: A modern, feature-rich logging library for Zig with thread-safety, file rotation, and colorized output. High-performance logging made easy
- https://ziggy-lang.io/
Snippets 🔗
- test_runner.zig
- build.zig file which automatically creates executables for all .main.zig files in src/
- build.zig for sqlite amalgamation
- https://goreleaser.com/customization/builds/#build-zig-binaries
- https://ziggit.dev/t/github-actions-mlugg-setup-zig/4659
Debugging with Xcode 🔗
- Open Xcode
- Debug > Attach to Process OR Debug > Debug Executable…
- Options > Console > Xcode (with Standard Input) — if needed
- Set breakpoints with ⌥ + ⌘ + \\
Debugging with lldb 🔗
- https://ziggit.dev/t/zig-debugging-with-lldb/3931/7
- https://github.com/jacobly0/llvm-project/tree/lldb-zig
Watcher 🔗
$ zig build check -fincremental --watch
$ zig build -fincremental --watch
# Maybe use watchexec?
$ watchexec -e zig "zig fmt . && zig check . && zig test ."