zig/lib/std / std.zig

ArrayHashMap

pub const ArrayHashMap = array_hash_map.ArrayHashMap;

ArrayHashMapUnmanaged

pub const ArrayHashMapUnmanaged = array_hash_map.ArrayHashMapUnmanaged;

ArrayList

array_list.zig
pub const ArrayList = @import("array_list.zig").ArrayList;

ArrayListAligned

array_list.zig
pub const ArrayListAligned = @import("array_list.zig").ArrayListAligned;

ArrayListAlignedUnmanaged

array_list.zig
pub const ArrayListAlignedUnmanaged = @import("array_list.zig").ArrayListAlignedUnmanaged;

ArrayListUnmanaged

array_list.zig
pub const ArrayListUnmanaged = @import("array_list.zig").ArrayListUnmanaged;

AutoArrayHashMap

pub const AutoArrayHashMap = array_hash_map.AutoArrayHashMap;

AutoArrayHashMapUnmanaged

pub const AutoArrayHashMapUnmanaged = array_hash_map.AutoArrayHashMapUnmanaged;

AutoHashMap

pub const AutoHashMap = hash_map.AutoHashMap;

AutoHashMapUnmanaged

pub const AutoHashMapUnmanaged = hash_map.AutoHashMapUnmanaged;

BitStack

BitStack.zig
pub const BitStack = @import("BitStack.zig");

BoundedArray

bounded_array.zig
pub const BoundedArray = @import("bounded_array.zig").BoundedArray;

BoundedArrayAligned

bounded_array.zig
pub const BoundedArrayAligned = @import("bounded_array.zig").BoundedArrayAligned;

Build

Build.zig
pub const Build = @import("Build.zig");

BufMap

buf_map.zig
pub const BufMap = @import("buf_map.zig").BufMap;

BufSet

buf_set.zig
pub const BufSet = @import("buf_set.zig").BufSet;

ChildProcess

child_process.zig

Deprecated: use process.Child.

pub const ChildProcess = @import("child_process.zig").ChildProcess;

ComptimeStringMap

pub const ComptimeStringMap = comptime_string_map.ComptimeStringMap;

ComptimeStringMapWithEql

pub const ComptimeStringMapWithEql = comptime_string_map.ComptimeStringMapWithEql;

DoublyLinkedList

linked_list.zig
pub const DoublyLinkedList = @import("linked_list.zig").DoublyLinkedList;

DynLib

dynamic_library.zig
pub const DynLib = @import("dynamic_library.zig").DynLib;

DynamicBitSet

pub const DynamicBitSet = bit_set.DynamicBitSet;

DynamicBitSetUnmanaged

pub const DynamicBitSetUnmanaged = bit_set.DynamicBitSetUnmanaged;

EnumArray

pub const EnumArray = enums.EnumArray;

EnumMap

pub const EnumMap = enums.EnumMap;

EnumSet

pub const EnumSet = enums.EnumSet;

HashMap

pub const HashMap = hash_map.HashMap;

HashMapUnmanaged

pub const HashMapUnmanaged = hash_map.HashMapUnmanaged;

Ini

Ini.zig
pub const Ini = @import("Ini.zig");

MultiArrayList

multi_array_list.zig
pub const MultiArrayList = @import("multi_array_list.zig").MultiArrayList;

PackedIntArray

packed_int_array.zig
pub const PackedIntArray = @import("packed_int_array.zig").PackedIntArray;

PackedIntArrayEndian

packed_int_array.zig
pub const PackedIntArrayEndian = @import("packed_int_array.zig").PackedIntArrayEndian;

PackedIntSlice

packed_int_array.zig
pub const PackedIntSlice = @import("packed_int_array.zig").PackedIntSlice;

PackedIntSliceEndian

packed_int_array.zig
pub const PackedIntSliceEndian = @import("packed_int_array.zig").PackedIntSliceEndian;

PriorityQueue

priority_queue.zig
pub const PriorityQueue = @import("priority_queue.zig").PriorityQueue;

PriorityDequeue

priority_dequeue.zig
pub const PriorityDequeue = @import("priority_dequeue.zig").PriorityDequeue;

Progress

Progress.zig
pub const Progress = @import("Progress.zig");

RingBuffer

RingBuffer.zig
pub const RingBuffer = @import("RingBuffer.zig");

SegmentedList

segmented_list.zig
pub const SegmentedList = @import("segmented_list.zig").SegmentedList;

SemanticVersion

SemanticVersion.zig
pub const SemanticVersion = @import("SemanticVersion.zig");

SinglyLinkedList

linked_list.zig
pub const SinglyLinkedList = @import("linked_list.zig").SinglyLinkedList;

StaticBitSet

pub const StaticBitSet = bit_set.StaticBitSet;

StringHashMap

pub const StringHashMap = hash_map.StringHashMap;

StringHashMapUnmanaged

pub const StringHashMapUnmanaged = hash_map.StringHashMapUnmanaged;

StringArrayHashMap

pub const StringArrayHashMap = array_hash_map.StringArrayHashMap;

StringArrayHashMapUnmanaged

pub const StringArrayHashMapUnmanaged = array_hash_map.StringArrayHashMapUnmanaged;

TailQueue

deprecated: use DoublyLinkedList.

pub const TailQueue = DoublyLinkedList;

Target

target.zig
pub const Target = @import("target.zig").Target;

Thread

Thread.zig
pub const Thread = @import("Thread.zig");

Treap

treap.zig
pub const Treap = @import("treap.zig").Treap;

Tz

pub const Tz = tz.Tz;

Uri

Uri.zig
pub const Uri = @import("Uri.zig");

array_hash_map

array_hash_map.zig
pub const array_hash_map = @import("array_hash_map.zig");

atomic

atomic.zig

Memory ordering, atomic data structures, and operations.

pub const atomic = @import("atomic.zig");

base64

base64.zig

Base64 encoding/decoding.

pub const base64 = @import("base64.zig");

bit_set

bit_set.zig

Bit manipulation data structures.

pub const bit_set = @import("bit_set.zig");

builtin

builtin.zig

Comptime-available information about the build environment, such as the target and optimize mode.

pub const builtin = @import("builtin.zig");

c

c.zig
pub const c = @import("c.zig");

coff

coff.zig

COFF format.

pub const coff = @import("coff.zig");

compress

compress.zig

Compression algorithms such as zlib, zstd, etc.

pub const compress = @import("compress.zig");

comptime_string_map

comptime_string_map.zig
pub const comptime_string_map = @import("comptime_string_map.zig");

crypto

crypto.zig

Cryptography.

pub const crypto = @import("crypto.zig");

debug

debug.zig

Debug printing, allocation and other debug helpers.

pub const debug = @import("debug.zig");

dwarf

dwarf.zig

DWARF debugging data format.

pub const dwarf = @import("dwarf.zig");

elf

elf.zig

ELF format.

pub const elf = @import("elf.zig");

enums

enums.zig

Enum-related metaprogramming helpers.

pub const enums = @import("enums.zig");

event

event.zig

Evented I/O data structures.

pub const event = @import("event.zig");

fifo

fifo.zig

First in, first out data structures.

pub const fifo = @import("fifo.zig");

fmt

fmt.zig

String formatting and parsing (e.g. parsing numbers out of strings).

pub const fmt = @import("fmt.zig");

fs

fs.zig

File system-related functionality.

pub const fs = @import("fs.zig");

hash

hash.zig

Fast hashing functions (i.e. not cryptographically secure).

pub const hash = @import("hash.zig");

hash_map

hash_map.zig
pub const hash_map = @import("hash_map.zig");

heap

heap.zig

Allocator implementations.

pub const heap = @import("heap.zig");

http

http.zig

HTTP client and server.

pub const http = @import("http.zig");

io

io.zig

I/O streams, reader/writer interfaces and common helpers.

pub const io = @import("io.zig");

json

json.zig

JSON parsing and serialization.

pub const json = @import("json.zig");

leb

leb128.zig

LEB128 encoding.

pub const leb = @import("leb128.zig");

log

log.zig

A standardized interface for logging.

pub const log = @import("log.zig");

macho

macho.zig

Mach-O format.

pub const macho = @import("macho.zig");

math

math.zig

Mathematical constants and operations.

pub const math = @import("math.zig");

mem

mem.zig

Functions for comparing, searching, and manipulating memory.

pub const mem = @import("mem.zig");

meta

meta.zig

Metaprogramming helpers.

pub const meta = @import("meta.zig");

net

net.zig

Networking.

pub const net = @import("net.zig");

os

os.zig

Wrappers around OS-specific APIs.

pub const os = @import("os.zig");

once

once.zig
pub const once = @import("once.zig").once;

packed_int_array

packed_int_array.zig

A set of array and slice types that bit-pack integer elements.

pub const packed_int_array = @import("packed_int_array.zig");

pdb

pdb.zig

PDB file format.

pub const pdb = @import("pdb.zig");

process

process.zig

Accessors for process-related info (e.g. command line arguments) and spawning of child processes.

pub const process = @import("process.zig");

rand

rand.zig

Fast pseudo-random number generators (i.e. not cryptographically secure).

pub const rand = @import("rand.zig");

sort

sort.zig

Sorting.

pub const sort = @import("sort.zig");

simd

simd.zig

Single Instruction Multiple Data (SIMD) helpers.

pub const simd = @import("simd.zig");

ascii

ascii.zig

ASCII text processing.

pub const ascii = @import("ascii.zig");

tar

tar.zig

Tar archive format compression/decompression.

pub const tar = @import("tar.zig");

testing

testing.zig

Testing allocator, testing assertions, and other helpers for testing code.

pub const testing = @import("testing.zig");

time

time.zig

Sleep, obtaining the current time, conversion constants, and more.

pub const time = @import("time.zig");

tz

tz.zig

Time zones.

pub const tz = @import("tz.zig");

unicode

unicode.zig

UTF-8 and UTF-16LE encoding/decoding.

pub const unicode = @import("unicode.zig");

valgrind

valgrind.zig

Helpers for integrating with Valgrind.

pub const valgrind = @import("valgrind.zig");

wasm

wasm.zig

Constants and types representing the Wasm binary format.

pub const wasm = @import("wasm.zig");

zig

zig.zig

Tokenizing and parsing of Zig code and other Zig-specific language tooling.

pub const zig = @import("zig.zig");

start

start.zig
pub const start = @import("start.zig");

build

deprecated: use Build.

pub const build = Build;

const root = @import("root");
const options_override = if (@hasDecl(root, "std_options")) root.std_options else struct {};

options

Stdlib-wide options that can be overridden by the root file.

pub const options = struct {
    pub const enable_segfault_handler: bool = if (@hasDecl(options_override, "enable_segfault_handler"))
        options_override.enable_segfault_handler
    else
        debug.default_enable_segfault_handler;

    pub const wasiCwd: fn () fs.Dir = if (@hasDecl(options_override, "wasiCwd"))
        options_override.wasiCwd
    else
        fs.defaultWasiCwd;

    pub const io_mode: io.Mode = if (@hasDecl(options_override, "io_mode"))
        options_override.io_mode
    else if (@hasDecl(options_override, "event_loop"))
        .evented
    else
        .blocking;

    pub const event_loop: event.Loop.Instance = if (@hasDecl(options_override, "event_loop"))
        options_override.event_loop
    else
        event.Loop.default_instance;

    pub const event_loop_mode: event.Loop.Mode = if (@hasDecl(options_override, "event_loop_mode"))
        options_override.event_loop_mode
    else
        event.Loop.default_mode;

    pub const log_level: log.Level = if (@hasDecl(options_override, "log_level"))
        options_override.log_level
    else
        log.default_level;

    pub const log_scope_levels: []const log.ScopeLevel = if (@hasDecl(options_override, "log_scope_levels"))
        options_override.log_scope_levels
    else
        &.{};

    pub const logFn: fn (
        comptime message_level: log.Level,
        comptime scope: @TypeOf(.enum_literal),
        comptime format: []const u8,
        args: anytype,
    ) void = if (@hasDecl(options_override, "logFn"))
        options_override.logFn
    else
        log.defaultLog;

    pub const fmt_max_depth = if (@hasDecl(options_override, "fmt_max_depth"))
        options_override.fmt_max_depth
    else
        fmt.default_max_depth;

    pub const cryptoRandomSeed: fn (buffer: []u8) void = if (@hasDecl(options_override, "cryptoRandomSeed"))
        options_override.cryptoRandomSeed
    else
        @import("crypto/tlcsprng.zig").defaultRandomSeed;

    pub const crypto_always_getrandom: bool = if (@hasDecl(options_override, "crypto_always_getrandom"))
        options_override.crypto_always_getrandom
    else
        false;

    pub const keep_sigpipe: bool = if (@hasDecl(options_override, "keep_sigpipe"))
        options_override.keep_sigpipe
    else
        false;

    pub const http_disable_tls = if (@hasDecl(options_override, "http_disable_tls"))
        options_override.http_disable_tls
    else
        false;

    pub const side_channels_mitigations: crypto.SideChannelsMitigations = if (@hasDecl(options_override, "side_channels_mitigations"))
        options_override.side_channels_mitigations
    else
        crypto.default_side_channels_mitigations;
};

// This forces the start.zig file to be imported, and the comptime logic inside that
// file decides whether to export any appropriate start symbols, and call main.
comptime {
    _ = start;

    for (@typeInfo(options_override).Struct.decls) |decl| {
        if (!@hasDecl(options, decl.name)) @compileError("no option named " ++ decl.name);
    }
}

test {
    testing.refAllDecls(@This());
}