This page contains a human-curated directory for the Zig standard library. All *.zig links point to HTML documents which have been automatically generated from the library source.
The files are split into two columns: The right column is the raw Zig source code in the file. The left column will contain public identifiers and any document comments to explain them.
array_list.zig Probably the most commonly used data structure in Zig. This is a resizeable list. Contains a huge number of handy methods for manipulating a list. See Standard Patterns: ArrayList (ziglearn.org).
bounded_array.zig For fixed-size lists. Compare with ArrayList.
multi_array_list.zig A list of structs, but stores the fields of the structs efficiently as contiguous lists. See Struct of Arrays (SoA) in Zig? Easy & in Userland! (zig.news).
array_hash_map.zig
A "hash" or "dictionary" storing values by hashed key.
For typical needs, consider StringHashMap
or AutoHashMap
.
See Zig hashmaps explained (hexops.com).
buf_map.zig
A StringHashMap that copies and frees keys and values for you!
buf_set.zig
A StringHashMap that works as a set of strings.
comptime_string_map.zig
Basically a StringHashMap that hashes at comptime!
enums.zig
Functions for working with Zig's enum
s.
fifo.zig and priority_dequeue.zig and priority_queue.zig General-purpose queue structures with handy methods.
BitStack.zig
An ArrayList
of bits with stack methods like
push()
and pop()
. See
RingBuffer.zig A circular buffer with a backing slice with read/write and slicing operations.
linked_list.zig
Contains SinglyLinkedList()
and
DoublyLinkedList()
linked list types.
treap.zig A treap (wikipedia.org) binary search tree.
packed_int_array.zig Read and write integers packed into memory like sardines.
bit_set.zig Bit sets let you manipulate the individual bits of your bytes. This file contains multiple bit set types and has good descriptions of each.
See also: atomic.zig
under Parallel and concurrent execution.
std.zig
The starting point for the whole standard library. This is what
gets included when you do const std = @import("std");
.
Imports the rest of the namespace. You can start here to browse
most of the library in this HTML version.
zig.zig Zig code tokenzing, parsing, abstract syntax tree, etc. Zig in Zig so you can Zig while you Zig.
meta.zig Comptime introspection for Zig data types. (Get the fields from a struct, for example).
testing.zig
A bunch of helpful functions (and even an allocator that fails
on purpose) for your test
blocks.
debug.zig
Contains helpful functions such as
std.debug.print()
,
assert()
, panic()
, and
dumpCurrentStackTrace()
.
Build.zig
Zig's build API provides functionality to
perform just about any compilation or file manipulation tasks you
might need to build a project. (You typically call its features from
a build.zig
file.)
builtin.zig
All sorts of meta Zig stuff. Contains types returned by the
builtin functions (@foo()
).
mem.zig
Contains lots of functions for manipulating memory such as
sort()
,
eql()
,
indexOfDiff()
,
sliceTo()
,
len()
,
trim()
,
indexOf()
,
indexOfAny()
,
indexOfNone()
,
readIntNative()
,
writeIntNative()
,
tokenizeSequence()
,
splitSequence()
,
SplitIterator()
,
alignInSlice()
,
and many more.
mem/Allocator.zig Contains the interface used by all memory allocation features in the Zig standard library.
heap.zig Defines many allocation strategies for managing memory including heap/general_purpose_allocator.zig, heap/PageAllocator.zig, heap/arena_allocator.zig, and heap/memory_pool.zig.
See
fmt.zig
String formatting (this is how print()
works), number
parsing, etc.
TODO: I need to make a "zig fmt by example" page.
io.zig Input/Output support for reading and writing data. Includes io/Reader.zig, io/writer.zig, io/bit_reader.zig, io/bit_writer.zig, io/buffered_reader.zig, io/buffered_writer.zig, and io/tty.zig.
log.zig
Standardized logging with support for levels (err
,
warn
, info
, debug
).
Progress.zig Terminal progress indicator (uses ANSI escape sequences when possible).
sort.zig
Sorting and searching algorithms such as
insertion()
,
heap()
,
binarySearch()
,
min()
,
and
max()
.
json.zig Read and write data to and from the JSON serialization format.
Ini.zig
Read INI (*.ini
) formatted configuration files.
tar.zig Support for the Tar (wikipedia.org) archive file format.
crypto.zig
A huge number of cryptographic functions.
Hashes: crypto/md5.zig,
crypto/sha1.zig,
crypto/sha2.zig,
crypto/sha3.zig,
crypto/bcrypt.zig,
crypto/scrypt.zig,
and more.
Cryptography:
crypto/25519/curve25519.zig,
crypto/25519/ed25519.zig,
crypto/aes.zig,
and more.
See also: crypto/tls.zig
and crypto/Certificate.zig
under Networking.
hash.zig More general hashing algorithms.
rand.zig Fast and/or cryptographically secure pseudo-random number generators.
leb128.zig Read and write LEB128 (wikipedia.org) Little Endian Base 128 numbers.
SemanticVersion.zig Read (parse), write, and sort semantic version numbers.
unicode.zig
Functions for handling encoded Unicode sequences:
utf8Encode()
,
utf8Decode()
,
utf8ValidateSlice()
,
utf16leToUtf8Alloc()
,
etc.
ascii.zig
Handy functions for testing u8
values as 7-bit ASCII
characters (isAlphabetic()
, toUpper()
, etc.
base64.zig Encode and decode Base64 (wikipedia.org) data.
c.zig Utilities for interoperating with C code. Also contains a lot of OS and architecture-specific function implementations. (See a partial list under OS.)
time/epoch.zig Important dates for common OSs and some simple date calculations.
tz.zig Handle Earth timezone files.
compress.zig Contains a large number of compression/decompression algorithms such as compress/gzip.zig, compress/xz.zig, compress/zlib.zig, and more!
math.zig General mathematical operations.
simd.zig Functions for working with SIMD (Single Instruction; Multiple Data), if hardware support is present.
valgrind.zig Support for working with the Valgrind memory leak detection and profiling tool.
os.zig Wrappers for a very large list of OS-specific functions. Includes Unix-like, Emscripten, WASI, Plan9, UEFI, and Windows.
target.zig Functionality for building Zig programs for a big list of processor architectures.
process.zig Environment information, etc. for processes (e.g. current working directory and environment variables).
time.zig Get time, measure time, and sleep.
start.zig
The start()
function for executable files. Handles
OS-specific startup tasks.
elf.zig Support for the ELF (wikipedia.org) executable format.
coff.zig Support for the COFF (wikipedia.org) executable format.
macho.zig Support for the Mach-O (wikipedia.org) executable format.
dwarf.zig Support for the DWARF (wikipedia.org) debugging data format.
pdb.zig Support for the PDB (wikipedia.org) debugging data format.
wasm.zig WASM opcode list and functions.
Thread.zig Native operating system thread support.
child_process.zig Native child process spawning support.
dynamic_library.zig Utilities for working with dynamic libraries (.dll, .so, etc.)
fs.zig File system support. Contains fs/file.zig, fs/path.zig, fs/wasi.zig, and fs/watch.zig.
See also: the C-code files such as c/linux.zig, c/openbsd.zig, c/freebsd.zig, c/netbsd.zig, c/darwin.zig, c/wasi.zig, c/windows.zig, etc.
atomic.zig Support for atomic access to shared memory. See specific data structures in atomic/queue.zig and atomic/stack.zig.
once.zig Executes a function just once.
event.zig
Support for various types of event-based programming.
Examples:
event/batch.zig,
event/future.zig,
and
event/loop.zig.
See also: Thread.zig
and
child_process.zig
under OS.
net.zig Networking functions for TCP/IP, Unix Sockets, DNS, etc.
Uri.zig
Read and write (parse) URIs (see the tests in this one!).
crypto/tls.zig and crypto/Certificate.zig for cryptographic networking.
http.zig HTTP support! Includes http/Client.zig, http/Headers.zig, and http/Server.zig.