aboutsummaryrefslogtreecommitdiff
path: root/lib/std/compress/flate/Compress.zig
AgeCommit message (Collapse)Author
2025-09-30add deflate compression, simplify decompressionKendall Condon
Implements deflate compression from scratch. A history window is kept in the writer's buffer for matching and a chained hash table is used to find matches. Tokens are accumulated until a threshold is reached and then outputted as a block. Flush is used to indicate end of stream. Additionally, two other deflate writers are provided: * `Raw` writes only in store blocks (the uncompressed bytes). It utilizes data vectors to efficiently send block headers and data. * `Huffman` only performs Huffman compression on data and no matching. The above are also able to take advantage of writer semantics since they do not need to keep a history. Literal and distance code parameters in `token` have also been reworked. Their parameters are now derived mathematically, however the more expensive ones are still obtained through a lookup table (expect on ReleaseSmall). Decompression bit reading has been greatly simplified, taking advantage of the ability to peek on the underlying reader. Additionally, a few bugs with limit handling have been fixed.
2025-07-31std.compress.flate: finish reorganizingAndrew Kelley
2025-07-31delete flate implementationAndrew Kelley
2025-07-31std.compress: rework flate to new I/O APIAndrew Kelley