Async work #708

Open
opened 2026-01-29 22:16:15 +00:00 by claunia · 0 comments
Owner

Originally created by @adamhathcock on GitHub (Oct 28, 2025).

Originally assigned to: @adamhathcock on GitHub.

Using AI, I'm converting things to have asynchronous overloads as well as tests for them.

Here's what I think I need to finish:

Stream Classes Needing Async Overloads

Summary

  • 36 classes need ReadAsync overload
  • 17 classes need WriteAsync overload
  • 37 total classes need async overloads (16 need both)

Validation Notes

This list excludes Stream classes where the Write method throws NotSupportedException or NotImplementedException, as these are read-only streams that don't need WriteAsync overloads.

Classes Needing ReadAsync

  • RarCryptoWrapper - src/SharpCompress/Common/Rar/RarCryptoWrapper.cs
  • FolderUnpackStream - src/SharpCompress/Common/SevenZip/ArchiveReader.cs
  • PkwareTraditionalCryptoStream - src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs
  • WinzipAesCryptoStream - src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs
  • ADCStream - src/SharpCompress/Compressors/ADC/ADCStream.cs
  • ArcLzwStream - src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs
  • BZip2Stream - src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
  • CBZip2InputStream - src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs
  • CBZip2OutputStream - src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs
  • ExplodeStream - src/SharpCompress/Compressors/Explode/ExplodeStream.cs
  • BCJ2Filter - src/SharpCompress/Compressors/Filters/BCJ2Filter.cs
  • Filter - src/SharpCompress/Compressors/Filters/Filter.cs
  • AesDecoderStream - src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs
  • Bcj2DecoderStream - src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs
  • LZipStream - src/SharpCompress/Compressors/LZMA/LZipStream.cs
  • Decoder - src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs
  • LzmaStream - src/SharpCompress/Compressors/LZMA/LzmaStream.cs
  • CrcBuilderStream - src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs
  • CrcCheckStream - src/SharpCompress/Compressors/LZMA/Utilites/CrcCheckStream.cs
  • LzwStream - src/SharpCompress/Compressors/Lzw/LzwStream.cs
  • PpmdStream - src/SharpCompress/Compressors/PPMd/PpmdStream.cs
  • RunLength90Stream - src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs
  • MultiVolumeReadOnlyStream - src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs
  • RarBLAKE2spStream - src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
  • RarCrcStream - src/SharpCompress/Compressors/Rar/RarCrcStream.cs
  • RarStream - src/SharpCompress/Compressors/Rar/RarStream.cs
  • ReduceStream - src/SharpCompress/Compressors/Reduce/ReduceStream.cs
  • ShrinkStream - src/SharpCompress/Compressors/Shrink/ShrinkStream.cs
  • SqueezeStream - src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs
  • XZBlock - src/SharpCompress/Compressors/Xz/XZBlock.cs
  • XZStream - src/SharpCompress/Compressors/Xz/XZStream.cs
  • Crc32Stream - src/SharpCompress/Crypto/Crc32Stream.cs
  • BufferedSubStream - src/SharpCompress/IO/BufferedSubStream.cs
  • DataDescriptorStream - src/SharpCompress/IO/DataDescriptorStream.cs
  • ListeningStream - src/SharpCompress/IO/ListeningStream.cs
  • ZipWriter - src/SharpCompress/Writers/Zip/ZipWriter.cs

Classes Needing WriteAsync

  • FolderUnpackStream - src/SharpCompress/Common/SevenZip/ArchiveReader.cs
  • PkwareTraditionalCryptoStream - src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs
  • BZip2Stream - src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
  • CBZip2InputStream - src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs
  • CBZip2OutputStream - src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs
  • Deflate64Stream - src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs
  • Filter - src/SharpCompress/Compressors/Filters/Filter.cs
  • LZipStream - src/SharpCompress/Compressors/LZMA/LZipStream.cs
  • Decoder - src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs
  • LzmaStream - src/SharpCompress/Compressors/LZMA/LzmaStream.cs
  • CrcBuilderStream - src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs
  • CrcCheckStream - src/SharpCompress/Compressors/LZMA/Utilites/CrcCheckStream.cs
  • PpmdStream - src/SharpCompress/Compressors/PPMd/PpmdStream.cs
  • RarStream - src/SharpCompress/Compressors/Rar/RarStream.cs
  • Crc32Stream - src/SharpCompress/Crypto/Crc32Stream.cs
  • ListeningStream - src/SharpCompress/IO/ListeningStream.cs
  • ZipWriter - src/SharpCompress/Writers/Zip/ZipWriter.cs

PRs:
https://github.com/adamhathcock/sharpcompress/pull/978
https://github.com/adamhathcock/sharpcompress/pull/980
https://github.com/adamhathcock/sharpcompress/pull/991

Next is RAR/LZMA/BZip2

Originally created by @adamhathcock on GitHub (Oct 28, 2025). Originally assigned to: @adamhathcock on GitHub. Using AI, I'm converting things to have asynchronous overloads as well as tests for them. Here's what I think I need to finish: # Stream Classes Needing Async Overloads ## Summary - **36** classes need `ReadAsync` overload - **17** classes need `WriteAsync` overload - **37** total classes need async overloads (16 need both) ## Validation Notes This list excludes Stream classes where the `Write` method throws `NotSupportedException` or `NotImplementedException`, as these are read-only streams that don't need `WriteAsync` overloads. ## Classes Needing ReadAsync - `RarCryptoWrapper` - `src/SharpCompress/Common/Rar/RarCryptoWrapper.cs` - `FolderUnpackStream` - `src/SharpCompress/Common/SevenZip/ArchiveReader.cs` - `PkwareTraditionalCryptoStream` - `src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs` - `WinzipAesCryptoStream` - `src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs` - ~~`ADCStream` - `src/SharpCompress/Compressors/ADC/ADCStream.cs`~~ - `ArcLzwStream` - `src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs` - ~~`BZip2Stream` - `src/SharpCompress/Compressors/BZip2/BZip2Stream.cs`~~ - ~~`CBZip2InputStream` - `src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs`~~ - ~~`CBZip2OutputStream` - `src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs`~~ - `ExplodeStream` - `src/SharpCompress/Compressors/Explode/ExplodeStream.cs` - `BCJ2Filter` - `src/SharpCompress/Compressors/Filters/BCJ2Filter.cs` - `Filter` - `src/SharpCompress/Compressors/Filters/Filter.cs` - `AesDecoderStream` - `src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs` - `Bcj2DecoderStream` - `src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs` - ~~`LZipStream` - `src/SharpCompress/Compressors/LZMA/LZipStream.cs`~~ - ~~`Decoder` - `src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs`~~ - ~~`LzmaStream` - `src/SharpCompress/Compressors/LZMA/LzmaStream.cs`~~ - ~~`CrcBuilderStream` - `src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs`~~ - ~~`CrcCheckStream` - `src/SharpCompress/Compressors/LZMA/Utilites/CrcCheckStream.cs`~~ - `LzwStream` - `src/SharpCompress/Compressors/Lzw/LzwStream.cs` - `PpmdStream` - `src/SharpCompress/Compressors/PPMd/PpmdStream.cs` - `RunLength90Stream` - `src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs` - ~~`MultiVolumeReadOnlyStream` - `src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs`~~ - ~~`RarBLAKE2spStream` - `src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs`~~ - ~~`RarCrcStream` - `src/SharpCompress/Compressors/Rar/RarCrcStream.cs`~~ - ~~`RarStream` - `src/SharpCompress/Compressors/Rar/RarStream.cs`~~ - `ReduceStream` - `src/SharpCompress/Compressors/Reduce/ReduceStream.cs` - `ShrinkStream` - `src/SharpCompress/Compressors/Shrink/ShrinkStream.cs` - `SqueezeStream` - `src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs` - ~~`XZBlock` - `src/SharpCompress/Compressors/Xz/XZBlock.cs`~~ - ~~`XZStream` - `src/SharpCompress/Compressors/Xz/XZStream.cs`~~ - `Crc32Stream` - `src/SharpCompress/Crypto/Crc32Stream.cs` - `BufferedSubStream` - `src/SharpCompress/IO/BufferedSubStream.cs` - `DataDescriptorStream` - `src/SharpCompress/IO/DataDescriptorStream.cs` - `ListeningStream` - `src/SharpCompress/IO/ListeningStream.cs` - `ZipWriter` - `src/SharpCompress/Writers/Zip/ZipWriter.cs` ## Classes Needing WriteAsync - `FolderUnpackStream` - `src/SharpCompress/Common/SevenZip/ArchiveReader.cs` - `PkwareTraditionalCryptoStream` - `src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs` - ~~`BZip2Stream` - `src/SharpCompress/Compressors/BZip2/BZip2Stream.cs`~~ - ~~`CBZip2InputStream` - `src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs`~~ - ~~`CBZip2OutputStream` - `src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs`~~ - `Deflate64Stream` - `src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs` - `Filter` - `src/SharpCompress/Compressors/Filters/Filter.cs` - ~~`LZipStream` - `src/SharpCompress/Compressors/LZMA/LZipStream.cs`~~ - ~~`Decoder` - `src/SharpCompress/Compressors/LZMA/LzmaDecoder.cs`~~ - ~~`LzmaStream` - `src/SharpCompress/Compressors/LZMA/LzmaStream.cs`~~ - ~~`CrcBuilderStream` - `src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs`~~ - ~~`CrcCheckStream` - `src/SharpCompress/Compressors/LZMA/Utilites/CrcCheckStream.cs`~~ - `PpmdStream` - `src/SharpCompress/Compressors/PPMd/PpmdStream.cs` - ~~`RarStream` - `src/SharpCompress/Compressors/Rar/RarStream.cs`~~ - `Crc32Stream` - `src/SharpCompress/Crypto/Crc32Stream.cs` - `ListeningStream` - `src/SharpCompress/IO/ListeningStream.cs` - `ZipWriter` - `src/SharpCompress/Writers/Zip/ZipWriter.cs` PRs: https://github.com/adamhathcock/sharpcompress/pull/978 https://github.com/adamhathcock/sharpcompress/pull/980 https://github.com/adamhathcock/sharpcompress/pull/991 Next is RAR/LZMA/BZip2
claunia added the enhancement label 2026-01-29 22:16:15 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/sharpcompress#708