linflate — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: A fast pure-Rust DEFLATE (inflate) decompressor with SIMD match-copy, branchless refill, and a segment-aware API — the shared codec core for the workspace's zip/jar/gzip crates.
- Does: Full-buffer, zero-copy inflate following libdeflate's architecture with zlib-ng's branchless bit refill and SIMD match copy, plus a thread-local table pool. Primary API
inflate_into(compressed, &mut output) -> Result<written, InflateError>(caller allocatesuncompressed_size + OVERWRITE_HEADROOMfor SIMD overwrite slack) and a segment-awareinflate_segment.InflateErrorenumerates the failure modes. Modules:bitreader,tables,fixed,copy(SIMD match copy),fastloop,deflate_scan. - Key deps: none at runtime (pure std). Dev:
miniz_oxide,criterion. - Shape: lib only; ~2.5k LoC (lib 648, tables 494, copy 367, fastloop 356, deflate_scan 307, bitreader 301). Benches
inflateanddeflate_scan. - Observed role in the workspace: The DEFLATE engine shared by
lgz,ljar, andlzip-parallel(each re-exports or depends on it). ljar's doc note: linflate "grew out of" ljar's embedded inflate, was extracted to be shared, and fixed the refill_slow bits==56 corruption bug the old copies carried.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: