Skip to main content

archives

Archives​

archive/tar — TAR Archive (POSIX ustar)​

; Read a regular tar
archive = tar{
data: raw-bytes
}
count = archive.count()
e = archive.entry(idx)
name = archive.name(idx)
sz = archive.size(idx)
typ = archive.type(idx) ; "file" / "dir" / "unknown"
yes = archive.is-dir(idx)
yes = archive.is-file(idx)
out = archive.read(idx)
mode = archive.mode(idx)
ts = archive.mtime(idx)

; Read .tar.gz (auto-decompress)
archive = tar.tar-open-gz(gz-data)

; tar-entry methods
name = e.name()
sz = e.size()
typ = e.type()
out = e.read()

; Write tar
builder = tar-builder{}
builder.add-file(name, content)
builder.add-dir(name)
archive = builder.finish()

archive/zip — ZIP Archive Parsing​

archive = zip{
data: raw-bytes
}
count = archive.count() ; Number of entries
e = archive.entry(idx) ; Get zip-entry
name = archive.name(idx) ; Filename
sz = archive.size(idx) ; Original size
csz = archive.compressed-size(idx) ; Compressed size
method = archive.method(idx) ; 0=stored, 8=deflate
out = archive.extract(idx) ; stored and deflate modes

; zip-entry methods
name = e.name()
sz = e.size()
csz = e.compressed-size()
method = e.method()
out = e.extract()

archive/gzip — GZIP Compression and Raw DEFLATE​

out = gzip.gzip-compress(data) ; zlib compression
out = gzip.gzip-decompress(data) ; zlib decompression
out = gzip.inflate-decompress(data, out-size) ; Raw DEFLATE decompression (ZIP method 8)

archive/bzip2 — BZIP2 Decompression (Pure Nolang)​

Pure Nolang implementation of BZIP2 decompression, including BWT inverse transform, MTF inverse transform, Huffman decoding, and RLE decoding:

out = bzip2.bzip2-decompress(data) ; Decompress .bz2 data

archive/xz — XZ/LZMA Decompression (Pure Nolang)​

Pure Nolang implementation of LZMA2 decompression, supporting both .xz container format and legacy .lzma format:

out = xz.xz-decompress(data) ; Decompress .xz data
out = xz.lzma-decompress(data) ; Decompress legacy .lzma data

archive/zlib — zlib Compression/Decompression (RFC 1950, Pure Nolang)​

Pure Nolang implementation of RFC 1950 zlib compression and decompression, using stored blocks (BTYPE=00) for compression and supporting full DEFLATE for decompression:

out = zlib.zlib-compress(data) ; Compress to zlib stream
out = zlib.zlib-decompress(data) ; Decompress zlib stream (returns []byte, ok bool)
sum = zlib.adler-32(data, n) ; Adler-32 checksum

archive/zstd — Zstandard Decompression (Pure Nolang)​

Pure Nolang implementation of Zstandard (zstd) decompression, including FSE decoding, Huffman decoding, LZ77 sequence decoding, and Zstandard frame format parsing:

out = zstd.zstd-decompress(data) ; Decompress .zst data