Zig Programming Language
From the README: Cross-platform utility module for Zig to open native dialogs for the filesystem, message boxes, color-picking.
An Entity Component System API for Zig
From the README: objective-zig is a work-in-progress Objective-C runtime and auto generated collection of Objective-C frameworks in zig. You can find the bindings generator at objective-zig-gen. These bindings are not ready. See the notice at the bottom of the README.
From the README: This repository contains: * wire: a Zig module that defines types for Wayland's wire format and functions to serialize and deserialize messages. * shimizu-scanner: a command to take Wayland XML protocol descriptions and turn them into Zig types. * core: The Wayland core protocol as a Zig module, generated by shimizu-scanner * shimizu: A Zig module that provides higher level Connection and Proxy types.
From the README: Cubyz is a 3D voxel sandbox game (inspired by Minecraft). Cubyz has a bunch of interesting/unique features such as: Level of Detail (→ This enables far view distances.) 3D Chunks (→ There is no height or depth limit.) Procedural Crafting (→ You can craft anything you want, and the game will figure out what kind of tool you tried to make.) --- Written in Zig, of course
From the README: A delightful, statically typed programming language for writing reliable software. veb features algebraic data types, pattern matching, generics, classes (without inheritance), traits, flow-sensitive typing with type narrowing, trait-driven operator overloading and modules. Ergonomic features such as pipe and concat operators are also supported. Currently, the language runtime executes on a custom register-based virtual machine written in Zig.
PEM/DER reader, written in Zig. Currently supports elliptic curve private and public keys.
From the README: A small Zig module, as a convenience for writing WebAssembly plugins for Typst
From the README: # HypergraphZ - A Hypergraph Implementation in Zig ![GitHub Actions Workflow Status](https://lemm.ee/api/v3/image_proxy?url=https%3A%2F%2Fimg.shields.io%2Fgithub%2Factions%2Fworkflow%2Fstatus%2Fyamafaktory%2Fhypergraphz%2Fci.yml%3Fbranch%3Dmain%26style%3Dflat-square) HypergraphZ is a directed hypergraph implementation in Zig (https://en.wikipedia.org/wiki/Hypergraph): - Each hyperedge can contain zero, one (unary) or multiple vertices. - Each hyperedge can contain vertices directed to themselves one or more times. ## Usage Add `hypergraphz` as a dependency to your `build.zig.zon`: ```sh zig fetch --save https://github.com/yamafaktory/hypergraphz/archive/<commit-hash>.tar.gz ``` Add `hypergraphz` as a dependency to your `build.zig`: ```zig const hypergraphz = b.dependency("hypergraphz", .{ .target = target, .optimize = optimize, }); exe.root_module.addImport("hypergraphz", hypergraphz.module("hypergraphz")); ``` ## Documentation The latest online documentation can be found [here](https://yamafaktory.github.io/hypergraphz/).
Zig•EM is a novel programming framework for resource-constrained embedded systems. Read all about it in the linked blog post
Since zig has good cross platform compiler support, libraries that improve cross platform support are also interesting. This one is also potentially cross language.
From the README: ## Key Features - Simple and straightforward to use thanks to built-in [reflections](https://ziglang.org/documentation/master/#Function-Reflection). - Just define a struct and accessing it's fields. - Supports recursive struct. - Deinitialization is handled for you, just call `deinit()` and you are done. - Fields are automatically parsed based on field type.
A couple of promising new ones have popped up: https://zigistry.dev/ https://ziglist.org/
The principles from the book Crafting Interpreters by Bob Nystrom, but in Zig
Convenience functions for easy integration with AFL++ for both Zig and C/C++ programmers!
From the README: Provides a package to build/run GNU's make program. The primary use case for this project is to facilitate "incremental ports" to the Zig build system. Start with a project by building it with Make then incrementally transfer parts of it to build.zig while maintaining a working build that can be tested throughout. It's not recommended for projects to use this package long term.
From the README: y3 is a wrapper for [yabai](https://github.com/koekeishiya/yabai) that attempts to emulate i3 behavior and adds additional logic to improve the experience. It may not match 1:1, please let me know if something is missing or incorrect.
From the README: This is a wrapper for CSFML. Theres no problem importing CSFML in Zig, but the resulting code can be a little bit messy. My goal is to make things close enough to SFML, with nice methods.
zigverm (previously zigvm) is a version manager for Zig Change log: https://github.com/AMythicDev/zigverm/blob/main/CHANGELOG.md#v030-2024-06-26
Zig library which implements tls 1.2 and tls 1.3 protocol.
Makes integrating Zig projects with GitHub Actions easy and uses mirrors to reduce load on servers
Contains plenty of changes and upgrades to LLVM 18.1.7 Go read the [release notes](https://ziglang.org/download/0.13.0/release-notes.html)
From the README: Hexdump is designed to replace the standard Hexdump command. If you feel uncomfortable replacing it, simply rename the binary to something else. ## Features * ASCII sidebar * Skipping bytes * Specified length * Multiple formats * Colored output * Output to file
Zigar is a software tool set that lets you utilize Zig code in your JavaScript project.
From the README: JSON library for inspecting arbitrary values. Optionally accepts trailing commas. Fully passes https://github.com/nst/JSONTestSuite.
*From the blog:* Sometimes, programming projects are too easy and boring. Sometimes, they're too hard, never ending or producing subpar results. This past week I had the pleasure of completing a project that felt like maximum difficulty - only possible because I am at the top of my game, using a programming language designed for making perfect software. This problem threw everything it had at me, but I rose to the challenge and emerged victorious. What a rush. In this blog post I'll dig into the technical implementation as well as provide the Zig Progress Protocol Specification.
From the README: Auto-generated Zig bindings for the sokol headers. For Zig version 0.12.0 and 0.13.0-dev In case of breaking changes in Zig, the bindings might fall behind. Please don't hesitate to ping me via a Github issue, or even better, provide a PR :) Support for stable Zig versions is in branches (e.g. zig-0.12.0), those versions are 'frozen in time' though.
From the README: An effortless command-line argument parser for Zig. ## Features - Zero allocations. - Declaratively define your command as a plain Zig type. - Single-function API. - Multi-level subcommands. - Automatic help message generation at comptime.
From the README: * Simple to use: Minimal and customizable keymaps with vim binding support. * Image Previews: Preview images with Kitty terminal. * File Previews: Preview contents of files directly in the terminal. * Configurable Options: Customize settings via an external configuration file.
From the README: Zig currently does not have a built-in, general purpose Set data structure at this point in time. Until it does, try this! Rationale: It may be common knowledge that a dictionary or map or hashset can be used as a set where the value is basically void. While this is true, there's a lot to think about in terms of supporting all the common set operations in a performant and correct way and there's no good reason why a common module for this can't exist. After studying the Zig stdlib, I'm hoping this implementation can fill that gap and provide some value.
From the README: This library is a friendly refactor of TigerBeetle's flags module that adds support for: * subcommand specific help messages; and * short options (-k=v).
From the README: # arbor ## For the future of plugin development ## Goals * Dead-simple plugin development. Write <= 100 lines of code and have a runnable blank-slate plugin. * Ideally only require Zig as a toolchain dependency, not as a programming language. You should be able to write plugins in C/C++/whatever and easily link that code to Arbor via a C API and the Zig build system. * Could also have a `get_zig.sh` that will download latest stable Zig if you don't already have it * Easy cross-compilation. Compile to Mac/Linux/Windows from Mac/Linux/Windows, batteries included. * Cross-platform graphics. A simple software renderer (like Olivec), but also native graphics programming, potentially using something like [sokol](https://github.com/floooh/sokol.git), or making a thin wrapper around Direct2D/CoreGraphics for cross-platform graphics abstraction, giving the programmer a simple choice with little-to-no platform-specific considerations. * Simple, declarative UI design. Possibly with the option of using a custom CSS-like syntax (or [Ziggy](https://github.com/kristoff-it/ziggy.git)) to declare, arrange, and style UI widgets at **runtime** or **compile-time**, all compiling to native code--not running in some god-forsaken web browser embedded in a plugin UI 🤮 ## Have: * A nice abstraction layer over plugin APIs which should lend itself nicely to extending support to other APIs * Easy comptime parameter generation * Basic CLAP audio plugin supporting different types of parameters, sample-accurate automation * A janky VST2 implementation that works in Reaper and mostly works in other DAWs * Simple, portable software rendering using [Olivec](https://github.com/tsoding/olive.c) and a custom text rendering function with a bitmap font
From the README: Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD. [...] Ly should work with any X desktop environment, and provides basic wayland support (sway works very well, for example).
From the README: A Zig wrapper around [md4c](https://github.com/mity/md4c) for parsing Markdown. Exposes a single function that puts a parser type together from comptime-known Zig functions. The generalisation to using vtables is left as an exercise to the user.
From the README: This library provides a simple and efficient way to generate and manipulate UUIDs (Universally Unique Identifiers) in Zig. ## Features - Generate UUIDs of all versions (1, 3, 4, 5) - Parse UUIDs from strings - Convert UUIDs to strings, 128-bit integers, and byte-arrays - Access to parts of UUID (`time_low`, `time_mid`, `node`, etc.)