Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/znippy-zoomies

ljar/README.md

ljar-rs

"Allfadern ser varje bit"

Pure Rust parallel JAR/ZIP decompressor. Reads the ZIP Central Directory, then decodes all DEFLATE entries in parallel using linflate (shared SIMD inflate engine). miniz_oxide is fully removed from production dependencies.

1.8× faster than unzip -t on multi-core hardware.

Performance

Workload ljar unzip Speedup
2000-entry JAR (6.9 MB compressed) 1.86 s 5.37 s 1.8×

Usage

ljar archive.jar -o dir/    # extract to directory
ljar archive.jar            # list entries to stdout

Architecture

  1. Parse ZIP End-of-Central-Directory (EOCD)
  2. Read Central Directory → build entry list
  3. For each entry: resolve local header → get compressed data pointer
  4. Parallel decode all entries via the shared gatling fork-join engine (large entries also split internally at flush boundaries)
  5. Write/output in order

Ring-slot pipeline

Same architecture as lbzip2-rs / lgz-rs:

Internal src/inflate/ module

The embedded inflate engine in src/inflate/ is now redundant — it has been extracted into linflate-rs which is the production SIMD DEFLATE decoder. The internal module remains as a historical reference.

Dependencies

Crate Role
linflate SIMD DEFLATE decode (shared with lgz-rs)
gatling (rotaryengine) Shared no-barrier fork-join engine for parallel entry decode

Optional features

Sister projects

All at git.gunnar.rs/nordisk/znippy:

License

MIT OR Apache-2.0