Fix usage of ReaderOptions and pre-defined values#1295
Merged
Conversation
Owner
Author
|
Inspired by #1293 |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR standardizes how ReaderOptions defaults are selected across SharpCompress when opening archives/readers from file paths vs caller-provided streams, and simplifies symbolic link extraction behavior by only invoking a handler when explicitly provided.
Changes:
- Replaced ad-hoc
new ReaderOptions { ... }defaults withReaderOptions.ForFilePath/ReaderOptions.ForExternalStream(plus fluent helpers) across readers, archives, tests, and benchmarks. - Tightened option handling by requiring non-null
ReaderOptionsin volume constructors and removing redundant option-fixing helpers. - Removed the built-in default symbolic link handler and changed extraction to no-op for symlinks unless a handler is supplied.
Reviewed changes
Copilot reviewed 53 out of 53 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/SharpCompress.Test/Zip/ZipShortReadTests.cs | Uses ReaderOptions.ForExternalStream preset for stream-based reader creation. |
| tests/SharpCompress.Test/Zip/ZipReaderTests.cs | Updates ZIP reader tests to use presets + fluent helpers consistently. |
| tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs | Updates async ZIP reader tests to use presets consistently. |
| tests/SharpCompress.Test/Zip/ZipArchiveTests.cs | Updates ZIP archive tests to use presets (includes one file-path call currently using ForExternalStream). |
| tests/SharpCompress.Test/Zip/Zip64Tests.cs | Uses stream preset and with for ZIP64 forward-only reading options. |
| tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs | Uses stream preset and with for async ZIP64 forward-only reading options. |
| tests/SharpCompress.Test/WriterTests.cs | Switches tests to start from ReaderOptions.ForExternalStream. |
| tests/SharpCompress.Test/TestBase.cs | Uses preset + fluent helper for leave-open behavior during archive comparisons. |
| tests/SharpCompress.Test/Tar/TarArchiveTests.cs | Uses preset + fluent helper for archive encoding. |
| tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs | Uses preset + fluent helper for async tar tests. |
| tests/SharpCompress.Test/Streams/DisposalTests.cs | Uses stream preset for disposal behavior coverage. |
| tests/SharpCompress.Test/SevenZip/SevenZipArchiveTests.cs | Uses presets for stream vs path tests and fluent helpers for common flags. |
| tests/SharpCompress.Test/ReaderTests.cs | Replaces direct with { LeaveStreamOpen = ... } with fluent helper and presets. |
| tests/SharpCompress.Test/Rar/RarReaderTests.cs | Updates RAR reader tests to use presets consistently. |
| tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs | Updates async RAR reader tests to use presets consistently. |
| tests/SharpCompress.Test/Rar/RarHeaderFactoryTest.cs | Uses stream preset for header factory construction. |
| tests/SharpCompress.Test/Rar/RarArchiveTests.cs | Updates RAR archive tests to use presets (includes one file-path call currently using ForExternalStream). |
| tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs | Updates async RAR archive tests to use presets (includes one file-path call currently using ForExternalStream). |
| tests/SharpCompress.Test/ProgressReportTests.cs | Switches to fluent helper for Progress and presets for defaults. |
| tests/SharpCompress.Test/OptionsUsabilityTests.cs | Aligns usability tests with new preset-first usage patterns. |
| tests/SharpCompress.Test/Lzw/LzwReaderTests.cs | Uses stream preset for LZW reader factory test. |
| tests/SharpCompress.Test/CompressionProviderTests.cs | Uses presets + fluent helpers for provider registry and encoding cases. |
| tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs | Uses stream preset in async ARJ tests. |
| tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs | Uses stream preset in async ACE tests. |
| tests/SharpCompress.Performance/Benchmarks/ZipBenchmarks.cs | Uses stream preset for benchmark reader/archive open paths. |
| tests/SharpCompress.Performance/Benchmarks/TarBenchmarks.cs | Uses stream preset for benchmark reader/archive open paths. |
| src/SharpCompress/packages.lock.json | Updates ILLink.Tasks versions for net8.0/net10.0. |
| src/SharpCompress/Writers/WriterOptions.cs | Simplifies CompressionType and uses auto-property backing field for validated CompressionLevel. |
| src/SharpCompress/Readers/Zip/ZipReader.cs | Defaults stream-based reader options to ForExternalStream. |
| src/SharpCompress/Readers/Tar/TarReader.Factory.cs | Defaults stream-based reader options to ForExternalStream (sync/async). |
| src/SharpCompress/Readers/ReaderOptions.cs | Introduces internal Default and redefines presets to derive from it. |
| src/SharpCompress/Readers/ReaderFactory.cs | Uses ForFilePath for path overloads and ForExternalStream for stream overloads. |
| src/SharpCompress/Readers/ReaderFactory.Async.cs | Same preset defaulting as sync factory for async reader opens. |
| src/SharpCompress/Readers/Rar/RarReader.cs | Defaults stream-based RAR readers to ForExternalStream. |
| src/SharpCompress/Readers/Lzw/LzwReader.Factory.cs | Defaults stream-based LZW readers to ForExternalStream. |
| src/SharpCompress/Readers/GZip/GZipReader.Factory.cs | Defaults stream-based GZip readers to ForExternalStream. |
| src/SharpCompress/Readers/Arj/ArjReader.cs | Defaults stream-based ARJ readers to ForExternalStream. |
| src/SharpCompress/Readers/Arc/ArcReader.cs | Defaults stream-based ARC readers to ForExternalStream. |
| src/SharpCompress/Readers/Ace/AceReader.Factory.cs | Defaults stream-based ACE readers to ForExternalStream (sync/async). |
| src/SharpCompress/Factories/TarFactory.cs | Defaults tar factory reader options to ForExternalStream. |
| src/SharpCompress/Common/Volume.cs | Makes ReaderOptions non-nullable in Volume constructor. |
| src/SharpCompress/Common/Lzw/LzwVolume.cs | Makes ReaderOptions non-nullable for public constructors and uses fluent helper. |
| src/SharpCompress/Common/GZip/GZipVolume.cs | Makes ReaderOptions non-nullable for public constructors and uses fluent helper. |
| src/SharpCompress/Common/ExtractionOptions.cs | Removes default symlink handler implementation and minor constructor refactor. |
| src/SharpCompress/Common/ExtractionMethods.cs | Symlink extraction now only invokes handler when provided (no default handler). |
| src/SharpCompress/Common/ExtractionMethods.Async.cs | Async equivalent of the symlink handler behavior change. |
| src/SharpCompress/Archives/Zip/ZipArchive.cs | Uses stream preset for internal SourceStream creation. |
| src/SharpCompress/Archives/Zip/ZipArchive.Async.cs | Async equivalent: uses stream preset for internal SourceStream. |
| src/SharpCompress/Archives/Rar/RarArchive.Factory.cs | Uses ForFilePath / ForExternalStream defaults for RAR archives. |
| src/SharpCompress/Archives/Rar/FileInfoRarArchiveVolume.cs | Removes helper method and uses fluent helper to force LeaveStreamOpen=false for file-backed volumes. |
| src/SharpCompress/Archives/ArchiveFactory.cs | Uses ForFilePath by default for string path overload. |
| src/SharpCompress/Archives/ArchiveFactory.Async.cs | Uses ForFilePath by default for async string path overload. |
| src/SharpCompress/Archives/AbstractArchive.cs | Initializes ReaderOptions using internal ReaderOptions.Default. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…SymbolicLinkHandler remarks Agent-Logs-Url: https://github.com/adamhathcock/sharpcompress/sessions/41bf7d12-f140-47cf-96f9-3620eeb0eb32 Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
…olicLinkHandler docs Agent-Logs-Url: https://github.com/adamhathcock/sharpcompress/sessions/41bf7d12-f140-47cf-96f9-3620eeb0eb32 Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
This was referenced May 28, 2026
github-actions Bot
pushed a commit
to Stella-sea/ryujinx-admin
that referenced
this pull request
May 31, 2026
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [SharpCompress](https://github.com/adamhathcock/sharpcompress) | `0.48.1` → `0.49.1` |  |  | --- ### Release Notes <details> <summary>adamhathcock/sharpcompress (SharpCompress)</summary> ### [`v0.49.1`](https://github.com/adamhathcock/sharpcompress/releases/tag/0.49.1): - More fixes [Compare Source](adamhathcock/sharpcompress@0.49.0...0.49.1) #### What's Changed - Close writable entry streams during async archive disposal by [@​Copilot](https://github.com/Copilot) in [#​1338](adamhathcock/sharpcompress#1338) - Restore `WriteToDirectoryAsync` progress callbacks for solid 7z archives by [@​Copilot](https://github.com/Copilot) in [#​1340](adamhathcock/sharpcompress#1340) - Try to fix global.json to avoid churn in locks by [@​adamhathcock](https://github.com/adamhathcock) in [#​1341](adamhathcock/sharpcompress#1341) - Fix tar archive enumeration after fully reading entry streams by [@​adamhathcock](https://github.com/adamhathcock) in [#​1342](adamhathcock/sharpcompress#1342) **Full Changelog**: <adamhathcock/sharpcompress@0.49.0...0.49.1> ### [`v0.49.0`](https://github.com/adamhathcock/sharpcompress/releases/tag/0.49.0): - Write Async fixes and more. [Compare Source](adamhathcock/sharpcompress@0.48.1...0.49.0) This should contain a lot of write async fixes and some breaking API changes that fix previous broke `net48` usage #### What's Changed - Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs by [@​Copilot](https://github.com/Copilot) in [#​1244](adamhathcock/sharpcompress#1244) - Some API clean up from GPT 5.4 by [@​adamhathcock](https://github.com/adamhathcock) in [#​1243](adamhathcock/sharpcompress#1243) - Release to master by [@​adamhathcock](https://github.com/adamhathcock) in [#​1267](adamhathcock/sharpcompress#1267) - Fix three BLAKE2sp correctness bugs and eliminate allocations in hot path by [@​coderb](https://github.com/coderb) in [#​1266](adamhathcock/sharpcompress#1266) - Corrected async examples. by [@​dlemstra](https://github.com/dlemstra) in [#​1277](adamhathcock/sharpcompress#1277) - Fix setting invalid access time fails extraction by [@​aromaa](https://github.com/aromaa) in [#​1279](adamhathcock/sharpcompress#1279) - Fix incorrect code examples in docs for sync/async usage by [@​Copilot](https://github.com/Copilot) in [#​1280](adamhathcock/sharpcompress#1280) - Replace APPNOTE.TXT contents with reference link note by [@​puk06](https://github.com/puk06) in [#​1286](adamhathcock/sharpcompress#1286) - Release to Master by [@​adamhathcock](https://github.com/adamhathcock) in [#​1274](adamhathcock/sharpcompress#1274) - update docs for tar gap analysis and XZ usage by [@​adamhathcock](https://github.com/adamhathcock) in [#​1288](adamhathcock/sharpcompress#1288) - Add a PooledMemoryStream to avoid allocating by [@​adamhathcock](https://github.com/adamhathcock) in [#​1275](adamhathcock/sharpcompress#1275) - fix: Change LeaveStreamOpen default from true to false by [@​puk06](https://github.com/puk06) in [#​1293](adamhathcock/sharpcompress#1293) - Fix usage of ReaderOptions and pre-defined values by [@​adamhathcock](https://github.com/adamhathcock) in [#​1295](adamhathcock/sharpcompress#1295) - Enforce seekable, readable and writable on streams by [@​adamhathcock](https://github.com/adamhathcock) in [#​1297](adamhathcock/sharpcompress#1297) - Add ArchiveInformation record for consolidated archive detection and capability inspection by [@​Copilot](https://github.com/Copilot) in [#​1299](adamhathcock/sharpcompress#1299) - merge release to master by [@​adamhathcock](https://github.com/adamhathcock) in [#​1314](adamhathcock/sharpcompress#1314) - Some clean up and test clean up by [@​adamhathcock](https://github.com/adamhathcock) in [#​1321](adamhathcock/sharpcompress#1321) - Finish Write Async by [@​adamhathcock](https://github.com/adamhathcock) in [#​1323](adamhathcock/sharpcompress#1323) - More complete Tar implementation: USTAR, PAX, etc. by [@​adamhathcock](https://github.com/adamhathcock) in [#​1289](adamhathcock/sharpcompress#1289) - Add Polysharp and adjustments that do not break legacy frameworks by [@​adamhathcock](https://github.com/adamhathcock) in [#​1330](adamhathcock/sharpcompress#1330) - Fix null `IVolume.FileName` for single-volume file-based archives by [@​Copilot](https://github.com/Copilot) in [#​1333](adamhathcock/sharpcompress#1333) - Add skills by [@​adamhathcock](https://github.com/adamhathcock) in [#​1332](adamhathcock/sharpcompress#1332) - add AOT smoke and missing tests by [@​adamhathcock](https://github.com/adamhathcock) in [#​1334](adamhathcock/sharpcompress#1334) #### New Contributors - [@​dlemstra](https://github.com/dlemstra) made their first contribution in [#​1277](adamhathcock/sharpcompress#1277) - [@​aromaa](https://github.com/aromaa) made their first contribution in [#​1279](adamhathcock/sharpcompress#1279) - [@​puk06](https://github.com/puk06) made their first contribution in [#​1286](adamhathcock/sharpcompress#1286) **Full Changelog**: <adamhathcock/sharpcompress@0.48.1...0.49.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzguMCIsInVwZGF0ZWRJblZlciI6IjQzLjE3OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=--> Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/123
tonycknight
pushed a commit
to tonycknight/microbroker
that referenced
this pull request
May 31, 2026
Updated [SharpCompress](https://github.com/adamhathcock/sharpcompress) from 0.48.1 to 0.49.0. <details> <summary>Release notes</summary> _Sourced from [SharpCompress's releases](https://github.com/adamhathcock/sharpcompress/releases)._ ## 0.49.0 This should contain a lot of write async fixes and some breaking API changes that fix previous broke `net48` usage ## What's Changed * Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs by @Copilot in adamhathcock/sharpcompress#1244 * Some API clean up from GPT 5.4 by @adamhathcock in adamhathcock/sharpcompress#1243 * Release to master by @adamhathcock in adamhathcock/sharpcompress#1267 * Fix three BLAKE2sp correctness bugs and eliminate allocations in hot path by @coderb in adamhathcock/sharpcompress#1266 * Corrected async examples. by @dlemstra in adamhathcock/sharpcompress#1277 * Fix setting invalid access time fails extraction by @aromaa in adamhathcock/sharpcompress#1279 * Fix incorrect code examples in docs for sync/async usage by @Copilot in adamhathcock/sharpcompress#1280 * Replace APPNOTE.TXT contents with reference link note by @puk06 in adamhathcock/sharpcompress#1286 * Release to Master by @adamhathcock in adamhathcock/sharpcompress#1274 * update docs for tar gap analysis and XZ usage by @adamhathcock in adamhathcock/sharpcompress#1288 * Add a PooledMemoryStream to avoid allocating by @adamhathcock in adamhathcock/sharpcompress#1275 * fix: Change LeaveStreamOpen default from true to false by @puk06 in adamhathcock/sharpcompress#1293 * Fix usage of ReaderOptions and pre-defined values by @adamhathcock in adamhathcock/sharpcompress#1295 * Enforce seekable, readable and writable on streams by @adamhathcock in adamhathcock/sharpcompress#1297 * Add ArchiveInformation record for consolidated archive detection and capability inspection by @Copilot in adamhathcock/sharpcompress#1299 * merge release to master by @adamhathcock in adamhathcock/sharpcompress#1314 * Some clean up and test clean up by @adamhathcock in adamhathcock/sharpcompress#1321 * Finish Write Async by @adamhathcock in adamhathcock/sharpcompress#1323 * More complete Tar implementation: USTAR, PAX, etc. by @adamhathcock in adamhathcock/sharpcompress#1289 * Add Polysharp and adjustments that do not break legacy frameworks by @adamhathcock in adamhathcock/sharpcompress#1330 * Fix null `IVolume.FileName` for single-volume file-based archives by @Copilot in adamhathcock/sharpcompress#1333 * Add skills by @adamhathcock in adamhathcock/sharpcompress#1332 * add AOT smoke and missing tests by @adamhathcock in adamhathcock/sharpcompress#1334 ## New Contributors * @dlemstra made their first contribution in adamhathcock/sharpcompress#1277 * @aromaa made their first contribution in adamhathcock/sharpcompress#1279 * @puk06 made their first contribution in adamhathcock/sharpcompress#1286 **Full Changelog**: adamhathcock/sharpcompress@0.48.1...0.49.0 ## 0.49.0-beta.140 ## What's Changed * Add Polysharp and adjustments that do not break legacy frameworks by @adamhathcock in adamhathcock/sharpcompress#1330 **Full Changelog**: adamhathcock/sharpcompress@0.49.0-beta.136...0.49.0-beta.140 ## 0.49.0-beta.136 ## What's Changed * Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs by @Copilot in adamhathcock/sharpcompress#1244 * Some API clean up from GPT 5.4 by @adamhathcock in adamhathcock/sharpcompress#1243 * Release to master by @adamhathcock in adamhathcock/sharpcompress#1267 * Fix three BLAKE2sp correctness bugs and eliminate allocations in hot path by @coderb in adamhathcock/sharpcompress#1266 * Corrected async examples. by @dlemstra in adamhathcock/sharpcompress#1277 * Fix setting invalid access time fails extraction by @aromaa in adamhathcock/sharpcompress#1279 * Fix incorrect code examples in docs for sync/async usage by @Copilot in adamhathcock/sharpcompress#1280 * Replace APPNOTE.TXT contents with reference link note by @puk06 in adamhathcock/sharpcompress#1286 * Release to Master by @adamhathcock in adamhathcock/sharpcompress#1274 * update docs for tar gap analysis and XZ usage by @adamhathcock in adamhathcock/sharpcompress#1288 * Add a PooledMemoryStream to avoid allocating by @adamhathcock in adamhathcock/sharpcompress#1275 * fix: Change LeaveStreamOpen default from true to false by @puk06 in adamhathcock/sharpcompress#1293 * Fix usage of ReaderOptions and pre-defined values by @adamhathcock in adamhathcock/sharpcompress#1295 * Enforce seekable, readable and writable on streams by @adamhathcock in adamhathcock/sharpcompress#1297 * Add ArchiveInformation record for consolidated archive detection and capability inspection by @Copilot in adamhathcock/sharpcompress#1299 * merge release to master by @adamhathcock in adamhathcock/sharpcompress#1314 * Some clean up and test clean up by @adamhathcock in adamhathcock/sharpcompress#1321 * Finish Write Async by @adamhathcock in adamhathcock/sharpcompress#1323 * More complete Tar implementation: USTAR, PAX, etc. by @adamhathcock in adamhathcock/sharpcompress#1289 ## New Contributors * @dlemstra made their first contribution in adamhathcock/sharpcompress#1277 * @aromaa made their first contribution in adamhathcock/sharpcompress#1279 * @puk06 made their first contribution in adamhathcock/sharpcompress#1286 **Full Changelog**: adamhathcock/sharpcompress@0.48.1...0.49.0-beta1 Commits viewable in [compare view](adamhathcock/sharpcompress@0.48.1...0.49.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Jun 1, 2026
tonycknight
pushed a commit
to tonycknight/discorss
that referenced
this pull request
Jun 1, 2026
Updated [SharpCompress](https://github.com/adamhathcock/sharpcompress) from 0.48.1 to 0.49.1. <details> <summary>Release notes</summary> _Sourced from [SharpCompress's releases](https://github.com/adamhathcock/sharpcompress/releases)._ ## 0.49.1 ## What's Changed * Close writable entry streams during async archive disposal by @Copilot in adamhathcock/sharpcompress#1338 * Restore `WriteToDirectoryAsync` progress callbacks for solid 7z archives by @Copilot in adamhathcock/sharpcompress#1340 * Try to fix global.json to avoid churn in locks by @adamhathcock in adamhathcock/sharpcompress#1341 * Fix tar archive enumeration after fully reading entry streams by @adamhathcock in adamhathcock/sharpcompress#1342 **Full Changelog**: adamhathcock/sharpcompress@0.49.0...0.49.1 ## 0.49.0 This should contain a lot of write async fixes and some breaking API changes that fix previous broke `net48` usage ## What's Changed * Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs by @Copilot in adamhathcock/sharpcompress#1244 * Some API clean up from GPT 5.4 by @adamhathcock in adamhathcock/sharpcompress#1243 * Release to master by @adamhathcock in adamhathcock/sharpcompress#1267 * Fix three BLAKE2sp correctness bugs and eliminate allocations in hot path by @coderb in adamhathcock/sharpcompress#1266 * Corrected async examples. by @dlemstra in adamhathcock/sharpcompress#1277 * Fix setting invalid access time fails extraction by @aromaa in adamhathcock/sharpcompress#1279 * Fix incorrect code examples in docs for sync/async usage by @Copilot in adamhathcock/sharpcompress#1280 * Replace APPNOTE.TXT contents with reference link note by @puk06 in adamhathcock/sharpcompress#1286 * Release to Master by @adamhathcock in adamhathcock/sharpcompress#1274 * update docs for tar gap analysis and XZ usage by @adamhathcock in adamhathcock/sharpcompress#1288 * Add a PooledMemoryStream to avoid allocating by @adamhathcock in adamhathcock/sharpcompress#1275 * fix: Change LeaveStreamOpen default from true to false by @puk06 in adamhathcock/sharpcompress#1293 * Fix usage of ReaderOptions and pre-defined values by @adamhathcock in adamhathcock/sharpcompress#1295 * Enforce seekable, readable and writable on streams by @adamhathcock in adamhathcock/sharpcompress#1297 * Add ArchiveInformation record for consolidated archive detection and capability inspection by @Copilot in adamhathcock/sharpcompress#1299 * merge release to master by @adamhathcock in adamhathcock/sharpcompress#1314 * Some clean up and test clean up by @adamhathcock in adamhathcock/sharpcompress#1321 * Finish Write Async by @adamhathcock in adamhathcock/sharpcompress#1323 * More complete Tar implementation: USTAR, PAX, etc. by @adamhathcock in adamhathcock/sharpcompress#1289 * Add Polysharp and adjustments that do not break legacy frameworks by @adamhathcock in adamhathcock/sharpcompress#1330 * Fix null `IVolume.FileName` for single-volume file-based archives by @Copilot in adamhathcock/sharpcompress#1333 * Add skills by @adamhathcock in adamhathcock/sharpcompress#1332 * add AOT smoke and missing tests by @adamhathcock in adamhathcock/sharpcompress#1334 ## New Contributors * @dlemstra made their first contribution in adamhathcock/sharpcompress#1277 * @aromaa made their first contribution in adamhathcock/sharpcompress#1279 * @puk06 made their first contribution in adamhathcock/sharpcompress#1286 **Full Changelog**: adamhathcock/sharpcompress@0.48.1...0.49.0 ## 0.49.0-beta.140 ## What's Changed * Add Polysharp and adjustments that do not break legacy frameworks by @adamhathcock in adamhathcock/sharpcompress#1330 **Full Changelog**: adamhathcock/sharpcompress@0.49.0-beta.136...0.49.0-beta.140 ## 0.49.0-beta.136 ## What's Changed * Rename IWriteableArchiveFactory.cs to IWritableArchiveFactory.cs by @Copilot in adamhathcock/sharpcompress#1244 * Some API clean up from GPT 5.4 by @adamhathcock in adamhathcock/sharpcompress#1243 * Release to master by @adamhathcock in adamhathcock/sharpcompress#1267 * Fix three BLAKE2sp correctness bugs and eliminate allocations in hot path by @coderb in adamhathcock/sharpcompress#1266 * Corrected async examples. by @dlemstra in adamhathcock/sharpcompress#1277 * Fix setting invalid access time fails extraction by @aromaa in adamhathcock/sharpcompress#1279 * Fix incorrect code examples in docs for sync/async usage by @Copilot in adamhathcock/sharpcompress#1280 * Replace APPNOTE.TXT contents with reference link note by @puk06 in adamhathcock/sharpcompress#1286 * Release to Master by @adamhathcock in adamhathcock/sharpcompress#1274 * update docs for tar gap analysis and XZ usage by @adamhathcock in adamhathcock/sharpcompress#1288 * Add a PooledMemoryStream to avoid allocating by @adamhathcock in adamhathcock/sharpcompress#1275 * fix: Change LeaveStreamOpen default from true to false by @puk06 in adamhathcock/sharpcompress#1293 * Fix usage of ReaderOptions and pre-defined values by @adamhathcock in adamhathcock/sharpcompress#1295 * Enforce seekable, readable and writable on streams by @adamhathcock in adamhathcock/sharpcompress#1297 * Add ArchiveInformation record for consolidated archive detection and capability inspection by @Copilot in adamhathcock/sharpcompress#1299 * merge release to master by @adamhathcock in adamhathcock/sharpcompress#1314 * Some clean up and test clean up by @adamhathcock in adamhathcock/sharpcompress#1321 * Finish Write Async by @adamhathcock in adamhathcock/sharpcompress#1323 * More complete Tar implementation: USTAR, PAX, etc. by @adamhathcock in adamhathcock/sharpcompress#1289 ## New Contributors * @dlemstra made their first contribution in adamhathcock/sharpcompress#1277 * @aromaa made their first contribution in adamhathcock/sharpcompress#1279 * @puk06 made their first contribution in adamhathcock/sharpcompress#1286 **Full Changelog**: adamhathcock/sharpcompress@0.48.1...0.49.0-beta1 Commits viewable in [compare view](adamhathcock/sharpcompress@0.48.1...0.49.1). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Jun 1, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request makes significant improvements to how
ReaderOptionsare handled throughout the codebase, aiming for more consistent and explicit defaults, especially when dealing with file paths and external streams. It also simplifies the symbolic link extraction logic and removes unnecessary default handlers. The changes should improve maintainability, reduce potential resource leaks, and clarify intent when opening archives or extracting files.Key changes include:
ReaderOptions Consistency and Defaults
Standardized the defaulting of
ReaderOptionsacross archive and reader factory methods: now,ReaderOptions.ForFilePathis used when opening archives from file paths, andReaderOptions.ForExternalStreamis used for streams, replacing previous ad-hoc or implicit defaults. This affects many archive and reader classes, including RAR, ZIP, ACE, ARC, ARJ, GZip, LZW, and TAR. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19]Updated constructors and internal logic to require non-null
ReaderOptions, removing unnecessary null checks and ensuring explicit intent when creating volumes. [1] [2] [3] [4]Resource Management Improvements
withexpressions for settingLeaveStreamOpenwith a newWithLeaveStreamOpenmethod, making the intent clearer and avoiding unnecessary object creation. [1] [2] [3]Symbolic Link Extraction Simplification
ExtractionMethodsby removing the default symbolic link handler and only invoking a handler if one is provided. This reduces unexpected side effects (like logging) and clarifies behavior. [1] [2] [3]Minor Codebase Cleanups
ExtractionOptions.These changes collectively improve the clarity, safety, and maintainability of archive handling and extraction throughout the codebase.