Adam Hathcock
0615d17b8b
fix async interfacing for open
2026-01-12 13:45:21 +00:00
Adam Hathcock
c1f8580d89
Remove unnecessary ValueTask wrappers from async factory methods
...
Change return types from ValueTask<T> to direct interface types (IAsyncArchive, IAsyncReader, IWriter) for wrapper methods that don't perform async work. This eliminates unnecessary async state machine allocations while maintaining the same public API behavior.
Changes:
- Interface definitions: Updated IArchiveFactory, IMultiArchiveFactory, IReaderFactory, IWriterFactory
- Concrete factories: Updated archive factories (Zip, Tar, Rar, GZip, SevenZip) and reader-only factories (Ace, Arc, Arj)
- Static factory methods: Updated ReaderFactory, ArchiveFactory, WriterFactory to use new signatures
- Archive classes: Updated static OpenAsync methods in ZipArchive, TarArchive, RarArchive, SevenZipArchive, GZipArchive
- Supporting changes: Updated Factory.cs and async polyfills
Performance benefit: Reduced GC pressure by eliminating unnecessary state machine overhead for non-async wrapper methods.
2026-01-12 13:16:44 +00:00
Adam Hathcock
05ebf22009
Start using the interface to draw distinction between async and sync
2026-01-12 12:08:25 +00:00
Adam Hathcock
a35e65ee42
use ifdefs for creating files?
2026-01-08 16:52:23 +00:00
Adam Hathcock
ae614cd3fe
update references
2026-01-08 16:14:40 +00:00
Adam Hathcock
ef0b9d525c
merge conflicts
2026-01-08 15:37:55 +00:00
Adam Hathcock
01e6e04a78
Merge branch 'master' into adam/async
...
# Conflicts:
# src/SharpCompress/Common/Zip/Headers/LocalEntryHeader.cs
# src/SharpCompress/Common/Zip/Headers/ZipFileEntry.cs
2026-01-08 15:36:41 +00:00
Adam Hathcock
a7d6d6493e
add version numbers again to get them
2026-01-08 14:22:54 +00:00
Adam Hathcock
b6cc95af73
Merge pull request #1122 from adamhathcock/adam/netstandard-20-readd
...
Readd netstandard 2.0
2026-01-08 14:03:30 +00:00
Adam Hathcock
ec83cf588f
Readd netstandard 2.0
2026-01-08 13:33:36 +00:00
Adam Hathcock
3747a27109
Task to ValueTask
2026-01-08 12:35:12 +00:00
Adam Hathcock
b501bac54a
better names for new interfaces
2026-01-08 12:02:26 +00:00
Adam Hathcock
7aec98d652
read async interface for reader
2026-01-08 11:28:15 +00:00
Adam Hathcock
406b198e0e
can't dispose before returning
2026-01-08 10:24:33 +00:00
Adam Hathcock
8e42296c3a
switch Task to ValueTask
2026-01-08 10:22:53 +00:00
Adam Hathcock
60e5220bd0
fmt
2026-01-08 09:41:48 +00:00
Adam Hathcock
0f37cbfd0b
archive async path uses new async interface
2026-01-08 09:39:04 +00:00
Adam Hathcock
541fd136d5
IArchiveAsync
2026-01-08 09:14:46 +00:00
Adam Hathcock
60d42ca9c3
fmt
2026-01-07 16:38:48 +00:00
Adam Hathcock
ac0716ddeb
write testing
2026-01-07 15:01:04 +00:00
Adam Hathcock
b9792ca491
fix async zip decompression
2026-01-07 14:54:32 +00:00
Adam Hathcock
c3fd42057a
Pass more Zip tests
2026-01-07 14:47:20 +00:00
Adam Hathcock
39d85ff4f6
conflicts from merge
2026-01-07 12:18:14 +00:00
Adam Hathcock
fbce3e77ba
Merge branch 'master' into adam/async
...
# Conflicts:
# src/SharpCompress/Utility.cs
2026-01-07 12:11:19 +00:00
Adam Hathcock
66e9de2685
fixed comment
2026-01-07 11:26:42 +00:00
Adam Hathcock
321520408b
fmt
2026-01-07 11:12:02 +00:00
Adam Hathcock
68451bd75f
Use explicit enum, add comments
2026-01-07 11:10:15 +00:00
Adam Hathcock
486fdf118b
move to own files and refactor UTF8 usage
2026-01-07 10:39:18 +00:00
Adam Hathcock
bd3cda0617
Some restoring of functionality
2026-01-07 10:32:02 +00:00
Adam Hathcock
725503d1ce
Change ArchiveEncoding to interface. Simplify class. Question what to do about Forced and complex access
2026-01-07 08:44:12 +00:00
Adam Hathcock
fd968b3f78
Update src/SharpCompress/IO/ReadOnlySubStream.cs
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-01-06 16:33:03 +00:00
Adam Hathcock
833dd7b3a2
fix tests and fmt
2026-01-06 15:33:43 +00:00
Adam Hathcock
b9258ad496
use more ValueTask methods but types are still created because of state machine suspension
2026-01-06 15:26:49 +00:00
copilot-swe-agent[bot]
0678318dde
Fix async decompression by implementing Memory<byte> ReadAsync overload
...
The issue was that .NET 10's ReadExactlyAsync calls the Memory<byte> overload of ReadAsync, which wasn't implemented in BufferedSubStream. This caused it to fall back to the base Stream implementation that uses synchronous reads, leading to cache state corruption.
Solution: Added ValueTask<int> ReadAsync(Memory<byte>, CancellationToken) overload for modern .NET versions.
All tests now passing including LZMA2 and Solid archives.
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-06 14:18:15 +00:00
copilot-swe-agent[bot]
7116c0d098
Add async support to BufferedSubStream for 7zip decompression
...
- Implemented ReadAsync and RefillCacheAsync methods in BufferedSubStream
- Added async test cases for SevenZipArchive (LZMA, LZMA2, Solid, BZip2, PPMd)
- Tests show LZMA, BZip2, and PPMd working correctly
- LZMA2 and Solid archives still failing with Data Error - investigating cache state management
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-06 14:13:48 +00:00
Adam Hathcock
64b209a772
add disposal tests and fix lzipstream
2026-01-06 13:13:34 +00:00
Adam Hathcock
48dbdbfed5
fmt
2026-01-06 12:49:26 +00:00
Adam Hathcock
cf50311b9c
Skip should use framework stuff
2026-01-06 12:45:13 +00:00
Adam Hathcock
e4d8582a2a
7zip streams always want to be disposed
2026-01-06 12:42:48 +00:00
Adam Hathcock
af951d6f6a
Merge pull request #1102 from TwanVanDongen/master
...
Add support for ACE archives
2026-01-05 16:37:35 +00:00
Twan van Dongen
7a49eb9e93
Archives containing encrypted content throws exception.
2026-01-04 19:10:57 +01:00
copilot-swe-agent[bot]
b25493fd29
Fix InvalidOperationException when RAR unpacks more data than header specifies
...
Changed validation condition from `_position != Length` to `_position < Length` in RarStream.Read() and RarStream.ReadImplAsync() to only throw when unpacking ends prematurely, not when more data is unpacked than the header specifies. This allows successful extraction of RAR files where the actual uncompressed size exceeds the header size.
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-04 09:23:47 +00:00
copilot-swe-agent[bot]
9bd86f64c9
Replace manual TransferTo implementation with Stream.CopyTo framework methods
...
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-03 18:41:02 +00:00
Twan van Dongen
3ebf97dd49
MultiVolume not supported, tests provided by split archive.
2026-01-03 19:09:43 +01:00
copilot-swe-agent[bot]
77015224f6
Add input validation for ReadBytesAsync count parameter
...
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-03 17:19:55 +00:00
copilot-swe-agent[bot]
372ecb77d0
Use threshold-based ArrayPool strategy for BinaryReaderExtensions
...
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-03 17:17:59 +00:00
copilot-swe-agent[bot]
05642cbdc6
Use ArrayPool for temporary buffers in BinaryReaderExtensions
...
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com >
2026-01-03 17:12:43 +00:00
Twan van Dongen
feece3d788
Missed some CSharpier edits
2026-01-03 18:08:01 +01:00
Twan van Dongen
909d36c237
more subtle check of magic bytes for ARJ archives
2026-01-03 17:59:17 +01:00
Twan van Dongen
e1c8aa226d
Add ACE archive support (read-only, stored entries)
2026-01-03 17:18:00 +01:00