feat: Add zstd compression #110
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for compressing files during transfers using zstd, using the new abstract stream API merged in iroh-blobs#147.
Compression can be enabled with the
-z
flag, and the compression quality can be configured via the-q
flag. The feature is gated behind the zstd feature flag, disabling this flag removes compression support entirely. This change also introduces a new dependency on the async-compression crate.When sending with
-z
, the progress bars are currently non-functional. This is because theget_hash_seq_and_sizes
function directly takes a connection rather than something that implements theGetStreamPair
trait. As a result, it bypasses the abstraction used to wrap streams for compression. Unless there’s an alternative path I’ve missed