Skip to content

compress.deflate #

Description

compress.deflate is a pure V RFC-compliant DEFLATE module.

Compression output format is selected by CompressFormat via compress(data, format: ...):

  • .zlib (RFC 1950 wrapper)
  • .gzip (RFC 1952 wrapper)
  • .raw_deflate (RFC 1951 raw stream)

compress keeps default zlib behavior, and decompress auto-detects all three.

Interop Validation

Cross-validation with C/zlib is kept separate from v test and can be run manually:

./vnew run vlib/compress/deflate/interop/deflate_interop.v

Example

import compress.deflate

fn main() {
    uncompressed := 'Hello world!'
    zlib_stream := deflate.compress(uncompressed.bytes())!
    gzip_stream := deflate.compress(uncompressed.bytes(), format: .gzip)!
    raw_stream := deflate.compress(uncompressed.bytes(), format: .raw_deflate)!
    assert deflate.decompress(zlib_stream)! == uncompressed.bytes()
    assert deflate.decompress(gzip_stream)! == uncompressed.bytes()
    decompressed := deflate.decompress(raw_stream)!
    assert decompressed == uncompressed.bytes()
}

fn compress #

fn compress(data []u8, format CompressParams) ![]u8

compress compresses data as zlib, gzip, or raw DEFLATE.

fn compress_gzip #

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

compress_gzip compresses data into a gzip stream (RFC 1952).

fn compress_raw #

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

compress_raw compresses data to a raw RFC 1951 DEFLATE stream.

fn compress_zlib #

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

fn decompress #

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

decompress decompresses a zlib (RFC 1950), gzip (RFC 1952), or raw DEFLATE (RFC 1951) stream. The format is auto-detected.

fn decompress_gzip #

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

decompress_gzip decompresses a gzip stream (RFC 1952). It returns the decompressed bytes in a new array.

fn decompress_zlib #

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

decompress_zlib decompresses a zlib stream (RFC 1950). It returns the decompressed bytes in a new array.

fn CompressFormat.from #

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

enum CompressFormat #

enum CompressFormat {
	zlib
	gzip
	raw_deflate
}

CompressFormat selects the output container around the RFC 1951 payload.

struct CompressParams #

@[params]
struct CompressParams {
pub:
	format CompressFormat = .zlib
}