ZDK is a curated collection of zero-dependency, header-only C libraries for robust system and game development. It aggregates the z-libs suite into a single, installable package.
It is designed to provide a "Standard Library Extension" experience, offering essential data structures (vectors, maps, lists), math utilities, error handling, ... without the bloat of large frameworks.
| Library | Description | Included in zworld.h? |
|---|---|---|
| zvec.h | Type-safe generic vector (dynamic array). | Yes |
| zmap.h | Type-safe generic hash map. | Yes |
| ztree.h | Type-safe generic red-black tree. | Yes |
| zlist.h | Type-safe generic doubly linked list. | Yes |
| zmath.h | Fast, software-based math library (vectors, matrices, trig). | Yes |
| zstr.h | Modern string library with small string optimization (SSO) and Views. | Yes |
| zrand.h | Pseudo-random number generation utilities. | Yes |
| zthread.h | Type-safe, cross-platform threading and synchronization library. | Yes |
| zfile.h | Cross-platform file system library. | Yes |
| zwasm.h | Freestanding WebAssembly binary generator. | Yes |
| znet.h | Networking library that unifies TCP, UDP, and HTTP. | Yes |
| ztime.h | simple, cross-platform time and clock library. | Yes |
| zerror.h | Result types (Result<T,E>) and stack tracing. | No |
| zalloc.h | Custom memory allocator wrappers and tracking. | No |
| zops.h | Polymorphic API that glues the rest of z-libs | No |
Go to the Releases page (or the latest Action run), download the .deb file, and run
sudo apt install ./zdk_latest_all.deb`.Installs headers to
/usr/include/zdk/.
If you use the clib package manager, run:
clib install z-libs/zdk`.git clone https://github.com/z-libs/zdk.git
cd zdk
sudo make installInclude <zdk/zworld.h> to get the standard data structures and math utilities immediately. This makes tools like zvec, zlist, zmap, zstr, zrand, and zmath available for use in your main function.
#defineZMATH_IMPLEMENTATION#include<zdk/zworld.h>DEFINE_VEC_TYPE(int, Int)
intmain(void) {
// zvec, zmap, zstr, zmath, ... are all available here.vec_autofree(Int) numbers=vec_init(Int);
vec_push(&numbers, 100);
floatx=zmath_sin(1.5f);
return0;
}Note: don't forget using the scanner or making your own tables for the generic containers.
System-level libraries (zerror, zalloc, zops) are not included in zworld.h by default. This is because they often require configuration macros (like defining custom mallocs or implementation flags) before inclusion.
#defineZERROR_IMPLEMENTATION// Define implementation in one file.#include<zdk/zerror.h>#include<zdk/zworld.h>DEFINE_VEC_TYPE(int, Int)
intmain(void) {
// Use zerror features.zresresult=zres_ok();
// Use zworld features.vec_autofree(Int) v=vec_init(Int);
return0;
}You must include them manually. For example, to use zerror, you would define ZERROR_IMPLEMENTATION before including <zdk/zerror.h>, and then include <zdk/zworld.h> for the rest of the suite.
This repository is automatically synced with the individual upstream repositories every 12 hours. To contribute to a specific module, please visit its respective repository at github.com/z-libs.