Skip to content

compress

The compress package compresses and decompresses data in memory. Every function accepts a string or bytes and returns bytes; call .to_string() on the result to get text back.

FormatCompressDecompress
DEFLATEdeflateinflate
GZipgzipgunzip
Brotlibrotliunbrotli
Zstandardzstdunzstd
ZIP archivezip_createzip_extract
text = "Kiwi is a scripting language. " * 50
packed = compress::gzip(text)
println packed.size() < text.size() # true
println compress::gunzip(packed).to_string() == text # true
smaller = compress::zstd(text, 10) # Zstandard, compression level 10
println compress::unzstd(smaller).to_string() == text # true

To write compressed data to disk, use fio::writebytes:

fio::writebytes("log.txt.gz", compress::gzip(fio::read("log.txt")))

zip_create takes a list of {name, content} hashmaps and returns the archive as bytes. zip_extract does the reverse.

archive = compress::zip_create([
{name: "hello.txt", content: "Hello from Kiwi!"},
{name: "data.csv", content: "1,2,3\n4,5,6"}
])
for entry in compress::zip_extract(archive) do
println "${entry["name"]}: ${entry["content"].size()} bytes"
end
compress::deflate(data)

Compresses data using the Deflate algorithm.

ParameterTypeDefaultDescription
dataanyThe data to compress.

Returns bytes — The compressed data.

compress::inflate(data)

Decompresses Deflate-compressed data.

ParameterTypeDefaultDescription
databytesThe compressed data.

Returns any — The decompressed data.

compress::gzip(data)

Compresses data using the gzip algorithm.

ParameterTypeDefaultDescription
dataanyThe data to compress.

Returns bytes — The gzip-compressed data.

compress::gunzip(data)

Decompresses gzip-compressed data.

ParameterTypeDefaultDescription
databytesThe compressed data.

Returns any — The decompressed data.

compress::brotli(data)

Compresses data using the Brotli algorithm.

ParameterTypeDefaultDescription
dataanyThe data to compress.

Returns bytes — The Brotli-compressed data.

compress::unbrotli(data)

Decompresses Brotli-compressed data.

ParameterTypeDefaultDescription
databytesThe compressed data.

Returns any — The decompressed data.

compress::zstd(data, level = 3)

Compresses data using the Zstandard (zstd) algorithm.

ParameterTypeDefaultDescription
dataanyThe data to compress.
levelinteger3Compression level (default 3).

Returns bytes — The zstd-compressed data.

compress::unzstd(data)

Decompresses Zstandard-compressed data.

ParameterTypeDefaultDescription
databytesThe compressed data.

Returns any — The decompressed data.

compress::zip_create(entries, level = 1)

Creates a ZIP archive from a list of entries.

ParameterTypeDefaultDescription
entrieslistA list of file entries to include in the archive.
levelinteger1Compression level (default 1).

Returns bytes — The ZIP archive as bytes.

compress::zip_extract(data)

Extracts entries from a ZIP archive.

ParameterTypeDefaultDescription
databytesThe ZIP archive as bytes.

Returns list — A list of extracted entries.