Awesome Zig Overview
A list of awesome projects related to Zig
🏠 Home · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 catdevnull/awesome-zig · ⭐ 393 · 🏷️ Programming Languages
Awesome Zig
A general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Contents
- Algorithms and data structures
- Allocators and memory
- Audio
- Bootables
- Compilers and interpreters
- Concurrency
- Database
- Editor plugins
- Emulators
- Game tools and libraries
- Games
- GUI
- Misc libraries
- Network
- Web
- System tools
- Zig development tools
- Parser
- Learning resources
- C/C++ libraries packaged for Zig
- Other
Algorithms and data structures
- ziglibs/s2s (⭐131) - Binary serialization format and library.
- BarabasGitHub/LZig4 (⭐6) - LZ4 implementation.
- DutchGhost/ArrayVec (⭐17) - An array with a vector feeling.
- emekoi/deque.zig (⭐16) - A lock free chase-lev deque.
- kristoff-it/zig-cuckoofilter (⭐83) - Production-ready Cuckoo Filters for any C ABI compatible target.
- marijnfs/zigtimsort (⭐6) - TimSort implementation.
- Sahnvour/zig-containers (⭐13) - A container library.
- Srekel/zig-sparse-set (⭐66) - Sparse sets, supporting both SOA and AOS style.
- hexops/xorfilter (⭐260) - Xor Filters for checking if a key is part of a set.
- JakubSzark/zig-string (⭐386) - UTF-8 string data structure.
- karlseguin/cache.zig (⭐44) - Thread-safe, expiration-aware, LRU cache.
Allocators and memory
- fengb/zee_alloc (⭐83) - Tiny allocator primarily targeting WebAssembly.
- mdsteele/ziegfried (⭐24) - A general-purpose memory allocator.
- suirad/Seal (⭐6) - An allocator that wraps another allocator and detects if memory is leaked after usage.
- Hejsil/zig-gc (⭐38) - A super simple mark-and-sweep garbage collector.
- dbandstra/zig-hunk (⭐0) - Basic "Hunk" memory allocator, based on the hunk system from id Software's Quake engine.
Audio
- Hejsil/zig-midi (⭐30)
- hazeycode/zig-alsa (⭐1) - Bindings for ALSA (libasound).
- dantecatalfamo/sndio-zig (⭐1) - Bindings for sndio.
- orhun/linuxwave (⭐541) - Generate music from the entropy of Linux.
- dbandstra/zig-wav (⭐1) - Simple WAV file parser and writer.
Bootables
- AndreaOrru/zen (⭐450) - Experimental operating system.
- andrewrk/clashos (⭐219) - Multiplayer arcade game for bare metal Raspberry Pi 3 B+.
- andrewrk/HellOS (⭐275) - "hello world" x86 kernel example.
- chivay/vmt (⭐10) - Toy OS.
- DorianXGH/Lukarnel (⭐22) - A microkernel with Rust microservices.
- iguessthislldo/georgios (⭐48) - Hobby Operating System.
- jzck/kernel-zig (⭐429) - Hobby x86 kernel.
- markfirmware/zig-bare-metal-microbit (⭐35) - Bare metal microbit program.
- markfirmware/zig-bare-metal-raspberry-pi (⭐91) - Bare metal raspberry pi program.
- MasterQ32/RetrOS (⭐56) - A retro-style gaming console running on bare x86 metal.
- nrdmn/uefi-examples (⭐62) - UEFI examples.
- nrdmn/uefi-paint (⭐46) - UEFI-bootable touch paint app.
- rafaelbreno/zig-os (⭐37) - A simple OS following Philipp Oppermann's posts "Writing an OS in Rust".
- SamTebbs33/pluto (⭐574) - An x86 kernel.
- sjdh02/trOS (⭐49) - Tiny aarch64 baremetal OS thingy.
- tralamazza/embedded_zig (⭐75) - Minimal embedded ARM example (STM32F103 blue pill).
- yvt/zig-armv8m-test (⭐11) - Example app for Armv8-M + TrustZone.
- ZeeBoppityZagZiggity/ZBZZ.OS (⭐12) - An operating system built for RISCV.
Compilers and interpreters
- oven-sh/bun (⭐75k) - Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one.
- Vexu/bog (⭐549) - Small, strongly typed, embeddable language.
- LoLa Programming Language - (GitHub (⭐194)) An embeddable programming language for game scripting.
- squeek502/zua (⭐175) - An implementation of Lua 5.1 for learning purposes.
- CurtisFenner/zsmol (⭐9) - The new Smol compiler and reference.
- dantecatalfamo/brainfuck-zig (⭐9) - Brainfuck interpreter.
- dantecatalfamo/mruby-zig (⭐33) - mruby bindings.
- dantecatalfamo/wren-zig (⭐26) - wren bindings.
- fulcrum-so/ziggy-pydust (⭐437) - Python bindings.
- fubark/cyber (⭐1.2k) - Fast and concurrent scripting.
Concurrency
- mitchellh/libxev (⭐2.2k) - Cross-platform event-loop.
- kprotty/zefi (⭐38) - Fiber library.
- rsepassi/zigcoro (⭐168) - coroutine-friendly, based on libxev.
- iacore/minicoro-zig - Bindings for minicoro - Stackful Stack-Switching Coroutine.
Database
- coilhq/tigerbeetle (⭐11k) - A distributed financial accounting database designed for mission critical safety and performance.
- kristoff-it/redis-cuckoofilter (⭐231) - Hashing-function agnostic Cuckoo filters for Redis.
- kristoff-it/zig-okredis (⭐216) - Zero-allocation Client for Redis 6+.
- leroycep/sqlite-zig (⭐63) - SQLite bindings.
- vrischmann/zig-cassandra (⭐8) - Client for Cassandra 2.1+.
- vrischmann/zig-sqlite (⭐390) - SQLite wrapper.
- karlseguin/zuckdb.zig (⭐96) - DuckDB wrapper.
- karlseguin/pg.zig (⭐259) - Native PostgreSQL client.
Editor plugins
- MarioAriasC/zig-support (⭐79) - Language support for JetBrains IDEs (IntelliJ, CLion and others)
- isaachier/ztags (⭐17) - Ctags implementation for Zig.
- Tetralux/sublime-zig (⭐3) - My own, more lightweight, syntax highlighting for Zig.
- ziglang/sublime-zig-language (⭐85) - Zig language support for Sublime Text.
- ziglang/vscode-zig (⭐561) - Zig language support for VSCode.
- ziglang/zig-mode (⭐174) - Zig mode for Emacs.
- ziglang/zig.vim (⭐480) - Vim configuration for Zig.
- zigtools/zls (⭐3.1k) - Zig LSP implementation + Zig Language Server.
Emulators
- fengb/fundude (⭐181) - Gameboy emulator for WASM.
- GrooveStomp/chip8-zig (⭐8) - CHIP-8 emulator.
- sourgrasses/ichigo - Virtual Boy emulator.
- floooh/kc85.zig (⭐53) - A KC85 emulator.
- Arwalk/ChipZ (⭐3) A simple Chip8 emulator (library and executable).
Game tools and libraries
- hexops/mach (⭐3.4k) - Game engine and graphics toolkit.
- michal-z/zig-gamedev (⭐2.3k) - DirectX 12 game development ecosystem.
- floooh/sokol-zig (⭐380) - Sokol (⭐7.2k) bindings.
- TM35-Metronome/metronome (⭐46) - A set of tools for modifying and randomizing Pokémon games.
- TM35-Metronome/tm35-nds (⭐10) - A library for working with Nintendo DS roms.
- user00e00/sudokuinzig - Simple and robust sudoku solver.
- wendigojaeger/ZigGBA (⭐360) - SDK for creating Game Boy Advance games using Zig.
- hazeycode/brucelib - Monorepo of modules for programming cross-platforms games, simulations, engines & editors.
- andy5995/zigdeck (⭐3) - A library that creates and shuffles a deck of cards from which you can draw.
Games
- Akuli/curses-minesweeper (⭐17) - Minesweeper game written in curses.
- andrewrk/tetris (⭐403) - A simple tetris clone.
- fabioarnold/snake-zig (⭐19) - A simple snake clone.
- Stenodyon/blink (⭐17) - A game about building logic with lasers.
- thejoshwolfe/legend-of-swarkland (⭐96) - Hack-n-slash roguelike inspired by NetHack.
- tiehuis/zstack (⭐5) - Line-race tetris mode.
- kooparse/zalgebra (⭐234) - Linear algebra library for games and real-time computer graphics.
- floooh/pacman.zig (⭐245) - A Pacman clone.
- dantecatalfamo/OpenCSE (⭐1) - Free implementation of the Can't Stop Express dice game.
- dbandstra/oxid (⭐4) - Arcade-style game where you fight waves of monsters in a fixed-screen maze.
GUI
- capy-ui/capy (⭐1.8k) - Cross-platform library for making true native GUIs.
- david-vanderson/gui (⭐447) - Immediate mode GUI for Zig.
- Aransentin/ZWL (⭐99) - Zig Windowing Library.
- prime31/zig-upaya (⭐132) - GUI toolkit.
- fubark/cosmic (⭐344) - GUI toolkit.
- batiati/IUPforZig (⭐116) - Zig idiomatic and type-checked bindings for IUP Portable User Interface Toolkit.
- andrewrk/zig-sdl - Self-contained SDL2 package for Zig.
- Snektron/vulkan-zig (⭐525) - Vulkan binding generator.
- Avokadoen/zig_vulkan (⭐51) - Toy renderer using Vulkan and GLFW.
- andrewrk/zig-vulkan-triangle (⭐117) - Simple triangle displayed using Vulkan, GLFW, and Zig.
- kassane/QML-zig (⭐91) - QML bindings.
- cshenton/learnopengl (⭐143) - Learn OpenGL tutorials ported to Zig.
- ifreund/river (⭐3.3k) - Dynamic wayland compositor that takes inspiration from dwm and bspwm.
- Nelarius/weekend-raytracer-zig (⭐92) - An implementation of the "Ray Tracing in One Weekend" book.
- SpexGuy/Zig-Gltf-Display (⭐31) - A program that displays glTF files using Vulkan.
- tiehuis/zig-raytrace (⭐16) - Simple raytracer.
- donpdonp/zootdeck (⭐41) - Fediverse GTK Desktop Reader.
- MasterQ32/ZigPaint (⭐11) - A simple paint application. Used to create an OpenGL loader/wrapper and a minimal UI system.
- olexij-christian/zgtk3 (⭐1) - GTK3 bindings.
Misc libraries
- natecraddock/ziglua (⭐289) - Bindings for the Lua C API.
- ryoppippi/zigcv (⭐103) - Bindings for OpenCV4.
- BraedonWooding/Lazy-Zig (⭐42) - Linq.
- DutchGhost/maybeuninit (⭐1) - MaybeUninit.
- emekoi/log.zig (⭐24) - A thread-safe logging library.
- kprotty/zap (⭐451) - A collection of libraries which provide interfaces over the system for writing high performance applications.
- vbrusca/ZigMatrixUtils (⭐2) - Matrix manipulation and utility library.
- mlarouche/zigimg (⭐461) - Library for reading and writing different image formats.
- bfactory-ai/zignal (⭐71) - Image processing library inspired by dlib.
- dbandstra/zig-pcx (⭐0) - PCX image format decoder and encoder.
- ziglibs/known-folders (⭐235) - Provides access to well-known folders across several operating systems.
- SasLuca/zig-nanoid (⭐27) - Battle-tested, tiny, secure, URL-friendly, unique string ID generator. Now available in pure Zig.
- kassane/libvlc-zig (⭐18) - Bindings for libVLC media framework.
- karlseguin/log.zig (⭐101) - Structured logging library.
- dantecatalfamo/9p-zig (⭐4) - 9P2000 client/server library.
- karlseguin/singleflight.zig (⭐3) - Duplicate function call suppression.
- kassane/lean4-zig (⭐8) - Bindings for Lean 4 (theorem prover).
- attron/astroz (⭐16) - Astronomical and Spacecraft Toolkit.
Network
- MasterQ32/zig-network (⭐488) - Small network abstraction layer around TCP & UDP.
- dantecatalfamo/zig-dns (⭐58) - Experimental DNS library implemented in zig.
- euantorano/ip.zig (⭐14) - Library for working with IP Addresses.
- lun-4/zigdig (⭐34) - Naive DNS client library.
- marler8997/netpunch (⭐17) - Outbound proxy protocol.
- remeh/statsd-zig (⭐4) - Basic DogStatsD UDP server.
HTTP
- Luukdegram/apple_pie (⭐163) - HTTP 1.0/1.1 Server implementation.
- truemedian/zfetch (⭐60) - HTTP(S) client based on iguanaTLS.
- ducdetronquito/requestz (⭐116) - HTTP client based on h11.
- ducdetronquito/h11 (⭐102) - I/O-free HTTP/1.1 implementation inspired by hyper/h11.
- lun-4/ziget (⭐20) - Simple wget without libc.
- Vexu/routez (⭐246) - HTTP server.
- frmdstryr/zhp (⭐354) - Featureful HTTP server.
- axgdev/telegram_echobot_zig (⭐5) - Telegram echo bot.
- karlseguin/http.zig (⭐618) - HTTP/1.1 server.
- zigzap/zap (⭐2.4k) - blazingly fast, robust HTTP server.
Messaging
- skunkwerks/zamqp (⭐4) - AMQP client, based on rabbitmq-c.
- nine-lives-later/zzmq (⭐26) - ZeroMQ library, based on CZMQ.
Web
- andrewrk/lua-in-the-browser (⭐32) - Using Zig to build Lua for WebAssembly.
- karlseguin/websocket.zig (⭐313) - A WebSocket implementation.
- kivikakk/htmlentities.zig (⭐12) - HTML5 entity data.
- meheleventyone/zig-wasm-test (⭐55) - A minimal WebAssembly example using Zig's build system.
- shritesh/zig-wasm-dom (⭐146) - Zig + WebAssembly + JS + DOM.
- shritesh/zigfmt-web (⭐43) - Zig fmt on the web.
- zigwasm/wasm-zig (⭐27) - Common WASM runtime binding to C API.
- zigwasm/wasmer-zig (⭐53) - Bindings for the Wasmer WebAssembly runtime.
- zigwasm/wasmtime-zig (⭐83) - Bindings of Wasmtime.
- batiati/mustache-zig (⭐123) - Mustache implementation.
- floscodes/zerve (⭐49) - Simple framework for writing web services and web apps.
- zon-dev/zinc (⭐37) - Zinc is a framework focusing on high performance, usability, security, and extensibility.
- by-nir/aws-lambda-zig (⭐3) - Super-fast AWS Lambda runtime for Zig.
System tools
- pbui-project/pbui-main (⭐91) - BSD/Linux core utilities written in Zig.
- hspak/brightnessztl (⭐8) - A CLI to control device backlight.
- thejoshwolfe/hexdump-zip (⭐8) - Produce an annotated hexdump of a zipfile.
- kubkon/zacho (⭐37) - Zig's Mach-O parser.
- weskoerber/mac_address (⭐2) - A cross-platform library to retrieve the MAC address from your network interfaces without libc.
Zig development tools
- marler8997/zigup (⭐801) - Download and manage zig compilers.
- korandoru/setup-zig (⭐19) - Set up a specific version of Zig environment on GitHub Actions.
- weskoerber/zvm (⭐4) - POSIX-compliant bash script to manage multiple active Zig versions.
- vezel-dev/zig-sdk (⭐77) - MSBuild SDK for building Zig, C, and C++ projects using the Zig compiler.
- aherrmann/rules_zig (⭐44) - Bazel build rules for Zig.
Package managers
- zigtools/zpm (⭐91) - Unofficial Zig package manager.
- mattnite/gyro (⭐574) - Package manager with an index, build runner, and build dependencies.
- nektro/zigmod (⭐781) - Zig package manager.
- cheetah/asdf-zig (⭐29) - Zig plugin for the ASDF package manager.
- mattnite/ezpkg (⭐24) - Zig Package Manager Expansion Pack.
- nix-community/zon2nix (⭐77) - Convert the dependencies in
build.zig.zon
to a Nix expression.
Parser
- darithorn/zig-toml (⭐107) - A TOML parser.
- Himujjal/zig-json5 (⭐23) - JSON5 parser resembling the
std.json
APIs. - chwayne/rem (⭐108) - An HTML parsing library.
- goto-bus-stop/ziguid (⭐7) - GUID parsing/stringifying.
- 00JCIV00/cova (⭐111) - Commands, Options, Values, Arguments. A simple yet robust cross-platform command line argument parsing library.
- Hejsil/zig-clap (⭐991) - Simple command line argument parsing library.
- sam701/zig-cli (⭐214) - Package for building command line apps.
- kivikakk/libpcre.zig (⭐26) - Bindings to libpcre for Perl-compatible regular expressions.
- kivikakk/koino (⭐127) - CommonMark/GitHub Flavored Markdown parser and HTML renderer.
- kubkon/zig-yaml (⭐152) - YAML parser.
- sreehax/zig-ini (⭐6) - .ini parser.
- Nulo/ini-parser - .ini parser.
- tiehuis/zig-regex (⭐205) - A regex implementation.
- tiehuis/zig-ryu (⭐16) - Port of ryu (⭐1.2k).
- Vexu/zuri (⭐46) - URI parser.
- vi/zigmkv (⭐12) - Matroska/webm (mkv) parser.
- winksaville/zig-parse-args (⭐0) - Parse command line arguments.
- winksaville/zig-parse-number (⭐0) - Implement ParseNumber which can parse any TypeId.Int or TypeId.Float.
- gernest/base32 (⭐11) - Base32 encoding/decoding.
- caolan/zig-netstring - Netstring parser.
- Arwalk/zig-protobuf (⭐236) - Implementation of Protocol Buffers v3 leveraging Zig's comptime.
- iddev5/inon (⭐10) - Data configuration file format.
- naneros/ztoml - TOMLv1.0.0 parser and convert TOML to JSON.
- InKryption/comath (⭐56) - Calculate math expressions in comptime.
- weskoerber/kewpie (⭐2) - A simple query string parser.
Learning resources
- belse-de/zig-tut (⭐18) - A collection of small projects and tutorials to learn Zig.
- Sobeston/ziglearn (⭐710) - Zig learning resources.
- zighelp/zighelp (⭐38) - Get up to speed with Zig quickly (ziglearn fork).
- ziglings/exercises - Learn Zig by fixing tiny example programs.
C/C++ libraries packaged for Zig
These C/C++ libraries were packaged to be used with the Zig build and packaging system (build.zig
).
C
- andrewrk/SDL (⭐81) - Simple Directmedia Layer.
- andrewrk/libz (⭐14) - Zlib data compression.
- andrewrk/ffmpeg (⭐185) - library only.
- andrewrk/libgroove (⭐291) - streaming audio processing library.
- andrewrk/libsoundio (⭐2k) - library for real-time audio input and output.
- kassane/openssl-zig (⭐12) - crypto, providers & ssl libraries only.
- kassane/wolfssl (⭐5) - wolfssl library.
- kassane/libbpf (⭐2) - BPF CO-RE (Compile Once – Run Everywhere).
- kassane/winpthreads (⭐12) - PThread library for MinGW.
- raysan5/raylib (⭐23k) - A simple and easy-to-use library to enjoy videogames programming.
- jmcnamara/libxlsxwriter (⭐1.5k) - Creating Excel XLSX files.
- alexrp/libffi (⭐7) - libffi with a Zig build script.
C++
- andrewrk/libchromaprint (⭐6) - library for generating audio fingerprints used by AcoustID.
- kassane/asio (⭐7) - (non-boost) Networking I/O library (w/ event-loop, C++14/17/20).
- kassane/fmt (⭐0) - Modern formatting library.
- kassane/context (⭐0) - (boost-context) fiber library (C++14/17/20).
- kassane/fiber (⭐1) - (boost-fiber) userland threads (C++14/17/20).
- kassane/beast (⭐1) - (boost-beast) HTTP and WebSocket (C++14/17/20).
- kassane/hana (⭐1) - (boost-hana) Meta-programming library (header-only, C++14/17/20).
- kassane/intrusive (⭐0) - (boost-intrusive) intrusive containers (header-only, C++03/11/14).
- kassane/unordered (⭐0) - (boost-unordered) hashmap and set concurrency containers (C++03/11/14).
- kassane/catch2 (⭐0) - Unit testing library (C++14/17/20).
- kassane/outcome (⭐1) - (non-boost) Error handler (C++14/17/20).
- kassane/json (⭐1) - jsoncpp ported to Zig packaging.
- kassane/Standalone-Server (⭐3) - Asio standalone C++ HTTP/S Server.
- kassane/range-v3 (⭐0) - modern range library (C++14/17/20).
- kassane/libzmq (⭐2) - ZeroMQ core engine in C++ library.
- kassane/libsigcplusplus (⭐0) - Typesafe callback system for standard C++.
- ggerganov/llama.cpp (⭐69k) - Port of Facebook's LLaMA model in C/C++.
Other
- All Your Codebase - Development status of Zig and its' ecosystem.
- zig.pm - A community-maintained repository of Zig packages.
- hspak/geteltorito-zig (⭐7) - Geteltorito re-write in Zig.
- momumi/x86-zig (⭐27) - Library for assembling x86.
- nrdmn/ilo_license_key (⭐16) - ILO license key library.
- vegecode/svd2zig (⭐27) - Convert System View Description (svd) files to Zig headers for baremetal development.
- mqttiotstuff/iotmonitor (⭐21) - MQTT IotMonitor tools, save time to monitor mqtt agents or devices.
- ve-nt/outfieldr - TLDR (⭐52k) client.
- kubkon/zig-ios-example (⭐129) - Minimal
build.zig
for targeting iOS. - ynuwenhof/zigbraten (⭐1) - Proof of concept internal cheat for Cube 2: Sauerbraten.
- vbrusca/ZigSdlGameTemplate (⭐4) - SDL game project template.