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 #
struct CompressParams {
pub:
format CompressFormat = .zlib
}