Skip to content

Add Async RAR and more - #996

Merged
adamhathcock merged 27 commits into
masterfrom
adam/async-rar-ai
Oct 29, 2025
Merged

Add Async RAR and more#996
adamhathcock merged 27 commits into
masterfrom
adam/async-rar-ai

Conversation

@adamhathcock

Copy link
Copy Markdown
Owner

Part of #992

Copilot AI review requested due to automatic review settings October 29, 2025 10:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@adamhathcock
adamhathcock requested a review from Copilot October 29, 2025 13:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 58 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/SharpCompress/Common/EntryStream.cs Outdated
{
return;
}
_isDisposed = true;

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate assignment of _isDisposed = true. The field is already set to true on line 103, making this second assignment redundant and potentially confusing.

Suggested change
_isDisposed = true;

Copilot uses AI. Check for mistakes.
}

var NewWindow = Fragmented ? null : new byte[WinSize];
var NewWindow = Fragmented ? null : ArrayPool<byte>.Shared.Rent((int)WinSize);

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ArrayPool.Shared.Rent() may return an array larger than requested. The code should track the actual WinSize separately and ensure only the required portion is used, or clear the entire rented array to avoid using uninitialized memory from the pool.

Suggested change
var NewWindow = Fragmented ? null : ArrayPool<byte>.Shared.Rent((int)WinSize);
var NewWindow = Fragmented ? null : ArrayPool<byte>.Shared.Rent((int)WinSize);
if (NewWindow != null)
{
// Clear only the portion of the array that will be used.
Array.Clear(NewWindow, 0, (int)WinSize);
}

Copilot uses AI. Check for mistakes.
Comment on lines +139 to +162
var array = System.Buffers.ArrayPool<byte>.Shared.Rent(buffer.Length);
try
{
var result = await base.ReadAsync(buffer, cancellationToken).ConfigureAwait(false);
if (result != 0)
{
currentCrc = RarCRC.CheckCrc(currentCrc, buffer.Span, 0, result);
}
else if (
!disableCRC
&& GetCrc() != BitConverter.ToUInt32(readStream.CurrentCrc, 0)
&& buffer.Length != 0
)
{
// NOTE: we use the last FileHeader in a multipart volume to check CRC
throw new InvalidFormatException("file crc mismatch");
}

return result;
}
finally
{
System.Buffers.ArrayPool<byte>.Shared.Return(array);
}

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rented array is not used. The code rents an array but then calls base.ReadAsync(buffer, ...) with the original buffer, making the array allocation wasteful. Either use the rented array for the read operation or remove the unnecessary allocation.

Suggested change
var array = System.Buffers.ArrayPool<byte>.Shared.Rent(buffer.Length);
try
{
var result = await base.ReadAsync(buffer, cancellationToken).ConfigureAwait(false);
if (result != 0)
{
currentCrc = RarCRC.CheckCrc(currentCrc, buffer.Span, 0, result);
}
else if (
!disableCRC
&& GetCrc() != BitConverter.ToUInt32(readStream.CurrentCrc, 0)
&& buffer.Length != 0
)
{
// NOTE: we use the last FileHeader in a multipart volume to check CRC
throw new InvalidFormatException("file crc mismatch");
}
return result;
}
finally
{
System.Buffers.ArrayPool<byte>.Shared.Return(array);
}
var result = await base.ReadAsync(buffer, cancellationToken).ConfigureAwait(false);
if (result != 0)
{
currentCrc = RarCRC.CheckCrc(currentCrc, buffer.Span, 0, result);
}
else if (
!disableCRC
&& GetCrc() != BitConverter.ToUInt32(readStream.CurrentCrc, 0)
&& buffer.Length != 0
)
{
// NOTE: we use the last FileHeader in a multipart volume to check CRC
throw new InvalidFormatException("file crc mismatch");
}
return result;

Copilot uses AI. Check for mistakes.
Comment thread tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs
Comment thread tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs
Comment on lines +693 to +698
if (Inp.InAddr > ReadTop - 25)
{
if (!await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;
}

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These 'if' statements can be combined.

Suggested change
if (Inp.InAddr > ReadTop - 25)
{
if (!await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;
}
if (Inp.InAddr > ReadTop - 25 && !await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;

Copilot uses AI. Check for mistakes.
Comment on lines +736 to +741
if (Inp.InAddr > ReadTop - 5)
{
if (!await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;
}

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These 'if' statements can be combined.

Suggested change
if (Inp.InAddr > ReadTop - 5)
{
if (!await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;
}
if (Inp.InAddr > ReadTop - 5 && !await UnpReadBufAsync(cancellationToken).ConfigureAwait(false))
{
return false;

Copilot uses AI. Check for mistakes.
var fltj = Filters[J];
if (
fltj.Type != FILTER_NONE
&& fltj.NextWindow == false

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The expression 'A == false' can be simplified to '!A'.

Suggested change
&& fltj.NextWindow == false
&& !fltj.NextWindow

Copilot uses AI. Check for mistakes.
if (!reader.Entry.IsDirectory)
{
Assert.Equal(CompressionType.Rar, reader.Entry.CompressionType);
var entryStream = await reader.OpenEntryStreamAsync();

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This variable is manually disposed in a finally block - consider a C# using statement as a preferable resource management technique.

Copilot uses AI. Check for mistakes.
Comment on lines +97 to +113
RarStream stream;
if (IsRarV3)
{
stream = new RarStream(
archive.UnpackV1.Value,
FileHeader,
new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive)
);
}
else
{
stream = new RarStream(
archive.UnpackV2017.Value,
FileHeader,
new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive)
);
}

Copilot AI Oct 29, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both branches of this 'if' statement write to the same variable - consider using '?' to express intent better.

Suggested change
RarStream stream;
if (IsRarV3)
{
stream = new RarStream(
archive.UnpackV1.Value,
FileHeader,
new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive)
);
}
else
{
stream = new RarStream(
archive.UnpackV2017.Value,
FileHeader,
new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive)
);
}
RarStream stream = new RarStream(
IsRarV3 ? archive.UnpackV1.Value : archive.UnpackV2017.Value,
FileHeader,
new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive)
);

Copilot uses AI. Check for mistakes.
@adamhathcock

Copy link
Copy Markdown
Owner Author

@copilot figure out why the windows tests fail

Copilot AI commented Oct 29, 2025

Copy link
Copy Markdown
Contributor

@adamhathcock I've opened a new pull request, #1000, to work on those changes. Once the pull request is ready, I'll request review from you.

This was referenced Jul 24, 2026
dekthaiinchina added a commit to dekthaiinchina/GoldbergGUI that referenced this pull request Jul 29, 2026
Updated [SharpCompress](https://github.com/adamhathcock/sharpcompress)
from 0.29.0 to 0.48.0.

<details>
<summary>Release notes</summary>

_Sourced from [SharpCompress's
releases](https://github.com/adamhathcock/sharpcompress/releases)._

## 0.48.0

Getting some fixes out to prep for bigger release - async writing might
still not work on non-async streams

## What's Changed
* Fix SevenZipArchive.IsSolidAsync() always returning false by @​Copilot
in adamhathcock/sharpcompress#1284
* Fix sync methods called in async RAR unpacker paths (Unpack29Async, U…
by @​adamhathcock in
adamhathcock/sharpcompress#1306
* adamhathcock/sharpcompress#1313


**Full Changelog**:
adamhathcock/sharpcompress@0.47.4...0.48.0

## 0.47.4

## What's Changed
* Dynamic ring buffer sizing for BZip2 and ZStandard on non-seekable
streams by @​Copilot in
adamhathcock/sharpcompress#1273
* Fix fuzzer-found decompression bomb and crash bugs by @​Copilot in
adamhathcock/sharpcompress#1272


**Full Changelog**:
adamhathcock/sharpcompress@0.47.3...0.47.4

## 0.47.3

## What's Changed
* Fix denial-of-service crashes in 8 decompressors on malformed input by
@​Copilot in adamhathcock/sharpcompress#1260


**Full Changelog**:
adamhathcock/sharpcompress@0.47.2...0.47.3

## 0.47.2

Making the default experience better with a larger buffer size.

## What's Changed
* Increase default RewindableBufferSize to 160KB to handle ZStandard tar
detection by @​Copilot in
adamhathcock/sharpcompress#1257


**Full Changelog**:
adamhathcock/sharpcompress@0.47.1...0.47.2

## 0.47.1

## What's Changed
* Proper test file clean up by @​adamhathcock in
adamhathcock/sharpcompress#1245
* Fix ZIP64 stream bounding and WinZip AES read-state corruption in ZIP
reader by @​adamhathcock in
adamhathcock/sharpcompress#1253


**Full Changelog**:
adamhathcock/sharpcompress@0.47.0...0.47.1

## 0.47.0

I think this is the last breaking change before I mark things as 1.0.
Looking for feedback

## What's Changed
* Fix CompressionType for WinZip AES encrypted ZIP entries by @​Copilot
in adamhathcock/sharpcompress#1213
* Add ability to have alternate compressions by @​adamhathcock in
adamhathcock/sharpcompress#1197
* Expose SharpCompressStream to allow ringbuffer to be used on
non-seekable streams by @​adamhathcock in
adamhathcock/sharpcompress#1220
* Tightening build errors by warnings as errors and making more build
time issues by @​adamhathcock in
adamhathcock/sharpcompress#1214
* Use more SharpCompress exceptions instead of generic ones by
@​adamhathcock in
adamhathcock/sharpcompress#1224
* Added Net7.0 / Net 6.0 / Net 5.0 and NetStandard2.1 by @​Nanook in
adamhathcock/sharpcompress#1227
* Writers should have async API by @​adamhathcock in
adamhathcock/sharpcompress#1211
* Add 7z archive writer with LZMA/LZMA2 compression by @​DanNsk in
adamhathcock/sharpcompress#1229
* Add async 7z writing by @​adamhathcock in
adamhathcock/sharpcompress#1235
* Bump actions/upload-artifact from 6 to 7 by @​dependabot[bot] in
adamhathcock/sharpcompress#1240
* Moving extraction options back by @​adamhathcock in
adamhathcock/sharpcompress#1239
* Fix DataErrorException when extracting LZMA-compressed zero-byte ZIP
entries by @​Copilot in
adamhathcock/sharpcompress#1237
* Update test dependencies by @​adamhathcock in
adamhathcock/sharpcompress#1242

## New Contributors
* @​DanNsk made their first contribution in
adamhathcock/sharpcompress#1229

**Full Changelog**:
adamhathcock/sharpcompress@0.46.4...0.47.0

## 0.46.4

## What's Changed
* Fix DataErrorException when extracting LZMA-compressed zero-byte ZIP
entries by @​adamhathcock in
adamhathcock/sharpcompress#1238


**Full Changelog**:
adamhathcock/sharpcompress@0.46.3...0.46.4

## 0.46.3

## What's Changed
* Fix SharpCompressStream.Create() buffer size misalignment for
non-seekable streams by @​Copilot in
adamhathcock/sharpcompress#1234
* Make SharpCompressStream public by @​adamhathcock in
adamhathcock/sharpcompress#1233


**Full Changelog**:
adamhathcock/sharpcompress@0.46.2...0.46.3

## 0.46.2

## What's Changed
* Downgrade dependencies for legacy frameworks by @​adamhathcock in
adamhathcock/sharpcompress#1226


**Full Changelog**:
adamhathcock/sharpcompress@0.46.1...0.46.2

## 0.46.1

## What's Changed
* Fix NullReferenceException when extracting 7z empty-stream entries by
@​Copilot in adamhathcock/sharpcompress#1219


**Full Changelog**:
adamhathcock/sharpcompress@0.46.0...0.46.1

## 0.46.0

Open/Create must be asynchronous now so they return ValueTasks when they
didn't before.

## What's Changed
* RAR5 (and maybe others) async methods are different by @​adamhathcock
in adamhathcock/sharpcompress#1203
* update benchmarks to include async paths by @​adamhathcock in
adamhathcock/sharpcompress#1202
* OpenAsyncReader, OpenAsyncArchive and others must be async for Tar
detection by @​adamhathcock in
adamhathcock/sharpcompress#1210


**Full Changelog**:
adamhathcock/sharpcompress@0.45.1...0.46.0

## 0.45.1

The big regression was fixed in 0.44.5 and 0.45.0 but only for sync.
This does it for async too.

## What's Changed
* fix async 7z seeking by @​adamhathcock in
adamhathcock/sharpcompress#1200


**Full Changelog**:
adamhathcock/sharpcompress@0.45.0...0.45.1

## 0.45.0

This release should be fully async as well as sync depending on the API
used. I've endeavoured to make sure no sync methods are used when going
via the async interface (and vice versa) but you never know.

Tests should cover things as well as the recent fixes (like the 7z
regression)

Options and the API have been revamped so expect API breakages. I think
it should be straight-forward but things won't compile.

There is a thing about Dispose vs async Disposing that may or may not be
fully covered 😬

Feedback is welcome as I think 1.0 is around the corner with the
introduction of Providers and other things. I wanted to get the async
revamp out generally first though.

## What's Changed
* Consolidate stream extension methods and simplify with framework
methods by @​Copilot in
adamhathcock/sharpcompress#1100
* Change ArchiveEncoding to interface. by @​adamhathcock in
adamhathcock/sharpcompress#1117
* Readd netstandard 2.0 by @​adamhathcock in
adamhathcock/sharpcompress#1122
* Add more documentation by @​adamhathcock in
adamhathcock/sharpcompress#1123
* Fix async test method naming inconsistency in ZipArchiveAsyncTests by
@​Copilot in adamhathcock/sharpcompress#1124
* [WIP] Update ZipReader and ZipWriter based on review feedback by
@​Copilot in adamhathcock/sharpcompress#1125
* Fix typo in TestBase.cs comment by @​Copilot in
adamhathcock/sharpcompress#1126
* Fix async test method naming in ZipArchiveAsyncTests by @​Copilot in
adamhathcock/sharpcompress#1127
* More async for ZipReader and ZipWriter by @​adamhathcock in
adamhathcock/sharpcompress#1121
* Add ArcReaderAsync tests by @​adamhathcock in
adamhathcock/sharpcompress#1036
* Change interfaces to be consistent for new Async paths (definitely
breaks things) by @​adamhathcock in
adamhathcock/sharpcompress#1128
* More test fixes and some perf changes by @​adamhathcock in
adamhathcock/sharpcompress#1131
* Consolidate NETFRAMEWORK/NETSTANDARD compile flags into LEGACY_DOTNET
by @​Copilot in adamhathcock/sharpcompress#1135
* Add async I/O support for SevenZip archive initialization by @​Copilot
in adamhathcock/sharpcompress#1133
* Remove redundant stream field in AsyncOnlyStream by @​Copilot in
adamhathcock/sharpcompress#1138
* Replace empty catch blocks with explicit exception handling in
TarArchive validation methods by @​Copilot in
adamhathcock/sharpcompress#1140
* Fix async test failures after xunit v3 upgrade by @​Copilot in
adamhathcock/sharpcompress#1137
* Upgrade xunit to v3 by @​adamhathcock in
adamhathcock/sharpcompress#1136
* Fix ReadFullyAsync with ArrayPool buffer in SevenZipArchive signature
check by @​Copilot in
adamhathcock/sharpcompress#1142
* [WIP] Address feedback on async creation cleanup changes by @​Copilot
in adamhathcock/sharpcompress#1141
* Add leaveOpen parameter to LZipStream and BZip2Stream by @​Copilot in
adamhathcock/sharpcompress#1145
* Fix EntryStream.Dispose() throwing NotSupportedException on
non-seekable streams by @​Copilot in
adamhathcock/sharpcompress#1151
* Fix dispose methods to always set _isDisposed and call base.Dispose()
when LeaveOpen is true by @​Copilot in
adamhathcock/sharpcompress#1152
* Fix silent iteration failure when input stream throws on Flush() by
@​Copilot in adamhathcock/sharpcompress#1156
* release to master by @​adamhathcock in
adamhathcock/sharpcompress#1162
* Clean up for async creation by @​adamhathcock in
adamhathcock/sharpcompress#1132
* Fix infinite loop in SourceStream.Seek for malformed archives by
@​Copilot in adamhathcock/sharpcompress#1178
* [WIP] WIP address feedback on AOT props and cleanup by @​Copilot in
adamhathcock/sharpcompress#1182
* Add AOT to props and clean up in release by @​adamhathcock in
adamhathcock/sharpcompress#1181
* merge release to master by @​adamhathcock in
adamhathcock/sharpcompress#1174
* release to master merge by @​adamhathcock in
adamhathcock/sharpcompress#1183
* Some clean up post-async merging by @​adamhathcock in
adamhathcock/sharpcompress#1184
* Clean up again by @​adamhathcock in
adamhathcock/sharpcompress#1187
* Add automated performance benchmarks with BenchmarkDotNet by @​Copilot
in adamhathcock/sharpcompress#1188
* Bump csharpier from 1.2.5 to 1.2.6 by @​dependabot[bot] in
adamhathcock/sharpcompress#1192
* Change and clean up options by @​adamhathcock in
adamhathcock/sharpcompress#1193
* Fix archive extraction to preserve directory structure when options is
null by @​Copilot in
adamhathcock/sharpcompress#1191
* Add LzwReader support for .Z compressed archives by @​Copilot in
adamhathcock/sharpcompress#1189
* add configure await by @​adamhathcock in
adamhathcock/sharpcompress#1195
 ... (truncated)

## 0.44.5

## What's Changed
* Add [Obsolete] attribute to ReaderOptions.DefaultBufferSize for
backward compatibility by @​Copilot in
adamhathcock/sharpcompress#1166
* Fix grammatical errors in ArcFactory comment documentation by
@​Copilot in adamhathcock/sharpcompress#1167
* (Release) Buffer size consolidation by @​adamhathcock in
adamhathcock/sharpcompress#1165
* Fix ZIP parsing failure on non-seekable streams with short reads by
@​Copilot in adamhathcock/sharpcompress#1169
* Fix SevenZipReader to maintain contiguous stream state for solid
archives by @​Copilot in
adamhathcock/sharpcompress#1172


**Full Changelog**:
adamhathcock/sharpcompress@0.44.4...0.44.5

## 0.44.4

## What's Changed
* Fix ArrayPool corruption from double-disposal in BufferedSubStream by
@​Copilot in adamhathcock/sharpcompress#1161
* add check to see if we need to seek before hand by @​adamhathcock in
adamhathcock/sharpcompress#1160


**Full Changelog**:
adamhathcock/sharpcompress@0.44.3...0.44.4

## 0.44.3

## What's Changed
* Merge pull request #​1156 from
adamhathcock/copilot/fix-sharpcompress-… by @​adamhathcock in
adamhathcock/sharpcompress#1157


**Full Changelog**:
adamhathcock/sharpcompress@0.44.2...0.44.3

## 0.44.2

## What's Changed
* Adam/1151 release cherry pick by @​adamhathcock in
adamhathcock/sharpcompress#1154 same as
adamhathcock/sharpcompress#1151


**Full Changelog**:
adamhathcock/sharpcompress@0.44.1...0.44.2

## 0.44.1

## What's Changed
* Merge pull request #​1145 from
adamhathcock/copilot/add-leaveopen-para… by @​adamhathcock in
adamhathcock/sharpcompress#1146


**Full Changelog**:
adamhathcock/sharpcompress@0.44.0...0.44.1

## 0.44.0

## What's Changed
* Configure nuget-release workflow to validate PRs without publishing by
@​Copilot in adamhathcock/sharpcompress#1099
* remove old release by @​adamhathcock in
adamhathcock/sharpcompress#1098
* Fix InvalidOperationException when RAR uncompressed size exceeds
header value by @​Copilot in
adamhathcock/sharpcompress#1104
* Bump csharpier from 1.2.4 to 1.2.5 by @​dependabot[bot] in
adamhathcock/sharpcompress#1108
* Add support for ACE archives by @​TwanVanDongen in
adamhathcock/sharpcompress#1102
* Formats.md updated to reflect additions of Ace, Arc and Arj by
@​TwanVanDongen in
adamhathcock/sharpcompress#1110
* Bump SimpleExec from 12.1.0 to 13.0.0 by @​dependabot[bot] in
adamhathcock/sharpcompress#1109
* Fix a usage of ReadOnly that use dispose in 7Zip by @​adamhathcock in
adamhathcock/sharpcompress#1113
* Fix async decompression of .7z files by implementing Memory<byte>
ReadAsync overload by @​Copilot in
adamhathcock/sharpcompress#1114
* Update docs by @​adamhathcock in
adamhathcock/sharpcompress#1120


**Full Changelog**:
adamhathcock/sharpcompress@0.43.0...0.44.0

## 0.43.0

Big changes:
Progress was redone to use IProgress.
ZstdSharp was moved into the project.
More groundwork for full async as well as more contributions and bug
fixes!

## What's Changed
* Drop .NET 6, .NET Standard 2.0, .NET 4.8.1, add .NET 10 support by
@​Copilot in adamhathcock/sharpcompress#1049
* Document ZipReader DirectoryEntry behavior and add verification test
by @​Copilot in adamhathcock/sharpcompress#1054
* Fix launch.json debug configurations to use net10.0 by @​Copilot in
adamhathcock/sharpcompress#1056
* add vscode config by @​adamhathcock in
adamhathcock/sharpcompress#1055
* Consolidate agent instructions into AGENTS.md by @​Copilot in
adamhathcock/sharpcompress#1058
* Agent instructions by @​adamhathcock in
adamhathcock/sharpcompress#1057
* Add archive-level password protection flags for 7z and rar by
@​HeroponRikiBestest in
adamhathcock/sharpcompress#1060
* Add alternative option for writing TAR archives with USTAR header
format by @​drone1400 in
adamhathcock/sharpcompress#1063
* Bump actions/upload-artifact from 5 to 6 by @​dependabot[bot] in
adamhathcock/sharpcompress#1071
* Bump csharpier from 1.2.1 to 1.2.3 by @​dependabot[bot] in
adamhathcock/sharpcompress#1072
* Move ZstdSharp into SharpCompress - Complete Integration by @​Copilot
in adamhathcock/sharpcompress#1052
* Unified progress reporting for compression and extraction operations
by @​Copilot in adamhathcock/sharpcompress#1044
* Fix async LZMA extraction bug for 7Zip archives by @​Copilot in
adamhathcock/sharpcompress#1081
* Standardize extraction API to WriteToDirectory with IProgress support
by @​Copilot in adamhathcock/sharpcompress#1080
* add extract all test by @​adamhathcock in
adamhathcock/sharpcompress#1076
* Bump JetBrains.Profiler.SelfApi from 2.5.14 to 2.5.15 by
@​dependabot[bot] in
adamhathcock/sharpcompress#1082
* Avoid NotSupportedException overhead in SharpCompressStream for
non-seekable streams by @​Copilot in
adamhathcock/sharpcompress#1084
* add some markdown files for planning by @​adamhathcock in
adamhathcock/sharpcompress#1085
* Remove ExtractAllEntries restriction for non-SOLID archives by
@​Copilot in adamhathcock/sharpcompress#1077
* Add back System.Buffers and System.Memory to central package
management by @​Copilot in
adamhathcock/sharpcompress#1093
* Update dependencies by @​adamhathcock in
adamhathcock/sharpcompress#1091
* Add GitHub Actions workflow for automated NuGet releases with
multi-platform builds by @​Copilot in
adamhathcock/sharpcompress#1095

## New Contributors
* @​HeroponRikiBestest made their first contribution in
adamhathcock/sharpcompress#1060
* @​drone1400 made their first contribution in
adamhathcock/sharpcompress#1063

**Full Changelog**:
adamhathcock/sharpcompress@0.42.0...0.43.0

## 0.42.1

## What's Changed
* Fix: Should not throw on ARJ detection by @​adamhathcock in
adamhathcock/sharpcompress#1067


**Full Changelog**:
adamhathcock/sharpcompress@0.42.0...0.42.1

## 0.42.0

This is one where I leaned heavily on AI for asynchronous implementation
and bug fixes. ARJ is provided by @​TwanVanDongen

## What's Changed
* Configure Dependabot for NuGet updates by @​adamhathcock in
adamhathcock/sharpcompress#950
* Bump actions/setup-dotnet from 4 to 5 by @​dependabot[bot] in
adamhathcock/sharpcompress#957
* Bump actions/checkout from 4 to 5 by @​dependabot[bot] in
adamhathcock/sharpcompress#952
* Only allow extract all on archives that are solid (some rars and 7zip
only) by @​adamhathcock in
adamhathcock/sharpcompress#964
* Remove a dynamically created stackalloc by @​adamhathcock in
adamhathcock/sharpcompress#966
* Bump AwesomeAssertions from 9.2.0 to 9.2.1 by @​dependabot[bot] in
adamhathcock/sharpcompress#961
* Reduce custom utilities for arrays/bytes by @​adamhathcock in
adamhathcock/sharpcompress#967
* rework dependencies to be correct for frameworks and update by
@​adamhathcock in adamhathcock/sharpcompress#968
* Removed wrappers that weren't needed (probably) by @​adamhathcock in
adamhathcock/sharpcompress#959
* Add JB perf testing project. by @​adamhathcock in
adamhathcock/sharpcompress#969
* Handle vendor-specific and malformed ZIP extra fields safely by
@​TwanVanDongen in
adamhathcock/sharpcompress#972
* chore: add Copilot coding agent config and CI workflow by
@​adamhathcock in adamhathcock/sharpcompress#974
* Add Copilot agent manifest and usage documentation by @​Copilot in
adamhathcock/sharpcompress#977
* Bump actions/upload-artifact from 4 to 5 by @​dependabot[bot] in
adamhathcock/sharpcompress#979
* Add comprehensive async/await support for Stream I/O operations by
@​Copilot in adamhathcock/sharpcompress#978
* adds more async tests and overloads to make things writable and async
by @​adamhathcock in
adamhathcock/sharpcompress#980
* Support CompressionType.None for uncompressed 7z files by @​Copilot in
adamhathcock/sharpcompress#986
* Configure Copilot coding agent instructions for SharpCompress by
@​Copilot in adamhathcock/sharpcompress#983
* Fix GZip extraction NotSupportedException for non-seekable streams by
@​Copilot in adamhathcock/sharpcompress#987
* Make all library exceptions inherit from SharpCompressException by
@​Copilot in adamhathcock/sharpcompress#990
* Add support for empty directory entries in archives by @​Copilot in
adamhathcock/sharpcompress#989
* Fix extraction failure on Windows due to case-sensitive path
comparison by @​Copilot in
adamhathcock/sharpcompress#988
* Add more Async tests and complete Zip tests by @​adamhathcock in
adamhathcock/sharpcompress#991
* make test linux only by @​adamhathcock in
adamhathcock/sharpcompress#993
* Fix Windows test failures due to ArrayPool buffer sizing by @​Copilot
in adamhathcock/sharpcompress#1000
* Add Async RAR and more by @​adamhathcock in
adamhathcock/sharpcompress#996
* async bzip2 and add by @​adamhathcock in
adamhathcock/sharpcompress#1002
* Fix ArchiveFactory.Open double-wrapping causing "Cannot determine
compressed stream type" on Linux by @​Copilot in
adamhathcock/sharpcompress#997
* Adding the ARJ (Archived by Robert Jung) format by @​TwanVanDongen in
adamhathcock/sharpcompress#994
* async lzma by @​adamhathcock in
adamhathcock/sharpcompress#1003
* Refactor SqueezeStream for CLS Compliance, Streaming, and Generic Test
Coverage by @​TwanVanDongen in
adamhathcock/sharpcompress#1005
* ARJ multi-part archive handling improved by @​TwanVanDongen in
adamhathcock/sharpcompress#1006
* ArjReader throws exception for password protected archives. by
@​TwanVanDongen in
adamhathcock/sharpcompress#1007
* Fix some IStreamStack and SharpCompressStream functions by @​Morilli
in adamhathcock/sharpcompress#1017
* ARJ's methods 1, 2 and 3 implemented for streaming by @​TwanVanDongen
in adamhathcock/sharpcompress#1019
* Async XZ by @​adamhathcock in
adamhathcock/sharpcompress#1004
* Fix memory exhaustion in TAR header auto-detection by @​Copilot in
adamhathcock/sharpcompress#1024
* Fix ArgumentNullException when disposing RarArchive with damaged
archives by @​Copilot in
adamhathcock/sharpcompress#1025
* Buffer boundary tests by @​TwanVanDongen in
adamhathcock/sharpcompress#1028
* Added buffer boundary tests. by @​TwanVanDongen in
adamhathcock/sharpcompress#1030
* Update csharpier and reformat by @​adamhathcock in
adamhathcock/sharpcompress#1035
* Bump actions/checkout from 5 to 6 by @​dependabot[bot] in
adamhathcock/sharpcompress#1031
* Bump AwesomeAssertions from 9.2.1 to 9.3.0 by @​dependabot[bot] in
adamhathcock/sharpcompress#1009
* Fix version mismatch between Local File Header and Central Directory
File Header in Zip archives by @​Copilot in
adamhathcock/sharpcompress#1023
* Fix DivideByZeroException when compressing empty files with BZip2 by
@​Copilot in adamhathcock/sharpcompress#1043

## New Contributors
 ... (truncated)

## 0.41.0

## What's Changed
* Fix volume FileName property potentially missing by @​Morilli in
adamhathcock/sharpcompress#921
* Fix 7-zip solid archive detection by @​Morilli in
adamhathcock/sharpcompress#924
* fix DotSettings options to conform to current code style and
editorconfig by @​Morilli in
adamhathcock/sharpcompress#928
* Fix zipentry comment implementation by @​Morilli in
adamhathcock/sharpcompress#929
* Added ArgumentException to Archive.Open implementations by
@​SimonCahill in adamhathcock/sharpcompress#931
* Implement `Attrib` for `ZipEntry` by @​Morilli in
adamhathcock/sharpcompress#933
* Added IStreamStack for debugging and configurable buffer management. …
by @​Nanook in adamhathcock/sharpcompress#930
* Zip ZStandard Writing with tests. Level support. by @​Nanook in
adamhathcock/sharpcompress#934
* Fix WinzipAesCryptoStream potentially not getting disposed by
@​Morilli in adamhathcock/sharpcompress#939
* Rewind buffer fix for directory extract. by @​Nanook in
adamhathcock/sharpcompress#935
* ZStandard tar support by @​mitchcapper in
adamhathcock/sharpcompress#943
* Extension hinting for ReaderFactory for better first try factory
success by @​mitchcapper in
adamhathcock/sharpcompress#945
* Update dependencies and csharpier by @​adamhathcock in
adamhathcock/sharpcompress#947
* update to 0.41.0 and change symbols type by @​adamhathcock in
adamhathcock/sharpcompress#948

## New Contributors
* @​SimonCahill made their first contribution in
adamhathcock/sharpcompress#931
* @​mitchcapper made their first contribution in
adamhathcock/sharpcompress#943

**Full Changelog**:
adamhathcock/sharpcompress@0.40.0...0.41.0

## 0.40.0

## What's Changed
* don't run net48 on non-windows by @​adamhathcock in
adamhathcock/sharpcompress#892
* Fix zip entry handling for entries with data descriptors by @​Morilli
in adamhathcock/sharpcompress#891
* Fix for Rar4 v20 compression. by @​Nanook in
adamhathcock/sharpcompress#893
* use File.OpenRead instead of File.Open in tests to allow concurrent
access by @​Morilli in
adamhathcock/sharpcompress#895
* Fix condition in rar v3 code by @​Morilli in
adamhathcock/sharpcompress#894
* Rar2 v20,v26 Multimedia (Audio) decoder fix by @​Nanook in
adamhathcock/sharpcompress#896
* Implement ReadByte for LzmaStream and LzOutWindow by @​Morilli in
adamhathcock/sharpcompress#898
* Implement ReadByte for BufferedSubStream by @​Morilli in
adamhathcock/sharpcompress#897
* make WriteToDirectory functions use ExtractAllEntries by @​Morilli in
adamhathcock/sharpcompress#900
* Handle XZ CheckType SHA-256 by @​ms264556 in
adamhathcock/sharpcompress#901
* Provide access to extended attributes for 7-zip by @​jdpurcell in
adamhathcock/sharpcompress#904
* Base Reader implementation of .ARC format by @​TwanVanDongen in
adamhathcock/sharpcompress#903
* ARC decompression methods 3 and 4 added by @​TwanVanDongen in
adamhathcock/sharpcompress#905
* Added ARC's crunched methods 5, 6, 7 & 8 by @​TwanVanDongen in
adamhathcock/sharpcompress#906
* Optimize LZ OutWindow.CopyBlock by @​jdpurcell in
adamhathcock/sharpcompress#907
* Optimize LZMA range decoder by @​jdpurcell in
adamhathcock/sharpcompress#910
* Update USAGE.md to remove problematic extraction example by @​Morilli
in adamhathcock/sharpcompress#909
* Optimize BufferedSubStream.ReadByte by @​jdpurcell in
adamhathcock/sharpcompress#912
* Fix regression with BufferedSubStream calculation by @​jdpurcell in
adamhathcock/sharpcompress#913
* Add SharpCompressException and use it or children in most places by
@​adamhathcock in adamhathcock/sharpcompress#834
* return Stream.Null when 7z entry has no stream by @​zgabi in
adamhathcock/sharpcompress#854
* Implement multipart rar handling for ExtractAllEntries by @​Morilli in
adamhathcock/sharpcompress#916
* [bzip2] fix possible out of bounds access due to unsanitized
nSelectors usage by @​Morilli in
adamhathcock/sharpcompress#918
* Update dependencies and csharpier by @​adamhathcock in
adamhathcock/sharpcompress#914

## New Contributors
* @​ms264556 made their first contribution in
adamhathcock/sharpcompress#901
* @​jdpurcell made their first contribution in
adamhathcock/sharpcompress#904
* @​zgabi made their first contribution in
adamhathcock/sharpcompress#854

**Full Changelog**:
adamhathcock/sharpcompress@0.39.0...0.40.0

## 0.39.0

## What's Changed
* Restore stream position in ArchiveFactory.IsArchive by @​Morilli in
adamhathcock/sharpcompress#876
* Fixed bug in zip time header flags by @​StarkDirewolf in
adamhathcock/sharpcompress#877
* Exports unclutter by @​YoshiRulz in
adamhathcock/sharpcompress#884
* Fix XZBlock padding calculation when its stream's starting position %
4 != 0 by @​Morilli in
adamhathcock/sharpcompress#878
* Improve rar memory usage by @​majorro in
adamhathcock/sharpcompress#887
* Make helper classes internal by @​majorro in
adamhathcock/sharpcompress#889
* Update to support net48, net481, netstandard2.0, net6 and net8 by
@​adamhathcock in adamhathcock/sharpcompress#888

## New Contributors
* @​StarkDirewolf made their first contribution in
adamhathcock/sharpcompress#877
* @​YoshiRulz made their first contribution in
adamhathcock/sharpcompress#884
* @​majorro made their first contribution in
adamhathcock/sharpcompress#887

**Full Changelog**:
adamhathcock/sharpcompress@0.38.0...0.39.0

## 0.38.0

## What's Changed
* Tar: Add processing for the LongLink header type by @​DannyBoyk in
adamhathcock/sharpcompress#847
* Fix gzip archives having a `Type` of `ArchiveType.Tar` instead of
`ArchiveType.Gzip` by @​Morilli in
adamhathcock/sharpcompress#848
* Fix for issue #​844 by @​Erior in
adamhathcock/sharpcompress#849
* Issue 842 by @​Erior in
adamhathcock/sharpcompress#850
* Fixed extractions after first ZIP64 entry is read from stream by
@​pathartl in adamhathcock/sharpcompress#852
* Check crc on tar header by @​Erior in
adamhathcock/sharpcompress#855
* Fix for missing empty directories when using ExtractToDirectory by
@​alexprabhat99 in
adamhathcock/sharpcompress#857
* Added Explode and (un)Reduce by @​gjefferyes in
adamhathcock/sharpcompress#853
* Fix #​858 - Replaces invalid filename characters by @​DineshSolanki in
adamhathcock/sharpcompress#859
* Added support for 7zip SFX archives by @​lostmsu in
adamhathcock/sharpcompress#860
* Update csproj to get green marks and update deps by @​adamhathcock in
adamhathcock/sharpcompress#864
* Added shrink, reduce and implode to FORMATS by @​TwanVanDongen in
adamhathcock/sharpcompress#866
* Fix small typo in USAGE.md by @​kikaragyozov in
adamhathcock/sharpcompress#868

## New Contributors
* @​Morilli made their first contribution in
adamhathcock/sharpcompress#848
* @​alexprabhat99 made their first contribution in
adamhathcock/sharpcompress#857
* @​gjefferyes made their first contribution in
adamhathcock/sharpcompress#853
* @​DineshSolanki made their first contribution in
adamhathcock/sharpcompress#859
* @​lostmsu made their first contribution in
adamhathcock/sharpcompress#860
* @​kikaragyozov made their first contribution in
adamhathcock/sharpcompress#868

**Full Changelog**:
adamhathcock/sharpcompress@0.37.2...0.38.0

## 0.37.2

**Full Changelog**:
adamhathcock/sharpcompress@0.37.1...0.37.2

## 0.37.1

## What's Changed
* Prevent infinite loop when reading corrupted archive by @​Blokyk in
adamhathcock/sharpcompress#835

## New Contributors
* @​Blokyk made their first contribution in
adamhathcock/sharpcompress#835

**Full Changelog**:
adamhathcock/sharpcompress@0.37.0...0.37.1

Updated ZstdSharp.Port to be native
Private assets for github link?

## 0.37.0

## What's Changed
* Zip: Use last modified time from basic header when validating zip
decryption by @​DannyBoyk in
adamhathcock/sharpcompress#805
* Support for decompressing Zip Shrink (Method:1) by @​TwanVanDongen in
adamhathcock/sharpcompress#807
* rar5 read FHEXTRA_REDIR and expose via RarEntry by @​coderb in
adamhathcock/sharpcompress#814
* rar5 improve memory usage by @​coderb in
adamhathcock/sharpcompress#816
* Code clean up by @​adamhathcock in
adamhathcock/sharpcompress#815
* #​809 Add README.md to csproj for NuGet by @​btomblinson in
adamhathcock/sharpcompress#817
* Support added for TAR LZW compression (Unix 'compress' resulting in .…
by @​TwanVanDongen in
adamhathcock/sharpcompress#819
* Add support for 7z ARM64 and RISCV filters by @​klimatr26 in
adamhathcock/sharpcompress#823
* Fix tar corruption when sizes mismatch by @​adamhathcock in
adamhathcock/sharpcompress#825
* Update README.md - Change API Docs to DNDocs by @​NeuroXiq in
adamhathcock/sharpcompress#829
* Remove ignored nulls by @​adamhathcock in
adamhathcock/sharpcompress#832
* Remove ~netstandard20~ just net7.0 by @​adamhathcock in
adamhathcock/sharpcompress#828

## New Contributors
* @​klimatr26 made their first contribution in
adamhathcock/sharpcompress#823
* @​NeuroXiq made their first contribution in
adamhathcock/sharpcompress#829

**Full Changelog**:
adamhathcock/sharpcompress@0.36.0...0.37.0

## 0.36.0

## What's Changed
* ZipWriter: Write correct EOCD record when more than 65,535 files by
@​DannyBoyk in adamhathcock/sharpcompress#792
* Feature/rar5 blake2 by @​Erior in
adamhathcock/sharpcompress#794
* Issue 771, remove throw on flush for readonly streams by @​Erior in
adamhathcock/sharpcompress#801
* Set Empty string for Rar5 password as default by @​Erior in
adamhathcock/sharpcompress#798
* Expose file attributes for rar by @​Erior in
adamhathcock/sharpcompress#800
* Fix reporting size / position by @​Erior in
adamhathcock/sharpcompress#799
* Add support for the UnixTimeExtraField in Zip files by @​DannyBoyk in
adamhathcock/sharpcompress#803


**Full Changelog**:
adamhathcock/sharpcompress@0.35.0...0.36.0

## 0.35.0

## What's Changed
* Dont crash on reading rar5 comment #​783 by @​Erior in
adamhathcock/sharpcompress#784
* Handle tar files generated with tar -H oldgnu that has large uid/gid
values by @​Erior in
adamhathcock/sharpcompress#785
* LZMA EOS marker detection by @​Erior in
adamhathcock/sharpcompress#786
* Bump actions/setup-dotnet from 3 to 4 by @​dependabot in
adamhathcock/sharpcompress#787
* RAR5 decryption support by @​Erior in
adamhathcock/sharpcompress#788
* Dotnet8 by @​adamhathcock in
adamhathcock/sharpcompress#789


**Full Changelog**:
adamhathcock/sharpcompress@0.34.2...0.35.0

## 0.34.2

## What's Changed
* Throw ReaderCancelledException on reader cancelled by @​pathartl in
adamhathcock/sharpcompress#778
* Update csharpier and fix formatting by @​adamhathcock in
adamhathcock/sharpcompress#781
* Revert change disabling strong name signing in 92df1ec by @​caesay in
adamhathcock/sharpcompress#780

## New Contributors
* @​pathartl made their first contribution in
adamhathcock/sharpcompress#778
* @​caesay made their first contribution in
adamhathcock/sharpcompress#780

**Full Changelog**:
adamhathcock/sharpcompress@0.34.1...0.34.2

## 0.34.1

## What's Changed
* Feature/761 by @​Erior in
adamhathcock/sharpcompress#768
* Update Zstd to 0.7.2 by @​Erior in
adamhathcock/sharpcompress#769


**Full Changelog**:
adamhathcock/sharpcompress@0.34.0...0.34.1

## 0.34.0

## What's Changed
* Check for broken file #​736 by @​Erior in
adamhathcock/sharpcompress#737
* Make ArchiveFactory.IsArchive(Stream, ...) public. Fix #​739 by
@​AlissaSabre in adamhathcock/sharpcompress#740
* Skip if we know the size, set blank password if not set for rar by
@​Erior in adamhathcock/sharpcompress#745
* Added simple example by @​rodesfl in
adamhathcock/sharpcompress#746
* Adds zstd (zstandard) support to zip/zipx and 7zip by @​Nanook in
adamhathcock/sharpcompress#723
* Add fast `ExtractToDirectoryAsync` extension method on `IArchive` by
@​FlsZen in adamhathcock/sharpcompress#750
* Bump actions/checkout from 3 to 4 by @​dependabot in
adamhathcock/sharpcompress#758
* Feature/748 by @​Erior in
adamhathcock/sharpcompress#759
* #​751 Add .tar.7z support by @​btomblinson in
adamhathcock/sharpcompress#763

## New Contributors
* @​AlissaSabre made their first contribution in
adamhathcock/sharpcompress#740
* @​rodesfl made their first contribution in
adamhathcock/sharpcompress#746
* @​FlsZen made their first contribution in
adamhathcock/sharpcompress#750
* @​btomblinson made their first contribution in
adamhathcock/sharpcompress#763

**Full Changelog**:
adamhathcock/sharpcompress@0.33.0...0.34.0

## 0.33.0

I think the API didn't break with `IArchiveFactory`

I've been out it for health reasons

## What's Changed
* SourceStream Position counting bug fix by @​Erior in
adamhathcock/sharpcompress#687
* Access level to LzmaStream Decoder by @​louis-michelbergeron in
adamhathcock/sharpcompress#690
* Introduced IArchiveFactory by @​vpenades in
adamhathcock/sharpcompress#671
* 64bit datadescriptors by @​Erior in
adamhathcock/sharpcompress#689
* Ignores UnicodePathExtra if forced encoding is specified by @​stakira
in adamhathcock/sharpcompress#696
* Added support for reading comment header for Rar v5 archives by
@​IngBertolini in adamhathcock/sharpcompress#697
* Bump actions/setup-dotnet from 2 to 3 by @​dependabot in
adamhathcock/sharpcompress#699
* Use PackageLicenseExpression instead of PackageLicenseFile by
@​andreas-eriksson in
adamhathcock/sharpcompress#706
* Generalized factories to readers and writers. by @​vpenades in
adamhathcock/sharpcompress#709
* Update to dotnet 7. Change net461 to net462. Remove netcoreapp3.1 by
@​adamhathcock in adamhathcock/sharpcompress#715
* replace Activator.CreateInstance to Func for avoiding error in
NativeAOT by @​itn3000 in
adamhathcock/sharpcompress#716
* Several improvements to the LZMA Compressor by @​ds5678 in
adamhathcock/sharpcompress#717
* Zip Multipart fix, XZ stream fix, XZ stream support added to zip/zipx
by @​Nanook in adamhathcock/sharpcompress#722
* Add support for 7ZipDelta decompress by @​Erior in
adamhathcock/sharpcompress#726
* Fixed support for RAR 1.5 (algo15) by @​TwanVanDongen in
adamhathcock/sharpcompress#729
* Implement Searching Data Descriptor stream issue/pull #​680 by @​Erior
in adamhathcock/sharpcompress#727
* Increase character value to support rar file with more than 100 parts…
by @​Erior in adamhathcock/sharpcompress#733
* Remove check for minimal distance and add test case generated by 7z as
compatibility check by @​Erior in
adamhathcock/sharpcompress#735

## New Contributors
* @​vpenades made their first contribution in
adamhathcock/sharpcompress#671
* @​stakira made their first contribution in
adamhathcock/sharpcompress#696
* @​IngBertolini made their first contribution in
adamhathcock/sharpcompress#697
* @​TwanVanDongen made their first contribution in
adamhathcock/sharpcompress#729

**Full Changelog**:
adamhathcock/sharpcompress@0.32.2...0.33.0

## 0.32.2

## What's Changed
* ReadOnlySubStream overrides and adds logic #​636 by @​Erior in
adamhathcock/sharpcompress#675
* Fix LZMADecoder Code function by @​louis-michelbergeron in
adamhathcock/sharpcompress#679
* RarArchive has Min/MaxVersion. RarEntry has Volumne Indexes. GZ CRC
fix. by @​Nanook in
adamhathcock/sharpcompress#682
* Include license in nuget package by @​daverant in
adamhathcock/sharpcompress#684
* WriteAll: use delegate instead of Expression by @​OwnageIsMagic in
adamhathcock/sharpcompress#683
* Mitigation of problems by @​Erior in
adamhathcock/sharpcompress#686

## New Contributors
* @​daverant made their first contribution in
adamhathcock/sharpcompress#684
* @​OwnageIsMagic made their first contribution in
adamhathcock/sharpcompress#683

**Full Changelog**:
adamhathcock/sharpcompress@0.32.1...0.32.2

## 0.32.1

## What's Changed
* Feature/malformed zip file generated by @​Erior in
adamhathcock/sharpcompress#673
* Suppress nested NonDisposingStream by @​MartinDemberger in
adamhathcock/sharpcompress#674
* Corrected skip-marker on skip of uncompressed ZIP file with missing
size informations. by @​MartinDemberger in
adamhathcock/sharpcompress#672

## New Contributors
* @​MartinDemberger made their first contribution in
adamhathcock/sharpcompress#674

**Full Changelog**:
adamhathcock/sharpcompress@0.32...0.32.1

## 0.32

## What's Changed
* Add a net 6 target and make trimmable by @​ds5678 in
adamhathcock/sharpcompress#652
* Tar file mode, user and group by @​Ryhon0 in
adamhathcock/sharpcompress#655
* Added Split archive support with unit tests. … by @​Nanook in
adamhathcock/sharpcompress#658
* Dependency updates and start of enforcing some C# standards by
@​adamhathcock in adamhathcock/sharpcompress#659
* Bump actions/upload-artifact from 2 to 3 by @​dependabot in
adamhathcock/sharpcompress#660
* Added multipart Zip support (z01...). Added IEntry.IsSolid by @​Nanook
in adamhathcock/sharpcompress#661
* Properly integrated zip multivolume and general split support. by
@​Nanook in adamhathcock/sharpcompress#662
* Align behavour of 7Zip exception with encrypted filenames arc with rar
when no password provided by @​Nanook in
adamhathcock/sharpcompress#663
* XZ decoding BCJ filters support by @​louis-michelbergeron in
adamhathcock/sharpcompress#669

## New Contributors
* @​ds5678 made their first contribution in
adamhathcock/sharpcompress#652
* @​Ryhon0 made their first contribution in
adamhathcock/sharpcompress#655
* @​dependabot made their first contribution in
adamhathcock/sharpcompress#660
* @​louis-michelbergeron made their first contribution in
adamhathcock/sharpcompress#669

**Full Changelog**:
adamhathcock/sharpcompress@0.31...0.32

## 0.31

## What's Changed
* Rar2 fix with new unit tests that fail on previous build. by @​Nanook
in adamhathcock/sharpcompress#638
* Update Adler32 from ImageSharp v2.1.0 by @​loop-evgeny in
adamhathcock/sharpcompress#651

## New Contributors
* @​loop-evgeny made their first contribution in
adamhathcock/sharpcompress#651

**Full Changelog**:
adamhathcock/sharpcompress@0.30.1...0.31

## 0.30.1

## What's Changed
* Add test and probable fix for Issue 617 by @​adamhathcock in
adamhathcock/sharpcompress#624

**Full Changelog**:
adamhathcock/sharpcompress@0.30.0...0.30.1

## 0.30

I accepted a PR to add `net461` back as there's still multi-targetting
issues. I guess .NET Standard 2.0 never really worked out.

Included that and a fix: 
- Add net461 target to clean up issues with system.* nuget dependencies
adamhathcock/sharpcompress#621
- Fix for chunked read for ZLibBaseStream
adamhathcock/sharpcompress#616

https://www.nuget.org/packages/SharpCompress/0.30.0

Commits viewable in [compare
view](adamhathcock/sharpcompress@0.29.0...0.48.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=SharpCompress&package-manager=nuget&previous-version=0.29.0&new-version=0.48.0)](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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/dekthaiinchina/GoldbergGUI/network/alerts).

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants