MSZIP compression #4
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
Reference
jeff/zixl#4
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
Part of #1
What to build
Files are compressed with MSZIP per [MS-MCI] by default, using
std.compress.flate, andCompressionLevel="none"stores them. A payload too large for one cabinet folder is split across as many folders as the format requires.Acceptance criteria
MediaandFilerows are unchanged by compression (sequence numbers, sizes).Done in
c1bc65d; CI run 6 is green.CKplus a complete deflate stream fromstd.compress.flate.CompressionLevelpicks the effort, andnonestores the files.std.compress.flateencodes a block whose matches all share one distance with a one-symbol distance code. RFC 1951 allows that, but cabextract's MSZIP decoder rejects it, and zlib never writes one. zixl now rewrites every block so that its Huffman codes are complete (src/write/deflate.zig), and the data it decodes to is unchanged.compressedfixture (318 KB of text plus 150 KB of noise) passescabextract -t, and both files install byte-identical under Wine. Its tables match wixl's.