New Features
-
move the
siroccofeature tosirocco0.2
sirocco0.2 decodes into a buffer the caller owns, in one call or many,
so it now handles all zlib decompression with the feature, with no
fallback tozlib-rs:Inflate::once()andInflate::prefix()decode withsirocco. A
short output buffer getssirocco's partial output.- The new
Inflate::rest()continues the streamprefix()started, which
loose objects use for their bodies instead ofInflate::state.
Without the feature it continues withzlib-rsas before. stream::inflate::Measureusessirocco::inflate::Scanner.
sirocco's errors map to the classes and messageszlib-rsproduces,
corruption as "Invalid input data" and a preset dictionary as a
validation error. -
add the
siroccofeature to decompress withsirocco
siroccois a pure-Rust DEFLATE/zlib decompressor that is faster thanzlib-rs
on whole buffers, and can find where a stream ends without producing its output.
With the feature enabled:Inflate::once()decodes whole streams withsirocco, and falls back tozlib-rs
on any error, so partial output, statuses and errors stay what they were.- The new
Inflate::prefix()always useszlib-rs, for callers that only want the
start of a stream: the delta-size probe ingix-packand the loose object header. - The new
stream::inflate::Measurefinds the compressed and decompressed size of a
stream read from aBufRead.BytesToEntriesIteruses it instead of decompressing
intoio::sink(). Withsirocco, the decompressed bytes aren't produced, so the
Adler-32 checksum isn't checked in that pass; the delta-resolution pass of index
creation still decodes and checks every object.
zlib-rsis still used for everything else, including all compression.The
gixcrate exposes it aszlib-sirocco, and thefastfeature ofgitoxide
enables it for thegixandeinbinaries.siroccorequires Rust 1.89.
Changed (BREAKING)
-
hide the
Inflatebackend and align stream lifecycles
Spend a lot of time with this one and massaged it into place, overall simplifying
a little and adding test-coverage (that I am sure is already in Sirocco but doppelt
haelt besser).The public
Inflate::statefield exposed azlib-rsdecoder even when
siroccohandled all decoding. Make backend state private and retain only
the selected implementation, avoiding an unusedzlib-rsallocation when
siroccois enabled.
Commit Statistics
- 7 commits contributed to the release over the course of 14 calendar days.
- 14 days passed between releases.
- 3 commits were understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Merge pull request #3065 from srijs/claude/project-thread-kr3hdl (0a49d46)
- Hide the
Inflatebackend and align stream lifecycles (0ed7c8c) - Move the
siroccofeature tosirocco0.2 (2b4faf9) - Add the
siroccofeature to decompress withsirocco(95a0b14) - Merge pull request #3053 from GitoxideLabs/various-improvements (2d8dcc4)
- Release gix-error v0.5.1, gix-utils v0.5.1 (6d1b686)
- Merge pull request #3048 from GitoxideLabs/new-release (5fccccf)