Changelog History
Page 1
-
v1.4.2 Changes
January 29, 2023🆕 New patch release that further fixes issues with the changes in v1.4.0.
🛠 Fixes:
🐛 [#813]
zipfully implement async deflate by nils måsén🐛 [#811]
tarenable async overrides on net6 by nils måsén✂ 🐛 [#809]
zipremove leftover console logging by nils måsén
Other changes (not related to library code):
➕ 🔧 [#817] add issue form templates by nils måsén
⚡️ 🔧 [#812] update deps for net7 support by nils måsén
-
v1.4.1 Changes
November 05, 2022🆕 New patch release that mainly fixes issues with the changes in v1.4.0.
ZIP String Encoding:
🚀 Further iteration on the StringCodec API, since the released version was confusing to use and in some cases could not be used without causing deprecation warnings.
- 🐛 #778
zipcleanup/fix of StringCodec by nils måsén
TAR:
Two issues that could cause deadlocks was found in v1.4.0, one due to a typo in the async implementation and one due to a buffer not being cleared.
🔀 🐛 #791
taruse sync codepath on sync methods by Lars Hanisch🐛 #789
tarclear rest of buffer when eof is reached by nils måsén
Async:
🔧 General async speed improvement, since we now correctly opt out of requiring to continue in the same context (
ConfigureAwait(false)).- 🔧 🐛 #787 use ConfigureAwait(false) on every await by Lars Hanisch
Other changes (not related to library code):
- 🛠 📚 #775 fix circular refs and target fw by nils måsén
- 🐛 #778
-
v1.4.0 Changes
September 18, 2022🆕 New minor release focusing on
asyncand supporting newer frameworks.👍 Note that this version drops support for the EOL .NET 4.5 Framework, but adding explicit support for .NET 6.
🔋 Features:
➕ ✨ [#672]
gzipadd GzipOutputStream async support by nils måsén✅ ✨ [#689]
zipmake it possible to skip header tests by nils måsén✨ [#683]
zipenable ZipOuputStream to write precompressed files by Temtaime👍 ✨ [#592]
zipbetter string encoding handling by nils måsén👍 ✨ [#574]
zipZipOutputStream async support by nils måsén
🛠 Fixes:
⚡️ 🐛 [#642]
ziphandle iterating updated entries in ZipInputStream by nils måsén🐛 [#766] replace uses of obsolete method
RNGCryptoServiceProviderby Yihezkel Schoenbrun🐛 [#675]
tarread full extended headers by nils måsén🐛 [#765]
zipexplicitly specify hash method for Rfc2898DeriveBytes by Yihezkel Schoenbrun👀 🐛 [#754]
zipskip reading position for non-seekable async streams by nils måsén🐛 [#750]
zip0 in zip64 local sizes using descriptors by nils måsén✅ 🐛 [#736]
zipdont fail test on 0 sizes and descriptor by nils måsén⬆️ 🐛 [#720]
samplesbump lib versions to v1.3.3 by nils måsén👉 🐛 [#669]
zipuse ushort for ITaggedData.TagID by Richard Webb🐛 [#666]
tarpermit slashed output dir by nils måsén
Other changes (not related to library code):
🏗 ⚙️ [#727] use server 2019 for win builds by nils måsén
✂ 🔧 [#670] remove the test bootstrapper by Richard Webb
🔨 🚨 [#671] repeatability and refactoring by nils måsén
🛠 📚 [#668]
zipfix slash names in CleanName comment by ueli-werner➕ 🔧 [#665] add release notes tooling by nils måsén
-
v1.3.3 Changes
September 19, 2021🛠 Another minor release, containing security fixes and smaller bugfixes.
🛠 Fixes:
- 🐛 specialized tar extract traversal by nils måsén
- 🚚 🐛 [#635]
bzip2use explicit feature defs for vectorized memory move by Jackson Wood - 🐛 [#645]
tarcreate translated files in temp by nils måsén
Smaller changes:
- 🚚 🔨 [#604] Move the Password property from DeflaterOutputStream into ZipOutputStream by Richard Webb
- 🔨 [#625] Make BZip2Constants static instead of sealed by Richard Webb
- 🔨 [#626] make a couple of private functions static by Richard Webb
Other changes (not related to library code):
- 📚 [#648]
zipfix ZipStrings typo by Friedrich von Never - ✅ 🚨 add tests for tar path traversal by nils måsén
- ⚙️ add codeql analysis by nils måsén
- ✅ 🚨 [#636] Fix unstable tests and switch to dotcover by nils måsén
- 🚨 [#634] add an async version of the WriteZipOutputStream benchmark by Richard Webb
- 🏁 ⚙️ [#628] Limit code coverage to windows CI by nils måsén
- ✅ 🚨 [#627] fix the expected/actual value ordering in unit tests by Richard Webb
-
v1.3.2 Changes
May 08, 2021🛠 Another minor release, containing security fixes and smaller bugfixes.
➕ Additionally, this version will have an additional target framework, .NET Standard 2.1, which will see some speed improvements when
👉 used in newer versions of .NET (Core), mainly in Bzip2.🔋 Features
- [#611] Bzip input stream simple vectorization by Konrad Kruczyński
- 👍 [#351] Add support for Filename field in GZip by nils måsén
🛠 Smaller fixes and optimizations
- [#579] Implement very simple ReadAsync in ZipAESStream by Richard Webb
- 🚚 [#587] Remove supported method checks from ZipEntry.CompressionMethod setter by Richard Webb
- [#593] Simplify DropPathRoot and fix out of bounds issue by nils måsén
- [#575] Replace uses of new T[0] with Array.Empty<T> by Richard Webb
- ⏪ [#583] Restore entry times on FastZip extract by nils måsén
- 👻 [#517] Throw exception on Store+Descriptor entries by nils måsén
- ✏️ [#578] Fix typos in the StreamDecodingException doc comments by Richard Webb
- 👻 [#577] Throw ZipException in ZipAESStream instead of generic Exception by Richard Webb
- 🏗 [#510] Build the test bootstrapper app as netcoreapp3.1 instead of netcoreapp2.0 by Richard Webb
- [#546] Make pure private functions static by Richard Webb
- [#554] Skip CRC calculation for AES zip entries by nils måsén
- ⚠ [#605] Suppress CA1707 warnings in the Constants classes by Richard Webb
- [#549] Add .NET Standard 2.1 target framework by Cédric Luthi
Other changes (not related to library code)
- 📦 [#586] Convert VB sample projects to PackageReference format by Richard Webb
- 📦 [#533] Convert the C# sample projects to PackageReference format by Richard Webb
- ✅ [#457] add basic async unit tests for the inflator/deflator streams by Richard Webb
- ✅ [#588] Add a simple async read test for ZipFile by Richard Webb
- 🏗 [#621] unify PR/push CI build actions by nils måsén
- 🏗 [#616] Change the build status badge to reference github actions by Richard Webb
- ✅ [#603] pass CreateZip tests that are within time tolerance by nils måsén
- ⚡️ [#602] Update test/coverage packages and push to codecov by nils måsén
- ✅ [#601] pass tests that are within time tolerance by nils måsén
- 🏁 [#599] Use net46 as CI target framework for windows tests by nils måsén
- 🚚 [#594] Remove the local nuget.config files from the test projects by Richard Webb
- 🚚 [#553] Remove broken codacy integration by nils måsén
- 📚 [#542] Build and publish documentation on release by nils måsén
-
v1.3.1 Changes
November 21, 2020🚀 Minor release, mainly to address the incorrect file version of v1.3.0, but also contains some security fixes and performance improvements.
Highlights
- Correct
FileVersionandAssemblyVersion - 🔒 Security fixes for
ZipFileandZip*Streams - 👌 Improved CRC32 performance
- 👍 BZip2 compression support for Zip files
🔋 Features
- 👍 [#355] Wire up BZip2 compression support for Zip files by Richard Webb
🛠 Fixes
- ⚡️ [#475] Fix updating zips with descriptor entries by Richard Webb & nils måsén
- 🐎 [#516] Improve CRC32 performance by Nelson Gomez
- [#538] Use RNGCryptoServiceProvider for crypto headers by nils måsén
- [#539] Use securely generated random temporary file names by nils måsén
- [#509] Make PutNextEntry throw if the entry is AES and no password has been set by Richard Webb
Other changes (not related to library code)
- 🚀 [#541] Update csproj for new release by nils måsén
- [#530] Fix Codacy Workflows by nils måsén
- 🚀 [#529] Add release workflow by nils måsén
- 🚚 [#511] Move the 7zip helper functions into their own class for easier reuse by Richard Webb
- 🚀 [#525] Update the sample projects to use the v1.3 release by Richard Webb
- 📦 [#522] Use PackageIcon instead of PackageIconUrl in csproj by nils måsén
- [#523] Fix Codacy workflows by nils måsén
- Correct
-
v1.3.0 Changes
October 07, 2020Highlights
- 🛠 AES encryption fixes and support in FastZip
- 👍 File name encoding support for Tar
- 👌 Improved Unix timestamp support
- 👍 Better handling of entry file names
- 🛠 Fix errors with entries using Stored compression method
🔄 Changes
TarArchive.ExtractContents()now needs another parameter set totrueto allow the extraction to traverse outside of the target directory.TarArchiveconstructors now includes anEncodingparameter. Omitting it will discard any non-ASCII bytes in file names.
🛠 Fixes
- ✅ [#503] Consider AES overhead when testing encrypted folder entries by Richard Webb
- [#452] Ensure crypto streams are disposed in ZipFile.GetOutputStream by Richard Webb
- 👍 [#333] Handle unsupported compression methods in ZipInputStream better by Richard Webb
- ⚡️ [#402] Only convert entry.Name once when accessing updateIndex by Vladyslav Taranov
- ✅ [#353] Fix ZipFile.TestLocalHeader CompressionMethod resolving for AES entries by Richard Webb
- [#460] Account for AES overhead in compressed entry size by Richard Webb
- [#422] Change ZipOutputStream.PutNextEntry to explicity validate the requested compression method by Richard Webb
- 👀 [#467] Allow seeking a PartialInputStream to the very end by Víctor M. González
- [#440] Use CompressionMethodForHeader for header entries by Richard Webb
- 👍 [#420] Throw NotSupportedException in ZipFile.Add when trying to add AES entry by Richard Webb
- [#421] Have ZipFile.Add validate compression compability internally by Richard Webb
- 👍 [#387] Better handle baseStreams closing themselves unexpectedly by Richard Webb
- 🛠 [#408] When searching for the Zip64 end of central directory locator, pay attention to its fixed size by Richard Webb
- [#406] Skip forced Deflate flush when using Stored compression by nils måsén
- [#362] Don't call CleanName from the ZipEntry constructor by Richard Webb
- [#465] Use correct count in ZipAESStream.ReadBufferedData by Víctor M. González
- [#390] Ensure GZipOutputStream headers are written before flush by Richard Webb
- [#498] Use string.Trim to trim strings by Richard Webb
- [#432] Throw ArgumentNullException in BZip2 by Richard Webb
- [#519] Restrict path traversal on TarArchive extraction by nils måsén
🔋 Features
- [#201] Raise ProcessDirectory event for FastZip extract by Stevie-O
- 👍 [#380] Add support for AES encryption in FastZip.CreateZip by Richard Webb
- [#497] Transform new entry names using an INameTranform in ZipOutputStream by Richard Webb
- [#482] Add variants of FastZip.CreateZip taking IScanFilter instead of strings by Richard Webb
- [#455] Add FastZip.CreateZip with a leaveOpen parameter by Richard Webb
- ⏪ [#433] Restore directory timestamps when extracting with FastZip by Richard Webb
- [#472] Allow ZipFile to accept empty strings as passwords when decrypting AES entries by Richard Webb
- [#364] Add nameEncoding parameter to Tar entries by Yusuke Ito
- 👍 [#463] Improve support for Unix timestamps in ZIP archives by Bastian Eicher
Other changes (not related to library code)
- 🔒 [#346] Add a Security Policy by nils måsén
- ⚡️ [#451] Minimize and update sample app package dependencies by Richard Webb
- ✅ [#505] Expect ZipEntry clean name test to be positive by nils måsén
- ⚠ [#504] Fix warning about missing doc comment in FastZip.CreateZip by Richard Webb
- ⚡️ [#374] Update Docs generation by nils måsén
- 🚚 [#431] Remove the link to the sharpdevelop forum from readme.md by Richard Webb
- 🚀 [#425] Update Microsoft.SourceLink.GitHub to the 1.0.0 release version by Richard Webb
- ⚠ [#483] Suppress CA1707 warnings from LzwConstants by Richard Webb
- [#458] Dispose of entry streams returned by ZipFile.GetInputStream by Richard Webb
- [#488] Add [MemoryDiagnoser] to the zip input/output stream benchmark classes by Richard Webb
- 🚚 [#489] Remove duplicate ICSharpCode.SharpZipLib.snk by Richard Webb
- ✅ [#494] Use the Range to test different compression levels in InflaterDeflaterTestSuite by Richard Webb
- ✅ [#502] Fix tests and ZipEntry DateTime Kind by nils måsén
- 🚚 [#476] Remove duplicated words in comments by Richard Webb
- [#477] Fix spelling errors in comments by Richard Webb
- ⚡️ [#479] Streamline and update VB sample projects by Richard Webb
- [#445] Make InvalidHeaderException serializable by Richard Webb
- ⚠ [#450] Fix CA1200 code analyzer warnings by Richard Webb
- ✅ [#435] Add unit test for ZipFile.Add(string fileName, string entryName) by Richard Webb
- ✅ [#448] Fix unit test assert argument order by Richard Webb
- 👻 [#461] Fix Exception doc comments by Richard Webb
- 🏗 [#453] Fix the 7-zip interop tests in the .Net 4.6 test build by Richard Webb
- ✅ [#466] Improve the ZipFileStoreAesPartialRead test to test multiple block sizes by Richard Webb
- ✅ [#468] Add test for adding empty folders to archives using FastZip by Richard Webb
- [#473] Add a Nuget badge to readme.md by Richard Webb
- ✅ [#469] Add test for writing using a zero byte buffer by Richard Webb
- 📚 [#389] Simplify Documentation generation by Robin Sue
- ✅ [#437] Add a ZipCrypto/7zip interop test to the ZipEncryptionHandling tests by Richard Webb
- ⚡️ [#441] Update the benchmark project to BenchmarkDotNet 0.12.1 by Richard Webb
- ✅ [#444] Multi-target unit tests for .NET Core 2.0 and .NET FW 4.6 by Richard Webb
-
v1.2.0 Changes
August 10, 2019🛠 Fixes:
- ZipEntry name mismatch when attempting to delete a directory entry (#295)
- ⏪ Revert ArraySegment simplification to speed up CRC32 calculation (#301)
- 👍 Allow AES Zip to better handle reading partial stream data (#308)
- Always write Zip64 extra size fields when size is -1 (too big for non-Zip64) (#314)
- 👻 Throw exception when attempting to read a zero code length symbol (#316)
- This should fix most issues where reading Zip-files get stuck in an infinite loop
- 👀
ZipOutputStream.CloseEntry()now works for Stored AES encrypted entries (#323) - Empty string is now treated as no RootPath in TarArchive (#336)
- ZipAESStream now handle reads of less data than the AES block size (#331)
- Flushing a GZipOutputStream now attempts to deflate all input data before writing it to the underlying stream (#225)
- StrongEncryption flag is no longer (incorrectly) set for WinzipAES encrypted entries (#329)
- Attempting to read 0 bytes from a
GZipInputStreamno longer causes it to hang indefinitely (#372)
🔋 Features:
- 🐧 HostSystem can now be set for Zipfiles, allowing creation of files targeting Linux filesystems (#325)
- 👻 The SharpZip custom
Exceptiontypes now implementsISerializable(#369)- This allows them to be transmitted when using WCF
🔄 Changes:
-
v1.1.0 Changes
December 22, 2018🔄 Changes:
- AES256 decryption now works as intended.
- ✅ AES encryption should also be working but the code is not sufficiently tested and may be buggy.
- 📦 Sourcelink debugging is now enabled and the symbols are included in the nuget package.
- Overriding the codepage used for the file names and comments is now possible when extracting archives by setting
ZipStrings.CodepageorZipStrings.UseUnicode. - 🐎 Calculating the Adler checksum is now skipped for Zip and Gzip since it's not actually used for the formats. This should greatly improve performance.
-
v1.0.0 Changes
August 19, 2018🚚 With the move to .NET Standard and the re-licensing to MIT, effort has been put into creating a stable v1.0 API for SharpZipLib.
Major changes since 0.86:
- The targeted frameworks are now:
- .NET Standard 2.0
netstandard2(Core 2.0+, FW 4.6.1+, Mono 5.2+, UWP 16299) - .NET Framework 4.5
net45(Mono 4, Dependency-free on Windows 8+/2012+)
👀 See .NET implementation support
- .NET Standard 2.0
- 🚀 The library is now released under the MIT license. See Issue #103.
- 0️⃣ The legacy Stream API has been replaced by the IDisposable pattern. (Stream.Close() calls Dispose(true) by default, so it should be backwards compatible)
👀 See Stream.Close Method. - 0️⃣ Encoding now works more predictably, defaulting to UTF-8 encoding and correctly specifying it as such.
👀 See ZipStrings and Unicode. - 👀
FastZipnow prevents traversal outside of the target directory when extracting unless this is explicitly allowed. See Restrict path traversal on FastZip extraction - The
ICSharpCode.SharpZipLib.Checksumsnamespace has been renamedICSharpCode.SharpZipLib.Checksum.
🚀 For more detailed notes, see Pre-release version notes.
- The targeted frameworks are now: