# 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
- Linters
- Misc libraries
- Network
  - HTTP
- Web
- System tools
- Zig development tools
  - Package managers
- Parser
- Learning resources
- C/C++ libraries packaged for Zig
- Other

## Algorithms and data structures

- ziglibs/s2s - Binary serialization format and library.
- BarabasGitHub/LZig4 - LZ4 implementation.
- DutchGhost/ArrayVec - An array with a vector feeling.
- emekoi/deque.zig - A lock free chase-lev deque.
- kristoff-it/zig-cuckoofilter - Production-ready Cuckoo Filters for any C ABI compatible target.
- marijnfs/zigtimsort - TimSort implementation.
- Sahnvour/zig-containers - A container library.
- Srekel/zig-sparse-set - Sparse sets, supporting both SOA and AOS style.
- hexops/xorfilter - Xor Filters for checking if a key is part of a set.
- JakubSzark/zig-string - UTF-8 string data structure.
- karlseguin/cache.zig - Thread-safe, expiration-aware, LRU cache.

## Allocators and memory

- fengb/zee_alloc - Tiny allocator primarily targeting WebAssembly.
- mdsteele/ziegfried - A general-purpose memory allocator.
- suirad/Seal - An allocator that wraps another allocator and detects if memory is leaked after usage.
- Hejsil/zig-gc - A super simple mark-and-sweep garbage collector.
- dbandstra/zig-hunk - Basic “Hunk” memory allocator, based on the hunk system from id Software’s Quake engine.

## Audio

- Hejsil/zig-midi
- hazeycode/zig-alsa - Bindings for ALSA (libasound).
- dantecatalfamo/sndio-zig - Bindings for sndio.
- orhun/linuxwave - Generate music from the entropy of Linux.
- dbandstra/zig-wav - Simple WAV file parser and writer.

## Bootables

- AndreaOrru/zen - Experimental operating system.
- andrewrk/clashos - Multiplayer arcade game for bare metal Raspberry Pi 3 B+.
- andrewrk/HellOS - “hello world” x86 kernel example.
- chivay/vmt - Toy OS.
- DorianXGH/Lukarnel - A microkernel with Rust microservices.
- iguessthislldo/georgios - Hobby Operating System.
- jzck/kernel-zig - Hobby x86 kernel.
- markfirmware/zig-bare-metal-microbit - Bare metal microbit program.
- markfirmware/zig-bare-metal-raspberry-pi - Bare metal raspberry pi program.
- MasterQ32/RetrOS - A retro-style gaming console running on bare x86 metal.
- nrdmn/uefi-examples - UEFI examples.
- nrdmn/uefi-paint - UEFI-bootable touch paint app.
- rafaelbreno/zig-os - A simple OS following Philipp Oppermann’s posts “Writing an OS in Rust”.
- SamTebbs33/pluto - An x86 kernel.
- sjdh02/trOS - Tiny aarch64 baremetal OS thingy.
- tralamazza/embedded_zig - Minimal embedded ARM example (STM32F103 blue pill).
- yvt/zig-armv8m-test - Example app for Armv8-M + TrustZone.
- ZeeBoppityZagZiggity/ZBZZ.OS - An operating system built for RISCV.

## Compilers and interpreters

- oven-sh/bun - Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one.
- Vexu/bog - Small, strongly typed, embeddable language.
- LoLa Programming Language - (GitHub) An embeddable programming language for game scripting.
- squeek502/zua - An implementation of Lua 5.1 for learning purposes.
- CurtisFenner/zsmol - The new Smol compiler and reference.
- dantecatalfamo/brainfuck-zig - Brainfuck interpreter.
- dantecatalfamo/mruby-zig - mruby bindings.
- dantecatalfamo/wren-zig - wren bindings.
- fulcrum-so/ziggy-pydust - Python bindings.
- fubark/cyber - Fast and concurrent scripting.

## Concurrency

- mitchellh/libxev - Cross-platform event-loop.
- kprotty/zefi - Fiber library.
- rsepassi/zigcoro - coroutine-friendly, based on libxev.
- iacore/minicoro-zig - Bindings for minicoro - Stackful Stack-Switching Coroutine.
- floscodes/coroutinez - Small runtime for running tasks using coroutines.

## Database

- coilhq/tigerbeetle - A distributed financial accounting database designed for mission critical safety and performance.
- kristoff-it/redis-cuckoofilter - Hashing-function agnostic Cuckoo filters for Redis.
- kristoff-it/zig-okredis - Zero-allocation Client for Redis 6+.
- leroycep/sqlite-zig - SQLite bindings.
- vrischmann/zig-cassandra - Client for Cassandra 2.1+.
- vrischmann/zig-sqlite - SQLite wrapper.
- karlseguin/zuckdb.zig - DuckDB wrapper.
- karlseguin/pg.zig - Native PostgreSQL client.

## Editor plugins

- MarioAriasC/zig-support - Language support for JetBrains IDEs (IntelliJ, CLion and others)
- isaachier/ztags - Ctags implementation for Zig.
- Tetralux/sublime-zig - My own, more lightweight, syntax highlighting for Zig.
- ziglang/sublime-zig-language - Zig language support for Sublime Text.
- ziglang/vscode-zig - Zig language support for VSCode.
- ziglang/zig-mode - Zig mode for Emacs.
- ziglang/zig.vim - Vim configuration for Zig.
- zigtools/zls - Zig LSP implementation + Zig Language Server.

## Emulators

- fengb/fundude - Gameboy emulator for WASM.
- GrooveStomp/chip8-zig - CHIP-8 emulator.
- sourgrasses/ichigo - Virtual Boy emulator.
- floooh/kc85.zig - A KC85 emulator.
- Arwalk/ChipZ A simple Chip8 emulator (library and executable).

## Game tools and libraries

- hexops/mach - Game engine and graphics toolkit.
- michal-z/zig-gamedev - DirectX 12 game development ecosystem.
- floooh/sokol-zig - Sokol bindings.
- TM35-Metronome/metronome - A set of tools for modifying and randomizing Pokémon games.
- TM35-Metronome/tm35-nds - A library for working with Nintendo DS roms.
- user00e00/sudokuinzig - Simple and robust sudoku solver.
- wendigojaeger/ZigGBA - SDK for creating Game Boy Advance games using Zig.
- hazeycode/brucelib - Monorepo of modules for programming cross-platforms games, simulations, engines & editors.
- andy5995/zigdeck - A library that creates and shuffles a deck of cards from which you can draw.

## Games

- Akuli/curses-minesweeper - Minesweeper game written in curses.
- andrewrk/tetris - A simple tetris clone.
- fabioarnold/snake-zig - A simple snake clone.
- Stenodyon/blink - A game about building logic with lasers.
- thejoshwolfe/legend-of-swarkland - Hack-n-slash roguelike inspired by NetHack.
- tiehuis/zstack - Line-race tetris mode.
- kooparse/zalgebra - Linear algebra library for games and real-time computer graphics.
- floooh/pacman.zig - A Pacman clone.
- dantecatalfamo/OpenCSE - Free implementation of the Can’t Stop Express dice game.
- dbandstra/oxid - Arcade-style game where you fight waves of monsters in a fixed-screen maze.
- six519/YieArKUNGFUZig - Yie Ar Kung-Fu clone with raylib.

## GUI

- capy-ui/capy - Cross-platform library for making true native GUIs.
- david-vanderson/gui - Immediate mode GUI for Zig.
- Aransentin/ZWL - Zig Windowing Library.
- prime31/zig-upaya - GUI toolkit.
- fubark/cosmic - GUI toolkit.
- batiati/IUPforZig - Zig idiomatic and type-checked bindings for IUP Portable User Interface Toolkit.
- andrewrk/zig-sdl - Self-contained SDL2 package for Zig.
- Snektron/vulkan-zig - Vulkan binding generator.
- Avokadoen/zig_vulkan - Toy renderer using Vulkan and GLFW.
- andrewrk/zig-vulkan-triangle - Simple triangle displayed using Vulkan, GLFW, and Zig.
- kassane/QML-zig - QML bindings.
- cshenton/learnopengl - Learn OpenGL tutorials ported to Zig.
- ifreund/river - Dynamic wayland compositor that takes inspiration from dwm and bspwm.
- Nelarius/weekend-raytracer-zig - An implementation of the “Ray Tracing in One Weekend” book.
- SpexGuy/Zig-Gltf-Display - A program that displays glTF files using Vulkan.
- tiehuis/zig-raytrace - Simple raytracer.
- donpdonp/zootdeck - Fediverse GTK Desktop Reader.
- MasterQ32/ZigPaint - A simple paint application. Used to create an OpenGL loader/wrapper and a minimal UI system.
- olexij-christian/zgtk3 - GTK3 bindings.
- rcalixte/libqt6zig - Qt 6 bindings.

## Linters

- KurtWagner/zlinter - Linter that integrates from source into your `build.zig`
- DonIsaac/zlint - Linter
- nektro/ziglint - Linting suite

## Misc libraries

- natecraddock/ziglua - Bindings for the Lua C API.
- ryoppippi/zigcv - Bindings for OpenCV4.
- BraedonWooding/Lazy-Zig - Linq.
- DutchGhost/maybeuninit - MaybeUninit.
- emekoi/log.zig - A thread-safe logging library.
- kprotty/zap - A collection of libraries which provide interfaces over the system for writing high performance applications.
- vbrusca/ZigMatrixUtils - Matrix manipulation and utility library.
- mlarouche/zigimg - Library for reading and writing different image formats.
- bfactory-ai/zignal - Image processing library inspired by dlib.
- dbandstra/zig-pcx - PCX image format decoder and encoder.
- ziglibs/known-folders - Provides access to well-known folders across several operating systems.
- SasLuca/zig-nanoid - Battle-tested, tiny, secure, URL-friendly, unique string ID generator. Now available in pure Zig.
- kassane/libvlc-zig - Bindings for libVLC media framework.
- karlseguin/log.zig - Structured logging library.
- dantecatalfamo/9p-zig - 9P2000 client/server library.
- karlseguin/singleflight.zig - Duplicate function call suppression.
- kassane/lean4-zig - Bindings for Lean 4 (theorem prover).
- attron/astroz - Astronomical and Spacecraft Toolkit.
- pblischak/zprob - Module for Random Number Distributions.

## Network

- MasterQ32/zig-network - Small network abstraction layer around TCP & UDP.
- dantecatalfamo/zig-dns - Experimental DNS library implemented in zig.
- euantorano/ip.zig - Library for working with IP Addresses.
- lun-4/zigdig - Naive DNS client library.
- marler8997/netpunch - Outbound proxy protocol.
- remeh/statsd-zig - Basic DogStatsD UDP server.

### HTTP

- Luukdegram/apple_pie - HTTP 1.0/1.1 Server implementation.
- truemedian/zfetch - HTTP(S) client based on iguanaTLS.
- ducdetronquito/requestz - HTTP client based on h11.
- ducdetronquito/h11 - I/O-free HTTP/1.1 implementation inspired by hyper/h11.
- lun-4/ziget - Simple wget without libc.
- Vexu/routez - HTTP server.
- frmdstryr/zhp - Featureful HTTP server.
- axgdev/telegram_echobot_zig - Telegram echo bot.
- karlseguin/http.zig - HTTP/1.1 server.
- zigzap/zap - blazingly fast, robust HTTP server.

### Messaging

- skunkwerks/zamqp - AMQP client, based on rabbitmq-c.
- nine-lives-later/zzmq - ZeroMQ library, based on CZMQ.

## Web

- andrewrk/lua-in-the-browser - Using Zig to build Lua for WebAssembly.
- karlseguin/websocket.zig - A WebSocket implementation.
- kivikakk/htmlentities.zig - HTML5 entity data.
- meheleventyone/zig-wasm-test - A minimal WebAssembly example using Zig’s build system.
- shritesh/zig-wasm-dom - Zig + WebAssembly + JS + DOM.
- shritesh/zigfmt-web - Zig fmt on the web.
- zigwasm/wasm-zig - Common WASM runtime binding to C API.
- zigwasm/wasmer-zig - Bindings for the Wasmer WebAssembly runtime.
- zigwasm/wasmtime-zig - Bindings of Wasmtime.
- batiati/mustache-zig - Mustache implementation.
- floscodes/zerve - Simple framework for writing web services and web apps.
- zon-dev/zinc - Zinc is a framework focusing on high performance, usability, security, and extensibility.
- by-nir/aws-lambda-zig - Super-fast AWS Lambda runtime for Zig.

## System tools

- pbui-project/pbui-main - BSD/Linux core utilities written in Zig.
- hspak/brightnessztl - A CLI to control device backlight.
- thejoshwolfe/hexdump-zip - Produce an annotated hexdump of a zipfile.
- kubkon/zacho - Zig’s Mach-O parser.
- weskoerber/mac_address - A cross-platform library to retrieve the MAC address from your network interfaces without libc.

## Zig development tools

- marler8997/zigup - Download and manage zig compilers.
- korandoru/setup-zig - Set up a specific version of Zig environment on GitHub Actions.
- weskoerber/zvm - POSIX-compliant bash script to manage multiple active Zig versions.
- vezel-dev/zig-sdk - MSBuild SDK for building Zig, C, and C++ projects using the Zig compiler.
- aherrmann/rules_zig - Bazel build rules for Zig.

### Package managers

- zigtools/zpm - Unofficial Zig package manager.
- mattnite/gyro - Package manager with an index, build runner, and build dependencies.
- nektro/zigmod - Zig package manager.
- cheetah/asdf-zig - Zig plugin for the ASDF package manager.
- mattnite/ezpkg - Zig Package Manager Expansion Pack.
- nix-community/zon2nix - Convert the dependencies in `build.zig.zon` to a Nix expression.

## Parser

- darithorn/zig-toml - A TOML parser.
- Himujjal/zig-json5 - JSON5 parser resembling the `std.json` APIs.
- EzequielRamis/zimdjson - Parsing gigabytes of JSON per second. Zig port of simdjson with fundamental features.
- chwayne/rem - An HTML parsing library.
- goto-bus-stop/ziguid - GUID parsing/stringifying.
- 00JCIV00/cova - Commands, Options, Values, Arguments. A simple yet robust cross-platform command line argument parsing library.
- Hejsil/zig-clap - Simple command line argument parsing library.
- sam701/zig-cli - Package for building command line apps.
- kivikakk/libpcre.zig - Bindings to libpcre for Perl-compatible regular expressions.
- kivikakk/koino - CommonMark/GitHub Flavored Markdown parser and HTML renderer.
- kubkon/zig-yaml - YAML parser.
- loo-re/zini - Consistent .ini parser.
- sreehax/zig-ini - .ini parser.
- Nulo/ini-parser - .ini parser.
- tiehuis/zig-regex - A regex implementation.
- tiehuis/zig-ryu - Port of ryu.
- Vexu/zuri - URI parser.
- vi/zigmkv - Matroska/webm (mkv) parser.
- winksaville/zig-parse-args - Parse command line arguments.
- winksaville/zig-parse-number - Implement ParseNumber which can parse any TypeId.Int or TypeId.Float.
- gernest/base32 - Base32 encoding/decoding.
- caolan/zig-netstring - Netstring parser.
- Arwalk/zig-protobuf - Implementation of Protocol Buffers v3 leveraging Zig’s comptime.
- iddev5/inon - Data configuration file format.
- naneros/ztoml - TOMLv1.0.0 parser and convert TOML to JSON.
- InKryption/comath - Calculate math expressions in comptime.
- weskoerber/kewpie - A simple query string parser.

## Learning resources

- belse-de/zig-tut - A collection of small projects and tutorials to learn Zig.
- Sobeston/ziglearn - Zig learning resources.
- zighelp/zighelp - 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 - Simple Directmedia Layer.
- andrewrk/libz - Zlib data compression.
- andrewrk/ffmpeg - library only.
- andrewrk/libgroove - streaming audio processing library.
- andrewrk/libsoundio - library for real-time audio input and output.
- kassane/openssl-zig - crypto, providers & ssl libraries only.
- kassane/wolfssl - wolfssl library.
- kassane/libbpf - BPF CO-RE (Compile Once – Run Everywhere).
- kassane/winpthreads - PThread library for MinGW.
- raysan5/raylib - A simple and easy-to-use library to enjoy videogames programming.
- jmcnamara/libxlsxwriter - Creating Excel XLSX files.
- alexrp/libffi - libffi with a Zig build script.

### C++

- andrewrk/libchromaprint - library for generating audio fingerprints used by AcoustID.
- kassane/asio - (non-boost) Networking I/O library (w/ event-loop, C++14/17/20).
- kassane/fmt - Modern formatting library.
- kassane/context - (boost-context) fiber library (C++14/17/20).
- kassane/fiber - (boost-fiber) userland threads (C++14/17/20).
- kassane/beast - (boost-beast) HTTP and WebSocket (C++14/17/20).
- kassane/hana - (boost-hana) Meta-programming library (header-only, C++14/17/20).
- kassane/intrusive - (boost-intrusive) intrusive containers (header-only, C++03/11/14).
- kassane/unordered - (boost-unordered) hashmap and set concurrency containers (C++03/11/14).
- kassane/catch2 - Unit testing library (C++14/17/20).
- kassane/outcome - (non-boost) Error handler (C++14/17/20).
- kassane/json - jsoncpp ported to Zig packaging.
- kassane/Standalone-Server - Asio standalone C++ HTTP/S Server.
- kassane/range-v3 - modern range library (C++14/17/20).
- kassane/libzmq - ZeroMQ core engine in C++ library.
- kassane/libsigcplusplus - Typesafe callback system for standard C++.
- ggerganov/llama.cpp - 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 - Geteltorito re-write in Zig.
- momumi/x86-zig - Library for assembling x86.
- nrdmn/ilo_license_key - ILO license key library.
- vegecode/svd2zig - Convert System View Description (svd) files to Zig headers for baremetal development.
- mqttiotstuff/iotmonitor - MQTT IotMonitor tools, save time to monitor mqtt agents or devices.
- ve-nt/outfieldr - TLDR client.
- kubkon/zig-ios-example - Minimal `build.zig` for targeting iOS.
- ynuwenhof/zigbraten - Proof of concept internal cheat for Cube 2: Sauerbraten.
- vbrusca/ZigSdlGameTemplate - SDL game project template.

zig.md Github