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)
Function Description
capability() Which backends are present
compress(data, fmt[, lvl]) Compress a string; zstd levels 1–19, lz4 0 (fast) or 1–12 (HC); default 3 either way
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