NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2030 most downloaded on crates.io
LZMA / LZMA2 / LZIP / XZ compression ported from 'tukaani xz for java'
Last release 19 days ago
18 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 44 of 48 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
49 releases · first in 2025
One column per month.
Add LzmaReader::into_parts to recover buffered input together with the inner reader.
LzmaReader::into_parts to recover buffered input together with the inner reader.LzipReader::into_parts to recover buffered input together with the inner reader.Lzma2Reader::new_mem_limit and XzReader::new_mem_limit.LzmaReader buffers its input, which makes decoding faster. into_inner discards the bytes it read ahead, and
into_parts hands them back together with the reader.Unsupported instead of
InvalidData. The format checksums those flags on their own so that a decoder can tell a corrupt file from one it
does not support, and a set reserved bit fits an Unsupported error better.LzipReader that rejected such a member panicked.LzipReader reports a rejected member again on every later read, instead of taking the position it stopped at for the
end of the file.LzipReader rejects a member header it cannot parse, instead of taking it for the end of the file. Data behind the
last member, a header that is cut short and a source error while the reader looks for the next member now all come
back as errors, and into_parts hands those bytes back.Lzma2ReaderMt and XzReaderMt no longer degrade to single-threaded decoding.Lzma2Stream and XzStream now decode the input they still hold back once the caller says the input ends, so corrupt
data in a chunk is reported as such instead of as a stream that was cut short.flush() of the multi-threaded XZ, LZMA2 and LZIP writers now waits for the pending work, so the flushed data reaches
the inner writer.XzWriter by boxing FilterWriter enum variants.LzmaStream using only Action::Run.An uncompressed LZMA2 chunk is now handed over as it is copied, instead of only once the dictionary fills.
Add new_mem_limit() to Lzma2Stream and XzStream.
new_mem_limit() to Lzma2Stream and XzStream.set_filters() to Lzma2Stream and LzmaStream, so both can decode through a BCJ or delta pre-filter. At most
one filter is supported.filter::StreamFilter, which decodes a slice in place through a single BCJ or delta filter.Lzma2Stream and XzStream produce output
sooner and use less memory.UnexpectedEof from the sans-I/O decoders instead of InvalidData.FilterConfig and FilterType no longer need the xz feature.Lzma2Stream and XzStream now fail every later process() call once one has returned an error, like LzmaStream
already did.Add sans-I/O decoders for LZMA1 and LZIP. Thanks @Black-Frost
Fixed an out-of-bounds panic when encoding more than ~2 GiB through a single stream
Add check_type () getter to XzStream. Thanks @Black-Frost
Add sans-I/O decoders for LZMA2 and XZ, which allows to better implement async and also multithreaded abstractions. Thanks @Black-Frost
Hardened the library against malicious or malformed archives.
Fix invalid XZ output for empty streams
Fixed an issue were custom dictionaries could not be used when using LZMA
We provide our own CRC implementation for lzip and xz, which removes the dependency to the crc crate. No functional change to v0.16.0 or v0.16.1
Make sure to at least use crc version 3.2. No functional updates or changes compared to v0.16.1
Fix compatibility issues with the crc crate by raising MSRV to 1.85. No functional updates or changes compared to v0.15.7
Nothing published for this version
Add missing From for the no_std Error
Fix possible panic on out of bound access when reading u32_be correctly
Fix possible panic in the range decoder when trying to read u32_be data
Fix CRC dependency to exactly 3.3 or else it could break some builds, wrongly selecting a different major version.
Pin CRC dependency to not break MSRV. Most likely we will increase the MSRV in the next minor release.
Fix possible underflow in BCJ filters
Fix fuzzing issues found for the LZMA decoder
Breaking change: LzipReader::new() does not return a Return type anymore, but only itself.
LzipReader::new() does not return a Return type anymore, but only itself.Fix issue when compiling with feature xz but without including the feature encoder
xz but without including the feature encoder (#61)Fix reading XZ files with multiple streams
Fix the safe build without the "optimization" feature.
Breaking change: Changed CheckType's default from CRC32 to CRC64 @sorairolake
FilterConfig and FilterType @sorairolake (#50)Breaking change: Rename identifiers to follow Rust API Guidelines @sorairolake
Fixed documentation @sorairolake
Add writers for lzip and xz that finishes the stream on drop. @sorairolake
Fixed missing call to .finish () when creating files with BCJ filter with XZ.
Fix broken BCJWriter that couldn't properly finish it's encoding process. Now has a proper finish () function.
Add missing "inner ()" and "inner_mut ()" function to the XZ and LZIP reader and writer.
XZReader and XZWriter are now Send.
XZReader and XZWriter are now Send.Make sure that LZMA reader errors when going out of bound. This could happen if no EOS was found. This was not a memory a safety issue, but instead a
Internally we updated the hash function for the match finders to use a golden ratio based hash instead of the old CRC table based hash. In our test da
Added single threaded and multithreaded encoder and decoder for the LZIP file format.
Added single threaded encoder and decoder for the XZ file format.
Fixed issue with the MT reader discovered by the downstream sevenz-rust2 crate because of incorrect chunk cuts (https://github.com/hasenbanck/sevenz-r
Added no_std support by disabling the new std feature that is enabled by default. Custom traits and default implementation for &[u8] and &mut [u8] are
std feature that is enabled by default. Custom traits and default
implementation for &[u8] and &mut [u8] are provided.Fixed possible deadlocks in the multithreaded encoder and decoder.
Added multithreaded compression for LZMA2.
Increased the encoding performance. For level 0-3 this crate now is faster than lzma. For 4-9 this crate is on same level with liblzma.
Fixed the links to the repository.
Increased the decoding performance while using only safe Rust. On x86-64 the speed-up was quite large when compared to the v0.2 branch (+50% throughpu
### Updated - No functional updated. - Moved into its own repository.
Fix integer overflow when decompressing uncompressed files over u32::MAX
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →