Skip to main content

Crate lgz

Crate lgz 

Source
Expand description

lgz — Pure Rust parallel gzip decompressor.

Architecture (mirrors lbzip2-rs / ljar-rs):

Reader ──→ Main(carry+split) ──→ N Workers ──→ Collector ──→ Writer
  ↑                                                  │
  └────────────── ring-slot recycle ─────────────────┘

Gzip is a gzip header + DEFLATE stream + trailer. Full-flush boundaries (00 00 FF FF) in the DEFLATE stream mark points where the LZ77 window resets — each segment between flushes is independently decompressible.

For streams without flush boundaries (standard gzip output), falls back to single-threaded flate2. Streams from pigz, bgzf, or any compressor using Z_FULL_FLUSH are fully parallelized.

§Zero-Copy API

let original = b"test data for lgz";
let compressed = {
    use std::io::Write;
    let mut e = flate2::write::GzEncoder::new(Vec::new(), flate2::Compression::default());
    e.write_all(original).unwrap();
    e.finish().unwrap()
};
let decompressed = lgz::decompress_gz(&compressed).unwrap();
assert_eq!(&decompressed, original);

Re-exports§

pub use parallel::decompress_gz;
pub use parallel::decompress_gz_into;
pub use parallel::decompress_gz_stream;
pub use parallel::GzError;

Modules§

chunk
Chunk-level parallel DEFLATE decoder for gzip streams.
deflate_scan
DEFLATE full-flush boundary scanner.
parallel
Parallel gzip decompression.
speculative
Speculative DEFLATE block-boundary scanner — parallel forward-search.

Constants§

PARALLEL_THRESHOLD
Files below this threshold are decompressed single-threaded.

Functions§

decompress_tar_gz_filter
Decompress tar.gz with an optional filter on entry names.
thread_pool
Get (or create) lgz’s dedicated rayon thread pool.