Kendall Condon f50c647977 add deflate compression, simplify decompression
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-09-30 18:28:47 -07:00
..
2025-09-30 13:44:51 +01:00
2025-09-30 13:44:54 +01:00
2025-07-07 22:43:51 -07:00
2025-09-24 03:08:12 +02:00
2025-09-18 22:39:33 -07:00
2025-09-30 13:44:54 +01:00
2025-09-03 21:46:01 -07:00
2025-09-30 13:44:54 +01:00
2025-09-18 22:39:33 -07:00
2025-08-29 17:14:26 -07:00
2025-09-30 13:44:54 +01:00
2025-09-18 22:39:33 -07:00
2025-08-31 12:49:18 -07:00
2025-08-28 18:30:57 -07:00
2025-09-30 13:44:51 +01:00
2025-09-30 13:44:54 +01:00
2025-09-30 13:44:49 +01:00
2025-09-20 14:34:18 -07:00
2024-08-22 08:44:08 +02:00
2025-09-30 13:44:53 +01:00
2025-09-11 00:18:37 -07:00
2025-07-31 22:10:11 -07:00
2025-08-29 17:14:26 -07:00
2025-08-29 17:14:26 -07:00
2025-08-29 17:14:26 -07:00
2025-09-18 22:39:33 -07:00
2025-09-30 13:44:51 +01:00
2025-09-25 11:38:38 -07:00
2025-08-29 17:14:26 -07:00
2025-08-29 17:14:26 -07:00
2025-09-30 13:44:55 +01:00
2025-07-22 09:41:44 -07:00
2025-09-30 13:44:51 +01:00
2025-08-28 18:30:57 -07:00
2025-08-31 12:49:18 -07:00
2025-08-31 12:49:18 -07:00
2025-07-16 10:27:39 -07:00
2025-09-24 20:01:18 -07:00
2025-08-29 17:14:26 -07:00