Commit Graph

2935 Commits

Author SHA1 Message Date
Adam Hathcock
575ef6003a Merge remote-tracking branch 'origin/release' 2026-08-04 09:30:36 +01:00
Adam Hathcock
abe1c3e309 Merge pull request #1397 from adamhathcock/adam/large-file-tests
Large file tests and detection fixes
2026-08-04 09:29:42 +01:00
Adam Hathcock
20ea4a3e03 Do need the csproj change 2026-08-04 09:27:48 +01:00
Adam Hathcock
a5e3f2d17d Merge remote-tracking branch 'origin/adam/large-file-tests' into adam/large-file-tests 2026-08-04 09:12:27 +01:00
Adam Hathcock
693921ec73 fmt 2026-08-04 09:12:00 +01:00
Adam Hathcock
62d1b5dcc8 Provide a better way to manage async disposable streams 2026-08-04 09:11:26 +01:00
Adam Hathcock
c9a9c0d2ad Merge remote-tracking branch 'origin/adam/large-file-tests' into adam/large-file-tests 2026-08-03 16:38:50 +01:00
Adam Hathcock
4a71ec898b fixes found by gh and sol 2026-08-03 16:38:27 +01:00
Adam Hathcock
369ab91522 fix windows build 2026-08-03 16:01:58 +01:00
Adam Hathcock
c698124896 Fixes for parallel lzma usage 2026-08-03 15:49:01 +01:00
Adam Hathcock
67060f8bfd Merge pull request #1399 from julianxhokaxhiu/feat/lzma-modern
Add LZMA Parallelism and Fast Decoder for modern dotnet
2026-08-03 13:28:48 +01:00
Adam Hathcock
7d242cb55d Merge pull request #1400 from adamhathcock/adam/gzip-sync-generator
gzip using sync generator
2026-08-03 13:03:36 +01:00
Adam Hathcock
ee93b4fa10 Merge remote-tracking branch 'origin/master' into adam/gzip-sync-generator 2026-08-03 12:32:12 +01:00
Adam Hathcock
ae7b4ec98c Merge pull request #1398 from julianxhokaxhiu/feat/crc32-faster
Improve CRC32 by using the slice-by-16 optimization
2026-08-03 11:45:26 +01:00
Adam Hathcock
c4fa31d615 gzip using sync generator 2026-08-03 08:15:18 +01:00
Julian Xhokaxhiu
55db16ecb3 Improve LZMA decoder using 7zip logics for modern dotnet
- Add opt-in Parallel decoding
- Add a new ASM-like decoder
- Add Unit tests for Parallel decoding
2026-08-03 02:50:30 +02:00
Julian Xhokaxhiu
5f340db48d Improve CRC32 by using the slice-by-16 optimization 2026-08-02 23:17:08 +02:00
Adam Hathcock
d391cf21e1 finalize check in 2026-08-01 13:26:48 +01:00
Adam Hathcock
b91289d82c add large file tests and GZip/Lzw factory fixes 2026-08-01 13:25:08 +01:00
Adam Hathcock
67bd9289f9 Merge pull request #1396 from adamhathcock/adam/fix-rar5-decompression-error
Fix RAR5 async decompression corruption in UnpWriteBufAsync
0.50.3
2026-08-01 12:50:05 +01:00
Adam Hathcock
2a2218bcf7 small fix 2026-08-01 12:49:47 +01:00
Adam Hathcock
bc06a9df8b Some clean up 2026-08-01 12:43:44 +01:00
copilot-swe-agent[bot]
cfdfad26b6 Fix RAR5 async decompression corruption in UnpWriteBufAsync
Three bugs in the async version of UnpWriteBuf (used only in the async
decompression path) were causing data corruption when decompressing RAR5
archives containing executable filters (E8/E8E9/ARM) whose blocks spanned
the 4MB write boundary (UNPACK_MAX_WRITE):

1. WrittenFileSize was only incremented inside `if (OutMem != null)`, but
   should always be incremented after ApplyFilter (matching sync behavior).

2. UnpSomeRead = true was missing from the filter processing path.

3. In the NotAllFiltersProcessed else branch (filter intersects write border):
   - WrPtr was not updated to WrittenBorder, corrupting the window pointer
     used to compute WriteBorder on the next flush cycle
   - Remaining filters had NextWindow set to true (inverted logic), when
     sync correctly sets them to false so they are processed next time

All three changes align the async path with the sync UnpWriteBuf logic.
2026-08-01 12:19:09 +01:00
Adam Hathcock
246d968b4d Merge pull request #1393 from adamhathcock/adam/flat-gzip-fix-stream-rewind
Fix SeekableSharpCompressStream.StopRecording() to rewind to recorded…
0.50.2
2026-07-31 16:31:43 +01:00
Adam Hathcock
82c44cb5a5 remove async dispose 2026-07-31 14:52:58 +01:00
Adam Hathcock
a8f6f18843 Fix SeekableSharpCompressStream.StopRecording() to rewind to recorded position
When SeekableSharpCompressStream.StopRecording() was called (e.g. after the tar
probe in GZipFactory.TryOpenReader), it cleared _recordedPosition without seeking
back to it. This left the underlying FileStream at the advanced position reached
during the probe, so the subsequent GZipReader would start reading from the
wrong offset, producing Key=null and 0 extracted bytes.

Fix: seek back to _recordedPosition before clearing it, matching the behavior of
the non-seekable SharpCompressStream.StopRecording() which rewinds _logicalPosition.

Also enhance the existing GZip_ReaderFactory_FlatGZip test to actually verify the
extracted content (not just MoveToNextEntry returns true), and add an async variant.

Closes #1391
2026-07-31 14:21:24 +01:00
Adam Hathcock
187055e673 Merge pull request #1389 from adamhathcock/copilot/fix-review-comment-3670216142
Honor cancellation in BufferedSubStream async cached-read fast paths
2026-07-30 14:52:52 +01:00
Adam Hathcock
82a94606ba Merge pull request #1388 from julianxhokaxhiu/feat/lzma-perf-improvements
Improve LZMA decoding for Solid Archives
2026-07-29 10:52:52 +01:00
copilot-swe-agent[bot]
a688c7c657 Fix BufferedSubStream ReadAsync cancellation fast-path 2026-07-29 07:55:48 +00:00
copilot-swe-agent[bot]
2f545b553a Initial plan 2026-07-29 07:51:15 +00:00
Julian Xhokaxhiu
f5289ef49e Improve LZMA decoding for Solid Archives 2026-07-29 02:36:25 +02:00
Adam Hathcock
f4699ad12d Merge pull request #1380 from adamhathcock/adam/sol-cleanup
Updates recommended by 5.6 Sol
2026-07-28 15:21:28 +01:00
Adam Hathcock
e1ba6d3407 Merge pull request #1383 from adamhathcock/adam/sync-generator
Use more Sync Generator
2026-07-28 15:18:20 +01:00
Adam Hathcock
d5c82b89f6 update generation docs 2026-07-28 15:12:04 +01:00
Adam Hathcock
c21370093d Merge remote-tracking branch 'origin/master' into adam/sync-generator 2026-07-28 15:06:49 +01:00
Adam Hathcock
bb22169ad0 Merge remote-tracking branch 'origin/adam/sol-cleanup' into adam/sol-cleanup 2026-07-28 14:15:06 +01:00
Adam Hathcock
cfd1699e10 fix extension method usage 2026-07-28 14:14:55 +01:00
Adam Hathcock
0a7be79e34 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-28 14:11:56 +01:00
Adam Hathcock
c7c1397e1d Merge remote-tracking branch 'origin/master' into adam/sol-cleanup 2026-07-28 14:10:39 +01:00
Adam Hathcock
be99b9a5dc Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-28 13:19:41 +01:00
Adam Hathcock
cf3dfc0dfa Merge pull request #1382 from virzak/chore/bump-sync-method-generator
Update Zomp.SyncMethodGenerator to 2.0.42
2026-07-28 13:18:57 +01:00
Adam Hathcock
9e3a92ac10 Fix restore 2026-07-28 13:13:17 +01:00
Adam Hathcock
17b8531271 add extra info about sync over async 2026-07-28 12:56:23 +01:00
Victor Irzak
9f74d58eae Update Zomp.SyncMethodGenerator to 2.0.42
Two releases since the generator was adopted here, both fixing things this
repository ran into.

2.0.41 emits the using directives of the source file into the generated one.
Documentation is copied across verbatim and a cref in it resolves against the
file it lands in, so crefs which relied on a using went unresolved and the
compiler reported CS1574 for each.

2.0.42 spaces a rewritten argument list the way it was written. The generated
extension calls here were coming out as

  IArchiveEntryExtensions.WriteTo(archiveEntry,                     streamToWriteTo,
          Constants.BufferSize,
          progress: progress)                ;

and now come out as

  IArchiveEntryExtensions.WriteTo(archiveEntry, streamToWriteTo,
          Constants.BufferSize,
          progress: progress);

No change to what is generated, only to how it is spaced and what its
documentation can refer to. Full test suite passes unchanged.
2026-07-28 07:20:06 -04:00
Adam Hathcock
7ea660c049 batch 2: IO and streams 2026-07-28 12:19:33 +01:00
Adam Hathcock
d6f79a5467 commit plan 2026-07-28 11:52:02 +01:00
Adam Hathcock
ea44ec098b first pass of sync generator 2026-07-28 11:26:51 +01:00
Adam Hathcock
0037141ac4 Merge pull request #1381 from virzak/feature/sync-method-generator
Generate the synchronous archive entry extensions from the async ones
2026-07-28 10:22:17 +01:00
Adam Hathcock
cf2dfa0c30 redid the restore 2026-07-28 10:08:16 +01:00
Adam Hathcock
e783200cd2 minor fixes 2026-07-28 09:59:36 +01:00