Skip to content

compress.gzip #

Description

compress.gzip is a module that assists in the compression and decompression of binary data using gzip compression.

decompress and decompress_with_callback read every member in a concatenated gzip stream. Each member's header, checksum, and size are validated. A truncated trailing member is an error. Returning zero from the callback stops decoding, including any remaining members.

Examples:

import compress.gzip

fn main() {
    uncompressed := 'Hello world!'
    compressed := gzip.compress(uncompressed.bytes())!
    decompressed := gzip.decompress(compressed)!
    assert decompressed == uncompressed.bytes()
}

fn compress #

fn compress(data []u8) ![]u8

compress compresses an array of bytes using gzip and returns the compressed bytes in a new array.

fn decompress #

fn decompress(data []u8) ![]u8

decompress decompresses all gzip members and returns their concatenated bytes in a new array.

fn decompress_with_callback #

fn decompress_with_callback(data []u8, cb deflate.ChunkCallback, userdata voidptr) !int

decompress_with_callback decompresses all gzip members (RFC 1952) with chunked callback delivery. The callback receives chunks of decompressed data and should return the chunk length to continue, or 0 to abort. Returns the total decompressed length.

fn validate #

@[deprecated: 'never used']
@[deprecated_after: '2026-07-31']
fn validate(data []u8, _ DecompressParams) !deflate.GzipHeader

validate validates the gzip header of data and returns its parsed details if valid. N.B.: only retained for API compatibility, all validation is now performed by the deflate backend. The returned header details are not used by the decompressor.

Todo: remove after the deprecation period.

fn CompressFlags.from #

fn CompressFlags.from[W](input W) !CompressFlags

from returns the CompressFlags value of an integer or of a field name, or an error if there is none.

fn CompressFlags.zero #

fn CompressFlags.zero() CompressFlags

zero returns a CompressFlags value with no flags set.

fn DecompressFlags.from #

fn DecompressFlags.from[W](input W) !DecompressFlags

from returns the DecompressFlags value of an integer or of a field name, or an error if there is none.

fn DecompressFlags.zero #

fn DecompressFlags.zero() DecompressFlags

zero returns a DecompressFlags value with no flags set.

enum CompressFlags #

@[deprecated: 'never used']
@[deprecated_after: '2026-07-31']
@[flag]
enum CompressFlags {
	// The low 12 bits will be overwritten by `compression_level`
	compression_level_overwrite_flag01
	compression_level_overwrite_flag02
	compression_level_overwrite_flag03
	compression_level_overwrite_flag04
	compression_level_overwrite_flag05
	compression_level_overwrite_flag06
	compression_level_overwrite_flag07
	compression_level_overwrite_flag08
	compression_level_overwrite_flag09
	compression_level_overwrite_flag10
	compression_level_overwrite_flag11
	compression_level_overwrite_flag12
	write_zlib_header
	compute_adler32
	greedy_parsing_flag
	nondeterministic_parsing_flag
	rle_matches
	filter_matches
	force_all_static_blocks
	force_all_raw_blocks
}

CompressFlags

fn (CompressFlags) is_empty #

fn (e &CompressFlags) is_empty() bool

is_empty returns true if no flags are set.

fn (CompressFlags) has #

fn (e &CompressFlags) has(flag CompressFlags) bool

has returns true if any of the flags in flag are set.

fn (CompressFlags) all #

fn (e &CompressFlags) all(flag CompressFlags) bool

all returns true if all the flags in flag are set.

fn (CompressFlags) set #

fn (mut e CompressFlags) set(flag CompressFlags)

set sets the flags in flag.

fn (CompressFlags) set_all #

fn (mut e CompressFlags) set_all()

set_all sets all the flags.

fn (CompressFlags) clear #

fn (mut e CompressFlags) clear(flag CompressFlags)

clear clears the flags in flag.

fn (CompressFlags) clear_all #

fn (mut e CompressFlags) clear_all()

clear_all clears all the flags.

fn (CompressFlags) toggle #

fn (mut e CompressFlags) toggle(flag CompressFlags)

toggle flips the flags in flag.

enum DecompressFlags #

@[deprecated: 'never used']
@[deprecated_after: '2026-07-31']
@[flag]
enum DecompressFlags {
	parse_zlib_header
	has_more_input
	using_non_wrapping_output_buf
	compute_adler32
}

DecompressFlags N.B.: only retained for API compatibility.

fn (DecompressFlags) is_empty #

fn (e &DecompressFlags) is_empty() bool

is_empty returns true if no flags are set.

fn (DecompressFlags) has #

fn (e &DecompressFlags) has(flag DecompressFlags) bool

has returns true if any of the flags in flag are set.

fn (DecompressFlags) all #

fn (e &DecompressFlags) all(flag DecompressFlags) bool

all returns true if all the flags in flag are set.

fn (DecompressFlags) set #

fn (mut e DecompressFlags) set(flag DecompressFlags)

set sets the flags in flag.

fn (DecompressFlags) set_all #

fn (mut e DecompressFlags) set_all()

set_all sets all the flags.

fn (DecompressFlags) clear #

fn (mut e DecompressFlags) clear(flag DecompressFlags)

clear clears the flags in flag.

fn (DecompressFlags) clear_all #

fn (mut e DecompressFlags) clear_all()

clear_all clears all the flags.

fn (DecompressFlags) toggle #

fn (mut e DecompressFlags) toggle(flag DecompressFlags)

toggle flips the flags in flag.

struct CompressParams #

@[deprecated: 'never used']
@[deprecated_after: '2026-07-31']
@[params]
struct CompressParams {
pub:
	compression_level int
	flags             CompressFlags
}

CompressParams set compression_level for compression:

struct DecompressParams #

@[deprecated: 'never used']
@[deprecated_after: '2026-07-31']
@[params]
struct DecompressParams {
pub:
	verify_header_checksum bool = true
	verify_length          bool = true
	verify_checksum        bool = true
	flags                  DecompressFlags
}

DecompressParams controls gzip decompression behavior. N.B.: only retained for API compatibility.