Releases: KillingSpark/zstd-rs
Change to cargo workspace, improve CLI and make FrameCompressor nameable
@zleyyij improved the CLI a ton and switched this repo to a cargo workspace so that the dependencies for the binary and the library can be separated.
Also, the MatchGeneratorDriver is now exported so users are able to name it as the M in FrameCompressor<R, W, M>
Checksum on compressor, compressor ratio improvements, and small decoder bugfix
- Checksum is now added in compressed frames if the hash feature is enabled
- Some compression ratio improvements
- The decoder had a small bug where inefficient encodings of zero sequences in a block where wrongly considered invalid
Compression support
Compression support
This release adds initial support for compressing data into the zstd format. This enables interoperability with workflows that require payloads to be encoded with zstd all in pure rust, no C dependencies needed.
API changes
The public API of the crate has been reorganized and cleaned up. Since there is now also encoding support the root couldn't really be used for structures used to decode data.
Errors
Decoding errors now live in their own module ruzstd::decoding::errors. This enabled hiding a lot of the internal modules and by that decluttering the docs.
Decoders
The FrameDecoder and StreamingDecoder are now found in ruzstd::decoding instead of the root of the namespace. This is because there is now the new ruzstd::encoding module which contains the FrameCompressor as well as the compress/compress_to_vec convenience functions.
Security update, unsoundness in RingBuffer
Issue #75 reported an usoundness bug in the RingBuffer that could result in unintented heap reads. This has been fixed in #76 by @paolobarbolini
Versions 0.7.0 up to and including 0.7.2 are affected
Also include #70 that adds convenience functions to decode all zstd frames in a given slice
We are std(-dependency)
Contains unsoundness fixed in 0.7.3
https://github.com/workingjubilee put the work in to make this crate usable as a dependency in the standard library in #67
Bugfix release
Contains unsoundness fixed in 0.7.3
https://github.com/michaelkirk noticed and fixed a bug related to the drain_to family of functions where a write of 0 bytes means that the target is temporarily not able to receive more bytes which caused an endless loop before the fix
Optimizations, Documentation and slight API changes
Contains unsoundness fixed in 0.7.3
- Few slight performance optimizations
- Big documentation contribution
StreamingDecodernow has API to get to the containedimpl Read
Send + Sync for FrameDecoder and optional checksum calculation
- The FrameDecoder is now Send + Sync (RingBuffer impls these traits now)
- Hashing content and checking the result against the frame header is now optional
Even better no_std
Switching from thiserror to derive_more allows for no_std builds on stable rust
No-std support and better dict API
This release features no-std support with big thanks to @antangelo!
Also the API for dictionaries has been revised, which required some breaking changes in that department