All Versions
Latest Version
Avg Release Cycle
142 days
Latest Release
140 days ago

Changelog History
Page 1

  • v1.3.1

    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.


    • Correct FileVersion and AssemblyVersion
    • πŸ”’ Security fixes for ZipFile and Zip*Streams
    • πŸ‘Œ Improved CRC32 performance
    • πŸ‘ BZip2 compression support for Zip files

    πŸ”‹ Features

    • πŸ‘ [#355] Wire up BZip2 compression support for Zip files by Richard Webb

    πŸ›  Fixes

  • v1.3.0

    October 07, 2020


    • πŸ›  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 to true to allow the extraction to traverse outside of the target directory.
    • TarArchive constructors now includes an Encoding parameter. 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
    • πŸ”’ [#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 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 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

    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 GZipInputStream no 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 Exception types now implements ISerializable (#369)
      • This allows them to be transmitted when using WCF

    πŸ”„ Changes:

    • ZipFile constructor now has a leaveOpen parameter (#302)
    • FastZip.ExtractZip now sets isStreamOwner in the ZipFile constructor (#311)
    • ZipFile now always tries to find the Zip64 central directory and prefers it if exists (#363)
      • This will allow for better compatibility with other archivers.
  • v1.1.0

    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.Codepage or ZipStrings.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

    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
    • πŸš€ 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.
    • πŸ‘€ FastZip now prevents traversal outside of the target directory when extracting unless this is explicitly allowed. See Restrict path traversal on FastZip extraction
    • The ICSharpCode.SharpZipLib.Checksums namespace has been renamed ICSharpCode.SharpZipLib.Checksum.

    πŸš€ For more detailed notes, see Pre-release version notes.

  • v1.0.0-rc2

    July 21, 2018

    πŸ”„ Changes

    • 0️⃣ ZipEntry.IsUnicodeText now defaults to true
    • 0️⃣ ZipConstants.DefaultCodePage is now called ZipStrings.CodePage (but backwards-compatible wrappers exists on ZipConstants)
      πŸ‘€ For more information, see ZipStrings and Unicode

    πŸ›  Fixes

  • v0.86.0.518

    August 15, 2016

    πŸ”„ Changes for 0.86.0

    • πŸ‘ Multi-member gzip files are now supported. Contributed by Geoff Hart.
    • Zero byte files caused ZipOutputStream to create invalid zipfiles. Contributed by Mark Ritchie.
    • ⚑️ ZipFile.CommitUpdate failed on ODT (Open Document) files when updating in memory. Contributed by Dricks.
    • ⚑️ Exceptions occurring within ZipFile.CommitUpdate were being silently discarded.
    • 🚚 In FastZip, the NameFilter erroneously removed all escapes from regex. Contributed by John Lemberger.
      Note: This is a breaking change - if you had detoured this filter bug via doubled-up backslashes,
      please halve them - for example change @"\myextract.txt$" to @"\myextract.txt$", or
      πŸ”„ change "\myextract.txt$" to "\myextract.txt$".
    • πŸ‘ AES Encryption and Decryption is now supported.
    • TarArchive now has IsStreamOwner property, for use with MemoryStream.
    • βœ‚ Removed exception "Extra data contains Zip64 information but version 2.0 is not high enough" due to rogue zip creators.
    • FastZip.ExtractZip now accepts an Input Stream.
    • Zip input and output streams can now specify buffer sizes.
    • πŸ‘» Solved "NTFS Extra data invalid" exception when reading zip files with zero-length NTFS ExtraData entry.
    • πŸ›  Fixed "Size mismatch" exceptions reading zips created by SharpZipLib with an explicit entry CRC and Size.
  • v0.85.5.452

    August 15, 2016

    πŸ”„ Changes for 0.85.5

    • πŸ›  Fix for unreferenced ZipFile causing read failure after garbage collection.
    • πŸ›  Fix to ZipInputStream.CloseEntry were skipping could fail for long values.
    • πŸ›  Potential race condition flaw in FastZip event handling fixed up.
    • πŸ›  Wrong exceptions being thrown and wrong arguments for some exceptions fixed.
    • TarArchive handling tweaked so creation of archive with Tar streams is handled cleanly
    • βœ… ZipFile Testing now handles directories better.
    • DeflatorEngine altered so TotalIn is long.
    • πŸ‘ ZipInputStream handles initial reading for entries with no data better.
    • ⚑️ Updates to unit tests
    • BZip2Constants made internal. A breaking change in theory but no-one should be using these values.
    • BZip2 QSort3 optimised somewhat by changing StackElement from class to struct as per lytico suggestion.
    • Name filters allow quoting of ';' characters using ;
    • πŸ›  Fix GZIP flag checking bug
    • ArgumentNull instead of NullReference in tar header now thrown.
    • 🏁 WindowsNameTransform now used in fastzip
    • Disposed checking in ZipFile beefed up.
    • πŸ› Bug in entry handling for stored entries and sizing fixed.
    • Zip entries with zero bytes written optimised.
    • TarBuffer.IsEofBlock made obsolete use static TarBuffer.IsEndOfArchiveBlock instead.
    • πŸ‘» GZip Finish and Close no longer add extra footers. Close can be called twice without exception. Writes after finish/close now fail.
    • Fastzip now throws exceptions if they are 'handled' via delegates.
  • v0.85.4.369

    August 15, 2016

    πŸ”„ Changes for 0.85.4

    • πŸ›  Fix for encryption going awol in Zip archives sometimes
    • ⚑️ Help files updated and now generated by Sandcastle Help File Builder