diff --git a/src/SharpCompress/Archives/IAsyncArchiveExtensions.cs b/src/SharpCompress/Archives/IAsyncArchiveExtensions.cs
index df4cb05c..7a930bb0 100644
--- a/src/SharpCompress/Archives/IAsyncArchiveExtensions.cs
+++ b/src/SharpCompress/Archives/IAsyncArchiveExtensions.cs
@@ -20,7 +20,7 @@ public static class IAsyncArchiveExtensions
/// Extraction options.
/// Optional progress reporter for tracking extraction progress.
/// Optional cancellation token.
- public async Task WriteToDirectoryAsync(
+ public async ValueTask WriteToDirectoryAsync(
string destinationDirectory,
ExtractionOptions? options = null,
IProgress? progress = null,
@@ -47,7 +47,7 @@ public static class IAsyncArchiveExtensions
}
}
- private async Task WriteToDirectoryAsyncInternal(
+ private async ValueTask WriteToDirectoryAsyncInternal(
string destinationDirectory,
ExtractionOptions? options,
IProgress? progress,
diff --git a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
index 60c843d6..ad92f806 100644
--- a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
+++ b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
@@ -119,7 +119,7 @@ public partial class SevenZipArchive : AbstractArchive GetByteAsync(Stream stream, CancellationToken cancellationToken)
+ private static async ValueTask GetByteAsync(
+ Stream stream,
+ CancellationToken cancellationToken
+ )
{
var buffer = new byte[1];
var bytesRead = await stream
diff --git a/src/SharpCompress/Common/SevenZip/ArchiveReader.cs b/src/SharpCompress/Common/SevenZip/ArchiveReader.cs
index 28762ace..f5f82ab8 100644
--- a/src/SharpCompress/Common/SevenZip/ArchiveReader.cs
+++ b/src/SharpCompress/Common/SevenZip/ArchiveReader.cs
@@ -1272,7 +1272,7 @@ internal class ArchiveReader
_stream = stream;
}
- public async Task OpenAsync(
+ public async ValueTask OpenAsync(
Stream stream,
bool lookForHeader,
CancellationToken cancellationToken = default
@@ -1425,7 +1425,7 @@ internal class ArchiveReader
return db;
}
- public async Task ReadDatabaseAsync(
+ public async ValueTask ReadDatabaseAsync(
IPasswordProvider pass,
CancellationToken cancellationToken = default
)
diff --git a/src/SharpCompress/Common/Tar/Headers/TarHeader.cs b/src/SharpCompress/Common/Tar/Headers/TarHeader.cs
index 00e5edae..4c006abc 100644
--- a/src/SharpCompress/Common/Tar/Headers/TarHeader.cs
+++ b/src/SharpCompress/Common/Tar/Headers/TarHeader.cs
@@ -497,7 +497,7 @@ internal sealed class TarHeader
return true;
}
- internal async Task ReadAsync(AsyncBinaryReader reader)
+ internal async ValueTask ReadAsync(AsyncBinaryReader reader)
{
string? longName = null;
string? longLinkName = null;
@@ -637,7 +637,7 @@ internal sealed class TarHeader
}
}
- private async Task ReadLongNameAsync(AsyncBinaryReader reader, byte[] buffer)
+ private async ValueTask ReadLongNameAsync(AsyncBinaryReader reader, byte[] buffer)
{
var size = ReadSize(buffer);
diff --git a/src/SharpCompress/Common/Zip/ZipFilePart.cs b/src/SharpCompress/Common/Zip/ZipFilePart.cs
index 31f5a196..69ba27bc 100644
--- a/src/SharpCompress/Common/Zip/ZipFilePart.cs
+++ b/src/SharpCompress/Common/Zip/ZipFilePart.cs
@@ -289,7 +289,7 @@ internal abstract class ZipFilePart : FilePart
return decompressionStream;
}
- protected async Task GetCryptoStreamAsync(
+ protected async ValueTask GetCryptoStreamAsync(
Stream plainStream,
CancellationToken cancellationToken = default
)
@@ -362,7 +362,7 @@ internal abstract class ZipFilePart : FilePart
return plainStream;
}
- protected async Task CreateDecompressionStreamAsync(
+ protected async ValueTask CreateDecompressionStreamAsync(
Stream stream,
ZipCompressionMethod method,
CancellationToken cancellationToken = default
diff --git a/src/SharpCompress/Compressors/Arj/BitReader.cs b/src/SharpCompress/Compressors/Arj/BitReader.cs
index d808d93a..87c1a7eb 100644
--- a/src/SharpCompress/Compressors/Arj/BitReader.cs
+++ b/src/SharpCompress/Compressors/Arj/BitReader.cs
@@ -65,7 +65,7 @@ namespace SharpCompress.Compressors.Arj
///
/// Asynchronously reads a single bit from the stream. Returns 0 or 1.
///
- public async Task ReadBitAsync(CancellationToken cancellationToken)
+ public async ValueTask ReadBitAsync(CancellationToken cancellationToken)
{
if (_bitCount == 0)
{
@@ -90,7 +90,7 @@ namespace SharpCompress.Compressors.Arj
///
/// Asynchronously reads n bits (up to 32) from the stream.
///
- public async Task ReadBitsAsync(int count, CancellationToken cancellationToken)
+ public async ValueTask ReadBitsAsync(int count, CancellationToken cancellationToken)
{
if (count < 0 || count > 32)
{
diff --git a/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs b/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
index fa6bf754..27d1af3c 100644
--- a/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
+++ b/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
@@ -120,7 +120,7 @@ namespace SharpCompress.Compressors.Arj
/// Asynchronously decodes a single element (literal or back-reference) and appends it to _buffer.
/// Returns true if data was added, or false if all input has already been decoded.
///
- private async Task DecodeNextAsync(CancellationToken cancellationToken)
+ private async ValueTask DecodeNextAsync(CancellationToken cancellationToken)
{
if (_buffer.Count >= _originalSize)
{
@@ -176,7 +176,7 @@ namespace SharpCompress.Compressors.Arj
return res + add;
}
- private async Task DecodeValAsync(
+ private async ValueTask DecodeValAsync(
int from,
int to,
CancellationToken cancellationToken
diff --git a/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs b/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
index cde6e300..e7627c2a 100644
--- a/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
+++ b/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
@@ -76,7 +76,7 @@ public sealed class BZip2Stream : Stream, IStreamStack
/// Compression Mode
/// Decompress Concatenated
/// Cancellation Token
- public static async Task CreateAsync(
+ public static async ValueTask CreateAsync(
Stream stream,
CompressionMode compressionMode,
bool decompressConcatenated,
diff --git a/src/SharpCompress/Compressors/Lzw/LzwStream.cs b/src/SharpCompress/Compressors/Lzw/LzwStream.cs
index 74074a66..ec29263d 100644
--- a/src/SharpCompress/Compressors/Lzw/LzwStream.cs
+++ b/src/SharpCompress/Compressors/Lzw/LzwStream.cs
@@ -671,7 +671,7 @@ namespace SharpCompress.Compressors.Lzw
}
}
- private async Task FillAsync(CancellationToken cancellationToken)
+ private async ValueTask FillAsync(CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
got = await baseInputStream
@@ -744,7 +744,7 @@ namespace SharpCompress.Compressors.Lzw
tabSuffix[idx] = (byte)idx;
}
- private async Task ParseHeaderAsync(CancellationToken cancellationToken)
+ private async ValueTask ParseHeaderAsync(CancellationToken cancellationToken)
{
headerParsed = true;
diff --git a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
index 57be3533..906a29eb 100644
--- a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
+++ b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
@@ -134,7 +134,7 @@ internal class RarBLAKE2spStream : RarStream, IStreamStack
return stream;
}
- public static async Task CreateAsync(
+ public static async ValueTask CreateAsync(
IRarUnpack unpack,
FileHeader fileHeader,
MultiVolumeReadOnlyAsyncStream readStream,
diff --git a/src/SharpCompress/Compressors/Rar/RarCrcStream.cs b/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
index 00753d05..535c29fb 100644
--- a/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
+++ b/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
@@ -59,7 +59,7 @@ internal class RarCrcStream : RarStream, IStreamStack
return stream;
}
- public static async Task CreateAsync(
+ public static async ValueTask CreateAsync(
IRarUnpack unpack,
FileHeader fileHeader,
MultiVolumeReadOnlyStreamBase readStream,
diff --git a/src/SharpCompress/Compressors/Xz/BinaryUtils.cs b/src/SharpCompress/Compressors/Xz/BinaryUtils.cs
index 12cb2958..bb9cb412 100644
--- a/src/SharpCompress/Compressors/Xz/BinaryUtils.cs
+++ b/src/SharpCompress/Compressors/Xz/BinaryUtils.cs
@@ -32,7 +32,7 @@ public static class BinaryUtils
internal static uint ReadLittleEndianUInt32(this Stream stream) =>
unchecked((uint)ReadLittleEndianInt32(stream));
- public static async Task ReadLittleEndianInt32Async(
+ public static async ValueTask ReadLittleEndianInt32Async(
this Stream stream,
CancellationToken cancellationToken = default
)
@@ -46,7 +46,7 @@ public static class BinaryUtils
return BinaryPrimitives.ReadInt32LittleEndian(bytes);
}
- internal static async Task ReadLittleEndianUInt32Async(
+ internal static async ValueTask ReadLittleEndianUInt32Async(
this Stream stream,
CancellationToken cancellationToken = default
) =>
diff --git a/src/SharpCompress/Compressors/Xz/MultiByteIntegers.cs b/src/SharpCompress/Compressors/Xz/MultiByteIntegers.cs
index 6f7a863b..dbdb51f3 100644
--- a/src/SharpCompress/Compressors/Xz/MultiByteIntegers.cs
+++ b/src/SharpCompress/Compressors/Xz/MultiByteIntegers.cs
@@ -42,7 +42,7 @@ internal static class MultiByteIntegers
return Output;
}
- public static async Task ReadXZIntegerAsync(
+ public static async ValueTask ReadXZIntegerAsync(
this BinaryReader reader,
CancellationToken cancellationToken = default,
int MaxBytes = 9
diff --git a/src/SharpCompress/Compressors/Xz/XZFooter.cs b/src/SharpCompress/Compressors/Xz/XZFooter.cs
index 67b68be7..372e0d63 100644
--- a/src/SharpCompress/Compressors/Xz/XZFooter.cs
+++ b/src/SharpCompress/Compressors/Xz/XZFooter.cs
@@ -29,7 +29,7 @@ public class XZFooter
return footer;
}
- public static async Task FromStreamAsync(
+ public static async ValueTask FromStreamAsync(
Stream stream,
CancellationToken cancellationToken = default
)
diff --git a/src/SharpCompress/Compressors/Xz/XZHeader.cs b/src/SharpCompress/Compressors/Xz/XZHeader.cs
index 39f706b1..e855368f 100644
--- a/src/SharpCompress/Compressors/Xz/XZHeader.cs
+++ b/src/SharpCompress/Compressors/Xz/XZHeader.cs
@@ -25,7 +25,7 @@ public class XZHeader
return header;
}
- public static async Task FromStreamAsync(
+ public static async ValueTask FromStreamAsync(
Stream stream,
CancellationToken cancellationToken = default
)
diff --git a/src/SharpCompress/Compressors/Xz/XZIndexRecord.cs b/src/SharpCompress/Compressors/Xz/XZIndexRecord.cs
index 14e76eb8..355af2a8 100644
--- a/src/SharpCompress/Compressors/Xz/XZIndexRecord.cs
+++ b/src/SharpCompress/Compressors/Xz/XZIndexRecord.cs
@@ -21,7 +21,7 @@ public class XZIndexRecord
return record;
}
- public static async Task FromBinaryReaderAsync(
+ public static async ValueTask FromBinaryReaderAsync(
BinaryReader br,
CancellationToken cancellationToken = default
)
diff --git a/src/SharpCompress/Readers/AbstractReader.cs b/src/SharpCompress/Readers/AbstractReader.cs
index 7572efd8..ed495d42 100644
--- a/src/SharpCompress/Readers/AbstractReader.cs
+++ b/src/SharpCompress/Readers/AbstractReader.cs
@@ -435,7 +435,7 @@ public abstract class AbstractReader : IReader, IAsyncReader
protected virtual EntryStream GetEntryStream() =>
CreateEntryStream(Entry.Parts.First().GetCompressedStream());
- protected virtual async Task GetEntryStreamAsync(
+ protected virtual async ValueTask GetEntryStreamAsync(
CancellationToken cancellationToken = default
)
{
diff --git a/src/SharpCompress/Readers/Rar/RarReader.cs b/src/SharpCompress/Readers/Rar/RarReader.cs
index 3b0575d1..dc2909b9 100644
--- a/src/SharpCompress/Readers/Rar/RarReader.cs
+++ b/src/SharpCompress/Readers/Rar/RarReader.cs
@@ -128,7 +128,7 @@ public abstract partial class RarReader : AbstractReader GetEntryStreamAsync(
+ protected override async System.Threading.Tasks.ValueTask GetEntryStreamAsync(
System.Threading.CancellationToken cancellationToken = default
)
{