libzstd is a Zig package that vendors C compression libraries and exposes
small typed Zig wrappers.
Current status:
libzstd: implemented (source is compiled by Zig)libbrotli: plannedlibdeflate: planned
- Compiles upstream
libzstdsources directly inbuild.zig - Exposes one-shot and streaming APIs in Zig (
std.Io.Reader/std.Io.Writer) - Exposes full raw
libzstdAPI underlibzstd.c - Supports both libc modes:
- static libc via
ziglibc(default) - dynamic/system libc via
-Dstatic_libc=false
- static libc via
-Dstatic_libc=true|false(defaulttrue): static ziglibc or system libc-Dshared=true|false(defaultfalse): buildlibzstdartifact as shared/static
zig build test
zig build test -Dstatic_libc=false
zig build exampleconst zstd = @import("libzstd");
const compressed = try zstd.compressDefault(allocator, input);
defer allocator.free(compressed);
const decompressed = try zstd.decompress(allocator, compressed, input.len * 2);
defer allocator.free(decompressed);Raw libzstd symbols are exposed through zstd.c, e.g.
zstd.c.ZSTD_versionNumber().