Skip to content

Most features completed - #5

Closed
hilather wants to merge 9 commits into
COMBINE-lab:mainfrom
hilather:main
Closed

Most features completed#5
hilather wants to merge 9 commits into
COMBINE-lab:mainfrom
hilather:main

Conversation

@hilather

@hilather hilather commented Aug 1, 2026

Copy link
Copy Markdown

Hi,

Came across your project while working on another problem where I needed a feature complete version of rapidgzip in rust. Finished it with vibe coding. Thought I'd let you know with this pull request in case you this helps you.

mbrewer added 9 commits July 31, 2026 21:15
…nches

Bring rapidgzip-rust to decoder feature parity with C++ rapidgzip for
indexes (GZIDX/gztool/BGZI), seek/prefetch, ranges, zlib/raw DEFLATE,
streaming stdin with parallel spill, analyze, and CLI ergonomics. Add a
fair comparative harness and a local synthetic benchmark snapshot vs
rapidgzip 0.15.2.
…ckend

Ship feature-complete rapidgzip-core and CLI beyond the incomplete crates.io
0.1.0 stub: parallel gzip/BGZF/zlib/raw paths, indexes and seek, decode_read
spill, performance work, InflateBackend consolidation, fair C++ 0.16 harness,
CHANGELOG and release tooling. Bumps workspace version to 0.2.0.
Add optional `isal` feature (IsalInflater as ActiveInflater) for faster P=1
inflate when libisal is available; default builds stay zlib-rs. Map ISA-L
INPUT_DONE/FINISH and prefetch refunds to zlib-compatible consume/STREAM_END.
Update docs, fair re-bench snapshot vs C++ 0.16 ISA-L (~1.35× P=1 geo mean).
Apply rustfmt so workspace fmt --check and release gates pass cleanly.
Defer RawInflater allocation in IsalInflater until Block flush or
non-empty prime/dictionary so pure NoFlush P=1 stays ISA-L-only.
Add Ubuntu CI job installing libisal-dev and testing --features isal.
Refresh crate/backend docs and PERFORMANCE_AUDIT residual for shipped isal.
Reject multi-element raw_crc32_list at DecoderBuilder::build (single
whole-stream CRC only). Stash isal prime/dictionary until first Block so
NoFlush seek resume never allocates zlib-rs. Update monomorphization docs
and CI isal tests to --all-targets.
Drive InflateFlush::Finish through repeated isal_inflate until STREAM_END
(or budget/error), so BGZF one-shots complete when tmp_out drains after
INPUT_DONE. Label CLI as version+isal and matrix rows as rapidgzip-rust-isal
when libisal is linked. Document Unreleased changes and bench fairness.
Skip full inflate_state zero on IsalInflater create (~87 KiB); use ISA-L
crc32_gzip_refl for verify when the isal feature is on; run BGZF with one
worker inline without channel reordering. Profile notes: P=1 isal already
beats zlib-rs and C++ on fair corpora; opts add a few percent.
ISA-L Finish multi-step drain, lazy Block/pending prime-dict, create/CRC
optimizations, single-thread BGZF inline path, raw_crc32 multi-value reject,
fair-bench isal labeling, and CI isal job. See CHANGELOG.
@rob-p

rob-p commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Thank you @hilather for the substantial amount of work and thought that went into this pull request. It provided a valuable map of the broader feature surface and helped motivate several focused designs.

Since this PR was opened, its major capabilities have landed through smaller, reviewable replacements based on the evolving main branch:

Those replacements also preserve DecodeReport: Copy, add explicit index provenance and typed indexed reports, integrate dynamic worker control and telemetry, and strengthen bounded-memory and verification behavior.

The optional ISA-L backend was evaluated separately in #10 and deliberately not adopted because it adds a native build and maintenance burden without a demonstrated performance advantage over zlib-rs on the measured workloads. Automatic tempfile spooling and disabled checksum verification also remain intentional non-goals for the default APIs.

Three narrower ideas remain worth evaluating independently: observable indexed-reader caching/prefetch, broader decoded-buffer recycling, and expanded fair-benchmark tooling. I am opening focused draft PRs for those and will cite this PR in each one.

I am therefore closing this PR as superseded rather than merging its now-conflicting aggregate branch. Thank you again—the ideas here materially influenced the project even though the implementation ultimately landed in a different form.

@rob-p

rob-p commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The three focused follow-ups described above are now open as independent draft PRs based on current main:

Each cites this PR as its origin and contains a critical design assessment, explicit scope/non-goals, an implementation plan, and measurement/acceptance gates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants