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.