Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
f34ed8b
first commit for conslidating publci api
adamhathcock Mar 6, 2026
9050a7a
remove extra creates
adamhathcock Mar 6, 2026
bf32c85
Initial plan
Copilot Mar 6, 2026
b0e9736
Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs to m…
Copilot Mar 6, 2026
542f71f
Merge pull request #1244 from adamhathcock/copilot/sub-pr-1243
adamhathcock Mar 6, 2026
15d6d3c
Merge remote-tracking branch 'origin/master' into adam/api-clean-up
adamhathcock Mar 6, 2026
ebd784c
code review changes
adamhathcock Mar 6, 2026
f13ab3a
FindFactoryAsync shouldn't be public
adamhathcock Mar 6, 2026
e6a179b
fmt
adamhathcock Mar 6, 2026
b05a16d
oops, wrong change made
adamhathcock Mar 6, 2026
b54c420
Merge pull request #1243 from adamhathcock/adam/api-clean-up
adamhathcock Mar 10, 2026
265d990
Fix three BLAKE2sp correctness bugs and eliminate allocations in hot …
Mar 27, 2026
fefeed0
Merge pull request #1267 from adamhathcock/release
adamhathcock Mar 28, 2026
512f101
Merge remote-tracking branch 'origin/master' into coderb/master
adamhathcock Mar 28, 2026
ea6946c
Merge pull request #1266 from coderb/master
adamhathcock Mar 28, 2026
817bd2a
First pass of implementation
adamhathcock Apr 4, 2026
b326b71
Merge branch 'release' into adam/master-release
adamhathcock Apr 4, 2026
9db27df
fix build
adamhathcock Apr 4, 2026
a26198a
use pooled memory streams for better performance
adamhathcock Apr 4, 2026
2bf0075
cleaned up PooledMemoryStream.cs
adamhathcock Apr 4, 2026
db9bdb2
Update src/SharpCompress/IO/PooledMemoryStream.cs
adamhathcock Apr 5, 2026
6b9a3f8
Update src/SharpCompress/Compressors/PPMd/PpmdStream.cs
adamhathcock Apr 5, 2026
5e7644b
Update src/SharpCompress/IO/PooledMemoryStream.cs
adamhathcock Apr 5, 2026
c01dd5c
Update tests/SharpCompress.Test/Streams/PooledMemoryStreamTests.cs
adamhathcock Apr 5, 2026
8c4fed3
Remove try/catch from async overloads and fix CA1725 parameter naming…
Copilot Apr 5, 2026
c25fec3
fix PooledMemoryStream.cs
adamhathcock Apr 5, 2026
bfe7824
remove net5 from target frameworks to avoid issues
adamhathcock Apr 5, 2026
4f09c6d
Update tests/SharpCompress.Test/Streams/PooledMemoryStreamTests.cs
adamhathcock Apr 5, 2026
ec46584
Update src/SharpCompress/IO/PooledMemoryStream.cs
adamhathcock Apr 5, 2026
fb78598
implement GetBuffer with non-pooled array creation
adamhathcock Apr 5, 2026
e7cacdd
don't resize ring buffer
adamhathcock Apr 5, 2026
d1e6173
remove contiguous buffer tracking and added overrenting array pool test
adamhathcock Apr 5, 2026
2487d89
Merge remote-tracking branch 'origin/adam/pooledmemorystream' into ad…
adamhathcock Apr 5, 2026
4d774c6
Fix setting invalid access time fails extraction
aromaa Apr 10, 2026
ef67c0c
Corrected async examples. (#1277)
dlemstra Apr 10, 2026
b2b036a
Merge pull request #1279 from aromaa/fix/access-time-exception
adamhathcock Apr 10, 2026
da30b5c
Fix incorrect code examples in docs for sync/async usage (#1280)
Copilot Apr 10, 2026
23e7245
Replace APPNOTE.TXT contents with reference link note
puk06 Apr 14, 2026
f77f372
Add specification link label to APPNOTE reference
puk06 Apr 14, 2026
bf075d2
Merge pull request #1286 from puk06/docs/appnote-reference-link
adamhathcock Apr 15, 2026
51acd43
Merge branch 'release' into adam/master-release
adamhathcock Apr 19, 2026
14b0fd0
Merge pull request #1274 from adamhathcock/adam/master-release
adamhathcock Apr 19, 2026
e29670e
Merge branch 'master' into adam/pooledmemorystream
adamhathcock Apr 19, 2026
b36689a
format
adamhathcock Apr 19, 2026
ad3c5da
update tests
adamhathcock Apr 19, 2026
a59f4f3
update docs for tar gap analysis
adamhathcock Apr 19, 2026
891d126
Update src/SharpCompress/IO/PooledMemoryStream.cs
adamhathcock Apr 19, 2026
e0ccbbb
Update src/SharpCompress/IO/PooledMemoryStream.cs
adamhathcock Apr 19, 2026
49a7e15
Add EnsureNotClosed() to Flush and FlushAsync in PooledMemoryStream
Copilot Apr 19, 2026
a286d10
Merge pull request #1288 from adamhathcock/adam/tar-pax
adamhathcock Apr 19, 2026
f8485b0
Compute CRC without GetBuffer() in SevenZipWriter to avoid allocation
Copilot Apr 19, 2026
8bd386c
Merge pull request #1275 from adamhathcock/adam/pooledmemorystream
adamhathcock Apr 19, 2026
6105373
First pass of pax implementation
adamhathcock Apr 19, 2026
1ba1966
Merge remote-tracking branch 'origin/master' into adam/tar-pax
adamhathcock Apr 19, 2026
823afd4
fixed header format behavior
adamhathcock Apr 20, 2026
2a62f4d
Add global pax support to TarArchive
adamhathcock Apr 20, 2026
37c0f5a
fix: Change LeaveStreamOpen default from true to false
puk06 Apr 20, 2026
23840b7
fix(zip): stop overriding LeaveStreamOpen in OpenArchive
puk06 Apr 21, 2026
ea95045
fix(docs): clarify stream handling rules and ownership in AGENTS.md
puk06 Apr 21, 2026
8d193db
Potential fix for pull request finding
puk06 Apr 21, 2026
1bd7bf2
Apply suggestions from code review
puk06 Apr 21, 2026
f5e27fa
Potential fix for pull request finding
puk06 Apr 21, 2026
6a7e0b2
Potential fix for pull request finding
puk06 Apr 21, 2026
a351b56
Apply suggestions from code review
puk06 Apr 21, 2026
a026806
tightens up tests
adamhathcock Apr 21, 2026
d99b406
fix: change default reader options in OpenArchive method for FileInfo
puk06 Apr 21, 2026
72b81b8
Merge pull request #1293 from puk06/fix/leave-stream-open-default
adamhathcock Apr 21, 2026
3af023a
Use explicit helpers for leaving streams open or not.
adamhathcock Apr 21, 2026
4f1f32b
Fix usages of ReaderOptions
adamhathcock Apr 21, 2026
1f699f3
manual clean up
adamhathcock Apr 21, 2026
6a402a3
use with methods
adamhathcock Apr 21, 2026
d10b932
clean up for other options
adamhathcock Apr 21, 2026
5d75f8c
Fix ForExternalStream→ForFilePath for file-path overloads and update …
Copilot Apr 21, 2026
f4935b0
Fix ReaderOptions preset usage for file-path overloads and stale Symb…
Copilot Apr 21, 2026
d3ff2eb
Merge pull request #1295 from adamhathcock/adam/fix-opening
adamhathcock Apr 21, 2026
3ed94dd
add seekable checks
adamhathcock Apr 23, 2026
be4b6cd
ignore opencode stuff
adamhathcock Apr 23, 2026
2bae46e
add extension methods for checks
adamhathcock Apr 23, 2026
5d14c96
clean up seekable checks
adamhathcock Apr 23, 2026
c9a6859
add writable checks
adamhathcock Apr 23, 2026
41432ab
human fix
adamhathcock Apr 23, 2026
5017900
Merge pull request #1297 from adamhathcock/adam/enforce-seekable
adamhathcock Apr 23, 2026
76300b9
Initial plan
Copilot Apr 25, 2026
a176ffe
initial plan
Copilot Apr 25, 2026
6c59326
Add ArchiveInformation record and GetArchiveInformation API for conso…
Copilot Apr 25, 2026
f118935
Consolidate archive detection into shared TryFindFactory helpers
Copilot Apr 25, 2026
d2c06e9
Clean up and move detection to new file
adamhathcock Apr 26, 2026
4fc0853
add detection test
adamhathcock Apr 26, 2026
ac8203e
add sync tests
adamhathcock Apr 26, 2026
aae3502
intermediate commit
adamhathcock Apr 27, 2026
472765b
fix up overloads and usages
adamhathcock Apr 27, 2026
d961301
Merge pull request #1299 from adamhathcock/copilot/add-archive-detect…
adamhathcock Apr 27, 2026
2b7faac
Initial plan
Copilot Apr 28, 2026
01273b7
Fix AsyncOnlyStream to throw on sync operations
Copilot Apr 28, 2026
698257d
Fix async-only stream violations: defer sync writes to async paths in…
Copilot Apr 28, 2026
8a8fb98
Enforce sync-write prohibition in AsyncOnlyStream and eliminate sync …
Copilot Apr 28, 2026
56bf786
Merge remote-tracking branch 'origin/release' into copilot/fix-async-…
adamhathcock Apr 28, 2026
afc2730
fix up disposal for legacy frameworks
adamhathcock Apr 29, 2026
06a70fd
Fully implement FInishAsync
adamhathcock Apr 29, 2026
14ad6a8
tar can write async
adamhathcock Apr 29, 2026
998853c
LZip might work if SCS writes are done
adamhathcock Apr 29, 2026
818735d
forgot a disposal change
adamhathcock Apr 29, 2026
29744b3
fix writing of headers
adamhathcock Apr 29, 2026
2aec75a
Small fixes and format
adamhathcock Apr 30, 2026
29f06b7
add Crc32Stream write async
adamhathcock Apr 30, 2026
6172bd3
fix LzmaStream writing async
adamhathcock Apr 30, 2026
de36344
Fix more async stream disposal
adamhathcock Apr 30, 2026
2f3d11c
Rationalize AsyncDisposable
adamhathcock Apr 30, 2026
48afb4d
fixed providers in TarWriter and TarArchive.
adamhathcock Apr 30, 2026
ee02924
Figure out more async usage for legacy
adamhathcock Apr 30, 2026
25a5b7b
BZip2 fixed?
adamhathcock May 5, 2026
69ef2b2
merge fixes
adamhathcock May 6, 2026
117eaa8
Merge remote-tracking branch 'origin/master' into adam/merge-release-…
adamhathcock May 6, 2026
005c269
Merge fixes
adamhathcock May 6, 2026
f92d86f
remove net 7 and 9
adamhathcock May 6, 2026
1e6da68
Merge pull request #1314 from adamhathcock/adam/merge-release-to-master
adamhathcock May 6, 2026
a05465a
Some clean up of unused vars
adamhathcock May 13, 2026
ccb3aaf
AI clean up for tests
adamhathcock May 13, 2026
2352f79
format
adamhathcock May 13, 2026
55393ca
Merge pull request #1321 from adamhathcock/adam/some-cleanup
adamhathcock May 13, 2026
9e2aac2
Merge remote-tracking branch 'origin/release' into adam/write-async
adamhathcock May 14, 2026
270b018
fixed zip writing for PPMD
adamhathcock May 14, 2026
d3fb640
BZip2 now is async
adamhathcock May 14, 2026
da20f51
use ValueTask where possible
adamhathcock May 14, 2026
9faf6fe
fix legacy type issues
adamhathcock May 14, 2026
63b104f
Merge remote-tracking branch 'origin/master' into adam/write-async
adamhathcock May 14, 2026
a6b644f
merge fixes
adamhathcock May 14, 2026
9dbe3c7
Initial plan
Copilot May 14, 2026
7e9525f
Remove leave open usage for writer
adamhathcock May 14, 2026
b8376cb
Merge remote-tracking branch 'origin/adam/write-async' into adam/writ…
adamhathcock May 14, 2026
2d5c221
Fix tar archive enumeration after fully reading entry streams
Copilot May 14, 2026
7b73b0b
changed visibiilty of WriteHeaderSizeAsync
adamhathcock May 15, 2026
20a656c
review feedback
adamhathcock May 15, 2026
2154419
Merge pull request #1323 from adamhathcock/adam/write-async
adamhathcock May 15, 2026
1e33462
Merge remote-tracking branch 'origin/master' into adam/tar-pax
adamhathcock May 15, 2026
9d87274
build and test fixes
adamhathcock May 15, 2026
a7d5949
Some tar fixes from review
adamhathcock May 15, 2026
f8c6142
Merge pull request #1289 from adamhathcock/adam/tar-pax
adamhathcock May 15, 2026
576d431
Add PolySharp. Odd frameworks aren't supported
adamhathcock May 20, 2026
63bfa18
fix public init-only API setters
Copilot May 20, 2026
9699907
test older consumer API compatibility
Copilot May 20, 2026
192a947
Merge pull request #1330 from adamhathcock/adam/fix-lang-version
adamhathcock May 20, 2026
673cb36
start skills
adamhathcock May 25, 2026
a702e4f
add tar skill
adamhathcock May 25, 2026
5185cbb
Initial plan
Copilot May 25, 2026
48ff579
Fix single-volume archive Volume.FileName resolution
Copilot May 25, 2026
a5ef90e
Revert unrelated lockfile updates
Copilot May 25, 2026
34034e8
Finalize single-volume FileName fix validation
Copilot May 25, 2026
1af9397
Remove regenerated lockfile noise
Copilot May 25, 2026
b36a8e9
Merge pull request #1333 from adamhathcock/copilot/fix-null-filename-…
adamhathcock May 26, 2026
7569436
Potential fix for pull request finding
adamhathcock May 26, 2026
55a6dae
Potential fix for pull request finding
adamhathcock May 26, 2026
c49c1f4
Add correct Xz mapping
adamhathcock May 26, 2026
9bc2a86
update docs to remove LZMA2 from Zip
adamhathcock May 26, 2026
35c9cdd
add zip skill and upgrade packages
adamhathcock May 26, 2026
4334078
add rar skill
adamhathcock May 26, 2026
98b4ffc
Merge pull request #1332 from adamhathcock/adam/update-docs-skills
adamhathcock May 26, 2026
55df0d3
add AOT smoke and missing tests
adamhathcock May 26, 2026
c0b42d4
test: dispose reader stream in async parity test
Copilot May 27, 2026
851aa39
test: dispose wrapped cancellation stream
Copilot May 27, 2026
0a3c36d
Dispose caller-provided stream in async archive open test
Copilot May 27, 2026
a984a3e
Merge pull request #1334 from adamhathcock/adam/recommended-gaps-filled
adamhathcock May 27, 2026
76ed18f
Initial plan
Copilot May 28, 2026
5adae48
Fix writable archive async disposal and add regression tests
Copilot May 28, 2026
22e32f2
Revert unintended lockfile updates
Copilot May 28, 2026
3f79edd
Initial plan
Copilot May 29, 2026
d5a8f98
Fix async progress reporting for solid 7z extraction
Copilot May 29, 2026
afea217
chore: finalize security verification
Copilot May 29, 2026
01fe281
Merge pull request #1338 from adamhathcock/copilot/fix-writable-archi…
adamhathcock May 29, 2026
ae8d983
Fix flaky progress test by using synchronous IProgress implementation
Copilot May 29, 2026
7c5a7dc
Try to fix global.json to avoid churn in locks
adamhathcock May 29, 2026
d6efe32
fmt
adamhathcock May 29, 2026
eb5efc2
Merge pull request #1340 from adamhathcock/copilot/fix-7zip-progress-…
adamhathcock May 29, 2026
49d3452
Merge remote-tracking branch 'origin/master' into adam/fix-locks
adamhathcock May 29, 2026
bb7ab31
add rtk gubbins to ignore things
adamhathcock May 29, 2026
e7eb109
update settings to avoid package lock churn
adamhathcock May 29, 2026
ee64868
Add tar reader regression tests
Copilot May 29, 2026
938995e
Merge remote-tracking branch 'origin/master' into copilot/fix-tararch…
adamhathcock May 29, 2026
7a6a8d5
Fix merge
adamhathcock May 29, 2026
762580c
add aot smoke to sln
adamhathcock May 29, 2026
d544e4e
Merge pull request #1341 from adamhathcock/adam/fix-locks
adamhathcock May 29, 2026
ca32d49
Merge remote-tracking branch 'origin/master' into copilot/fix-tararch…
adamhathcock May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .agents/skills/rar-format/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: rar-format
description: Reference the RAR/RAR5 archive container format and UnRAR source behavior. Use when an AI agent needs to answer questions or make code changes involving RAR signatures, RAR5 vint fields, block headers, file/service headers, extra records, solid archives, multivolume parts, encryption headers, recovery records, quick-open data, or SharpCompress Rar parsing and extraction behavior.
---

# Rar Format

Use this skill for RAR container-format work. It provides a local, SharpCompress-oriented reference for RAR 5.0 archive blocks, older RAR header compatibility, UnRAR source behavior, and current SharpCompress Rar implementation boundaries.

## Reference

- Read [references/rar-format.md](references/rar-format.md) when the task depends on RAR binary layout, RAR4 vs RAR5 signatures, RAR5 vint encoding, block/header flags, file and service header fields, extra records, encrypted headers, solid archives, split volumes, redirection records, or current SharpCompress Rar support boundaries.
- Treat the reference as an implementation guide, not a standards replacement. It summarizes `reference/RAR 5.0 archive format.htm` and selected files under `reference/unrar/`, especially `headers5.hpp`, `headers.hpp`, `arcread.cpp`, `rawread.*`, `crypt*.cpp`, `qopen.*`, `volume.*`, `recvol*.cpp`, `unpack*.cpp`, and `blake2sp.*`.
- Prefer the SharpCompress support matrix in the reference over generic RAR assumptions when changing code. RAR is a read-only format in SharpCompress, and metadata/service-header support is intentionally partial.

## Workflow

1. Identify which layer is involved: signature detection, RAR4 headers, RAR5 headers, vint parsing, block flags, extra records, file/service metadata, encrypted headers, multivolume handling, decompression, reader/archive API behavior, or tests.
2. Open the relevant section in `references/rar-format.md` and use the source-file pointers before changing code.
3. For header parsing changes, cross-check sync and async implementations: `MarkHeader.cs`, `RarHeader.cs`, `RarHeaderFactory.cs`, `FileHeader.cs`, `Flags.cs`, and their async counterparts.
4. For extraction changes, verify split and solid archive behavior with `RarArchive`, `RarReader`, `RarStream`, and the unpacker files under `src/SharpCompress/Compressors/Rar/`.
5. For support claims, keep unsupported or partial features explicit: RAR writing, pre-RAR4 archives, complete service-header semantics, quick-open use, recovery reconstruction, and encryption/version constraints.
Loading
Loading