Skip to main content

std.compression

std.compression compresses and decompresses data and files via zstd and lz4. Available only when the engine was built with those libraries — otherwise calls throw UNSUPPORTED.

Reference

capability() // -> {zstd: bool, lz4: bool}
compress(data, "zstd"|"lz4"[, level])
decompress(data) // format auto-detected by frame magic bytes
compress_file(in, out, format[, level])
decompress_file(in, out)
FunctionDescription
capability()Which backends are present
compress(data, fmt[, lvl])Compress a string; zstd levels 1–19 (default 3); lz4 0 (fast) or HC
decompress(data)Decompress — format auto-detected
compress_file(in, out, fmt[, lvl])File variant
decompress_file(in, out)File variant

File paths accept ~ and $VAR expansion.

Examples

if (std.compression.capability().zstd) {
var packed = std.compression.compress("hello hello hello", "zstd", 3)
var back = std.compression.decompress(packed)
print(back) // hello hello hello
}

// file round-trip
std.compression.compress_file("plain.txt", "plain.zst", "zstd", 6)
std.compression.decompress_file("plain.zst", "plain2.txt")

// lz4 fast path
if (std.compression.capability().lz4) {
var p = std.compression.compress("data", "lz4")
print(std.compression.decompress(p))
}

Availability

var caps = std.compression.capability()
print(caps.zstd, caps.lz4)
if (!caps.zstd && !caps.lz4) {
print("no compression backends — build with zstd/lz4")
}

See also

  • std.file — file I/O used by *_file
  • Embedding — backend auto-detection via ScriiCore.cmake