0 branches
Tree
Top files
Clone with HTTPS:
deflate_compress.v
compress.deflate: changed to pure V RFC-compliant code (#27156)
last May 15
4.15 KB
deflate_inflate.v
compress.deflate: changed to pure V RFC-compliant code (#27156)
last May 15
6.09 KB
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)compresskeeps default zlib behavior, anddecompressauto-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()
}