PackageTrack
Sign in Get early access

zip

Library to support the reading and writing of zip files.

8.6.0 246M downloads/mo #426 most downloaded on crates.io zip-rs/zip2

What this package is like to depend on

Last release 12 days ago

11 Aug 2026

Release timing varies

gaps range from 8 days to 3 months

Some releases are documented

notes for 33 of 100 stable releases

26 versions withdrawn

withdrawn after publishing

12 years old

131 releases · first in 2014

25 releases in the last 12 months

see the full history below

Release timeline

131 releases · Nov 2014 to Aug 2026
2015 2017 2019 2021 2023 2025
Release Pre-release Withdrawn

Releases

latest 60 of 131
  1. 9.0.0-pre3 11 Aug 2026 pre-release
    Release notes

    🚀 Features

    • add example for memory allocation (#881)
    • add method to README (#857)

    🐛 Bug Fixes

    • rewrite extra fields (#879)
    • zip64 creation of exactly 4GB without large file should crash (#839)
    • remove seek call and inline (#858)
    • change directory attributes detection and set external attributes (#851)
    • ignore zip info extra field on failure (#868)

    🚜 Refactor

    • change extra_data to extra_fields (#833)
    • change zip64 parsing (#834)

    ⚙️ Miscellaneous Tasks

    • tag PRs with size labels (#882)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • add example for memory allocation (#881)
    • add method to README (#857)

    <!-- 1 -->🐛 Bug Fixes

    • rewrite extra fields (#879)
    • zip64 creation of exactly 4GB without large file should crash (#839)
    • remove seek call and inline (#858)
    • change directory attributes detection and set external attributes (#851)
    • ignore zip info extra field on failure (#868)

    <!-- 2 -->🚜 Refactor

    • change extra_data to extra_fields (#833)
    • change zip64 parsing (#834)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • tag PRs with size labels (#882)
    Open source →
  2. 9.0.0-pre2 11 May 2026 pre-release
    Release notes

    🚜 Refactor

    • move types to zip format folder (#827)
    • split read.rs file to read folder (#832)
    • move tests outside of read.rs (#829)
    • add doc and remove useless variables (#828)
    • update some extra field (#821)
    • Allow zip file with data descriptor using ZipReadOptions (#823)
    • allow AES in zip file stream (#820)
    Open source →
    Release notes

    <!-- 2 -->🚜 Refactor

    • move types to zip format folder (#827)
    • split read.rs file to read folder (#832)
    • move tests outside of read.rs (#829)
    • add doc and remove useless variables (#828)
    • update some extra field (#821)
    • Allow zip file with data descriptor using ZipReadOptions (#823)
    • allow AES in zip file stream (#820)
    Open source →
  3. 9.0.0-pre1 06 May 2026 pre-release
    Release notes

    🚀 Features

    • Allow FileOptions to specify filename that may be non-UTF8 (#819)

    🐛 Bug Fixes

    • Zeroize derived_key when dropped, and suppress error details that may be sensitive (#803)

    🚜 Refactor

    • change vendor_version (#817)
    • rewrite aes settings (#815)
    • remove inner compression method from aes options (#814)
    • don't store converted filenames; convert on demand instead; and don't use Arc since it only deduplicates when copying to same path in another archive (#807)
    • Potential fixes for 5 code quality findings in src/aes.rs (#808)
    • [breaking] remove deprecated method *_zip64_comment methods (#812)
    • [breaking] Remove deprecated elements (#802)
    • store the file_name_raw only as key (BREAKING) (#789)
    • Remove fields from ZipFileData (#790)
    • Remove useless compression level (#791)
    • Add non-exhaustive to ExtraField enum (#793)
    • remove macro export (#792)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • Allow FileOptions to specify filename that may be non-UTF8 (#819)

    <!-- 1 -->🐛 Bug Fixes

    • Zeroize derived_key when dropped, and suppress error details that may be sensitive (#803)

    <!-- 2 -->🚜 Refactor

    • change vendor_version (#817)
    • rewrite aes settings (#815)
    • remove inner compression method from aes options (#814)
    • don't store converted filenames; convert on demand instead; and don't use Arc since it only deduplicates when copying to same path in another archive (#807)
    • Potential fixes for 5 code quality findings in src/aes.rs (#808)
    • [breaking] remove deprecated method *_zip64_comment methods (#812)
    • [breaking] Remove deprecated elements (#802)
    • store the file_name_raw only as key (BREAKING) (#789)
    • Remove fields from ZipFileData (#790)
    • Remove useless compression level (#791)
    • Add non-exhaustive to ExtraField enum (#793)
    • remove macro export (#792)
    Open source →
  4. 8.6.0 25 Apr 2026
    Release notes

    🚀 Features

    • add compression not supported as enum error (#774)

    🐛 Bug Fixes

    • allow for [u8] as filename (#775)

    🚜 Refactor

    • mark ZipFlags as non-exhaustive and add test for HasZipMetadata (#777)
    • use and simplify is_dir (#776)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • add compression not supported as enum error (#774)

    <!-- 1 -->🐛 Bug Fixes

    • allow for [u8] as filename (#775)

    <!-- 2 -->🚜 Refactor

    • mark ZipFlags as non-exhaustive and add test for HasZipMetadata (#777)
    • use and simplify is_dir (#776)
    Open source →
  5. 8.5.1 07 Apr 2026
    Release notes

    🚜 Refactor

    • change magic finder to stack buffer (#763)
    • simplify extra field parsing (#764)
    Open source →
    Release notes

    <!-- 2 -->🚜 Refactor

    • change magic finder to stack buffer (#763)
    • simplify extra field parsing (#764)
    Open source →
  6. 8.5.0 01 Apr 2026
    Release notes

    🐛 Bug Fixes

    • remove zip64 comment and add zip64 extensible data sector (#747)

    🚜 Refactor

    • remove useless magic in struct (#730)
    • change extra_field from Arc<Vec> to Arc<[u8]> (#741)

    ⚙️ Miscellaneous Tasks

    • cleanup README (#758)
    Open source →
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • remove zip64 comment and add zip64 extensible data sector (#747)

    <!-- 2 -->🚜 Refactor

    • remove useless magic in struct (#730)
    • change extra_field from Arc<Vec<u8>> to Arc<[u8]> (#741)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • cleanup README (#758)
    Open source →
  7. 8.4.0 23 Mar 2026
    Release notes

    🚀 Features

    • add a check for building benches (#748)

    🚜 Refactor

    • split part of read.rs for code readability (#744)
    • remove unused allow (#745)

    ⚡ Performance

    • skip BufReader for Stored files in make_reader (#739)

    ⚙️ Miscellaneous Tasks

    • move pull request template to correct folder (#749)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • add a check for building benches (#748)

    <!-- 2 -->🚜 Refactor

    • split part of read.rs for code readability (#744)
    • remove unused allow (#745)

    <!-- 4 -->⚡ Performance

    • skip BufReader for Stored files in make_reader (#739)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • move pull request template to correct folder (#749)
    Open source →
  8. 8.3.1 21 Mar 2026
    Release notes

    🚜 Refactor

    • use AexEncryption::new (#736)
    • update tests to add big endian miri check (#735)

    ⚙️ Miscellaneous Tasks

    • cleanup repository files (#743)
    Open source →
    Release notes

    <!-- 2 -->🚜 Refactor

    • use AexEncryption::new (#736)
    • update tests to add big endian miri check (#735)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • cleanup repository files (#743)
    Open source →
  9. 8.3.0 19 Mar 2026
    Release notes

    🚀 Features

    • add must_use (#727)
    • improve and fix extended timestamp extra field parsing (#713)
    • add crc32 ignore option (#710)
    • path related code in single file (#712)

    🐛 Bug Fixes

    • Malformed ZIP64 file output (#715) (#717)

    🚜 Refactor

    • refactor some imports (#734)
    • move code to distinct file (datetime, FixedSizeBlock) (#733)
    • move stream code to src/read/stream.rs (#731)
    • remove zip64 extra field update (#732)
    • improve part of the code with clippy help (#725)
    • simplify code for unicode extra field and improve error message (#724)
    • reorganize code (#714)

    Deps

    • avoid pulling in zeroize_derive (#720)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • add must_use (#727)
    • improve and fix extended timestamp extra field parsing (#713)
    • add crc32 ignore option (#710)
    • path related code in single file (#712)

    <!-- 1 -->🐛 Bug Fixes

    • Malformed ZIP64 file output (#715) (#717)

    <!-- 2 -->🚜 Refactor

    • refactor some imports (#734)
    • move code to distinct file (datetime, FixedSizeBlock) (#733)
    • move stream code to src/read/stream.rs (#731)
    • remove zip64 extra field update (#732)
    • improve part of the code with clippy help (#725)
    • simplify code for unicode extra field and improve error message (#724)
    • reorganize code (#714)

    Deps

    • avoid pulling in zeroize_derive (#720)
    Open source →
  10. 8.2.0 03 Mar 2026
    Release notes

    🚀 Features

    • allow custom salt (#680)
    • Support compressing bzip2 when feature bzip2-rs is enabled, since bzip2/bzip2-sys now supports it (#685)
    • enforce clippy in CI (#674)

    🐛 Bug Fixes

    • zip64 central header (issue 617) (#629)
    • allow aes password as bytes (#686)
    • handle extra field padding (#682)

    🚜 Refactor

    • Simplify 2 type conversions in src/write.rs (#687)

    ⚡ Performance

    • AI tweaks for string type conversions in src/types.rs (#670)
    Open source →
    Release notes

    <!-- 0 -->🚀 Features

    • allow custom salt (#680)
    • Support compressing bzip2 when feature bzip2-rs is enabled, since bzip2/bzip2-sys now supports it (#685)
    • enforce clippy in CI (#674)

    <!-- 1 -->🐛 Bug Fixes

    • zip64 central header (issue 617) (#629)
    • allow aes password as bytes (#686)
    • handle extra field padding (#682)

    <!-- 2 -->🚜 Refactor

    • Simplify 2 type conversions in src/write.rs (#687)

    <!-- 4 -->⚡ Performance

    • AI tweaks for string type conversions in src/types.rs (#670)
    Open source →
  11. 8.1.0 16 Feb 2026
    Release notes

    <!-- 0 -->🚀 Features

    • (writer) Allow getting underlying writer of ZipWriter (#464)
    • add system to FileOption, so byte-for-byte identical archives can be created across platforms (#660)

    <!-- 1 -->🐛 Bug Fixes

    • Bugs in extra-data length calculation in src/write.rs (#662)
    Open source →
  12. 8.0.0 15 Feb 2026
    Release notes

    <!-- 0 -->🚀 Features

    • document zip flags as enum (#639)
    • Migrate to Rust 2024 (#650)
    • [breaking] Remove deprecated methods of DateTime (#597)
    Open source →
  13. 7.4.0 06 Feb 2026 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Increase MSRV to 1.88 and update dependencies (#626)
    Open source →
  14. 7.3.0 04 Feb 2026 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • cleanup the benchmarks and Cargo.toml (#606)
    • Add support for per-file comments (#543)

    <!-- 1 -->🐛 Bug Fixes

    • Document feature unreserved and make the mapping of extra fields public (#616)
    • Return an error if abort_file() fails when exceeding non-large-file limit (#598)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Bump version to 7.3.0 (semver checks fail if it's still 7.3.0-pre1)
    Open source →
  15. 7.3.0-pre1 27 Jan 2026 pre-release
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Reject empty ZipCrypto password when encrypting files (can still be used when decrypting)
    • make zip crate safer and more readable (#536)

    <!-- 4 -->⚡ Performance

    • Optimizations for CP437 conversion (#559)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Trigger release 7.3.0-pre1 to reset cargo-semver-checks baseline
    Open source →
  16. 7.2.0 20 Jan 2026
    Release notes

    <!-- 0 -->🚀 Features

    • add read_zipfile_from_stream_with_compressed_size (#70)
    • Allow choosing bzip2 rust backend (#329)

    <!-- 1 -->🐛 Bug Fixes

    • Need to include zip64 extra field in central directory (fix #353) (#360)
    • Fails to extract file which might or might not be malformed (#376) (#426)
    • (aes) Allow AES encryption while streaming (#463)
    • Default "platform" field in zip files should be set to the local platform, rather than always "Unix" (#470) (#471)

    <!-- 2 -->🚜 Refactor

    • Define cfg_if! and cfg_if_expr! internal macros (#438)

    <!-- 4 -->⚡ Performance

    • Change an assert to debug_assert when encrypting/decrypting AES, and eliminate a fallible operation (#521)
    • eliminate a String clone per new file added to archive, and other related refactors (#522)
    Open source →
  17. 7.1.0 14 Jan 2026
    Release notes

    <!-- 0 -->🚀 Features

    • display the underlying error in Display impl for ZipError (#483)
    • Enable creation of ZipArchive without reparsing (#485)

    <!-- 1 -->🐛 Bug Fixes

    • Return InvalidPassword rather than panic when AES key is the wrong length (#457)
    • bench with auto zip64 comment (#505)
    • add condition for getrandom dependency (#504)
    • (zipcrypto) Support streaming ZipCrypto encryption, don't store entire file in memory (#462)

    <!-- 2 -->🚜 Refactor

    • Clean up imports and move types (#461)
    • Replace handwritten Ord and PartialOrd for DateTime (#484)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Lock lzma-rust2 to at least 0.15.5 (#491)
    Open source →
  18. 7.0.0 19 Dec 2025
    Release notes

    <!-- 9 -->⚠️ Breaking Changes

    • Removed the following features: getrandom, hmac, pbkdf2, sha1, zeroize.
    • Removed lzma-static and xz-static feature flags, which were deprecated synonyms of lzma and xz. (#405, #425)

    <!-- 0 -->🚀 Features

    • (SimpleFileOptions) const DEFAULT implementation (#474)
    • ZipWriter set_auto_large_file() method to enable large-file data descriptor when necessary (#468)

    <!-- 1 -->🐛 Bug Fixes

    • print previous error when failing to search another cde (#460)
    • cargo doc warnings (#472)
    • Write ZIP64 data descriptors when large_file option is true (#467)
    • Pin generic-array to an old version to work around https://github.com/RustCrypto/traits/issues/2036 until next RustCrypto & aes-crypto releases (#458)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Revert version bump so that release-plz will trigger
    • expose more flate2 feature flags (#476)
    • Next release will be 7.0.0
    • release v6.0.0 (#442)

    Deps

    • Bump lzma-rust2 to v0.15 (#465)
    Open source →
  19. 6.0.0 09 Oct 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add by_index_with_options(), which can be used to ignore encryption in a file's metadata (#439) and may be used for other file-specific overrides in the future.

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • [breaking] FileOptions::add_extra_data is now generic and accepts any AsRef<[u8]>. (#435)
    Open source →
  20. 5.1.1 11 Sep 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • panic when reading empty extended-timestamp field (#404) (#422)
    • Restore original file timestamp when unzipping with chrono (#46)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Configure Amazon Q rules (#421)
    Open source →
  21. 5.1.0 10 Sep 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add legacy shrink/reduce/implode compression (#303)
    Open source →
  22. 5.0.1 10 Sep 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • AES metadata was not copied correctly in raw copy methods, which could corrupt the copied file. (#417)
    Open source →
  23. 5.0.0 05 Sep 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Implement by_path*() methods on ZipArchive (#382)
    Open source →
  24. 4.6.1 03 Sep 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Fixes an issue introduced by the swap from lzma-rs to liblzma (#407)
    Open source →
  25. 4.6.0 31 Aug 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Allow to read zip files with unsupported extended timestamps (#400)

    <!-- 1 -->🐛 Bug Fixes

    • enable clamp_opt for ppmd and xz (#401)
    Open source →
  26. 4.5.0 21 Aug 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Allow reading ZIP files where the central directory comes before the files (#384) (#396)
    Open source →
  27. 4.4.0 21 Aug 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add lzma-static and xz-static features that enable liblzma/static (#393)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Move deprecated annotations to fix a Clippy warning (#391)
    Open source →
  28. 4.3.0 09 Jul 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add support for PPMd (#370)
    Open source →
  29. 4.2.0 23 Jun 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Write ZIP file to stream (#246)
    Open source →
  30. 4.1.0 15 Jun 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add has_overlapping_files method
    Open source →
  31. 4.0.0 21 May 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Allow extraction of Zip64 where "Version needed to extract" is higher than "Version made by" (#356)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Revert nt-time upgrade (would increase MSRV)
    • Revert constant_time_eq update (would increase MSRV)
    • Update fully-qualified names of liblzma imports
    Open source →
  32. 3.0.0 15 May 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • return correct offset in SeekableTake::seek (#342)
    • When only zopfli is available, decompression of deflate should not be possible (#348)
    • Specify flate2 dependency of the deflate-flate2 feature. (#345)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • drop unused crossbeam-utils dependency (#339)
    • remove deflate-flate2 dependency on specific backend
    • [breaking] Drop deprecated deflate-miniz feature flag (#351)
    Open source →
  33. 2.6.1 04 Apr 2025 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • avoid scanning through all local file headers while opening an archive (#281)
    Open source →
  34. 2.6.0 03 Apr 2025 withdrawn
    Release notes
    • No documented changes.
    Open source →
  35. 2.5.0 23 Mar 2025 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Add support for time::PrimitiveDateTime (#322)
    • Add jiff integration (#323)

    <!-- 1 -->🐛 Bug Fixes

    • improve error message for duplicated file (#277)
    Open source →
  36. 2.4.2 19 Mar 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • deep_copy_file produced a mangled file header on big-endian platforms (#309)
    Open source →
  37. 2.4.1 17 Mar 2025
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • type issue in test
    • double as_ref().canonicalize()?
    • CI failures
    • Create directory for extraction if necessary (#314)
    Open source →
  38. 2.4.0 17 Mar 2025
    Release notes

    <!-- 0 -->🚀 Features

    • ZipArchive::root_dir and ZipArchive::extract_unwrapped_root_dir (#304)

    <!-- 1 -->🐛 Bug Fixes

    • wasm build failure due to a missing use statement (#313)
    Open source →
  39. 2.3.0 16 Mar 2025
    Release notes

    <!-- 0 -->🚀 Features

    • Add support for NTFS extra field (#279)

    <!-- 1 -->🐛 Bug Fixes

    • (test) Conditionalize a zip64 doctest (#308)
    • fix failing tests, remove symlink loop check
    • Canonicalize output path to avoid false negatives
    • Symlink handling in stream extraction
    • Canonicalize output paths and symlink targets, and ensure they descend from the destination (CVE-2025-29787)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Fix clippy and cargo fmt warnings (#310)
    Open source →
  40. 2.2.3 26 Feb 2025 withdrawn
    Release notes

    <!-- 2 -->🚜 Refactor

    • Change the inner structure of DateTime (#267)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • cargo fix --edition
    Open source →
  41. 2.2.2 16 Dec 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • rewrite the EOCD/EOCD64 detection to fix extreme performance regression (#247)
    Open source →
  42. 2.2.1 21 Nov 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • remove executable bit (#238)
    • (lzma) fixed panic in case of invalid lzma stream (#259)
    • resolve new clippy warnings on nightly (#262)
    • resolve clippy warning in nightly (#252)

    <!-- 4 -->⚡ Performance

    • Faster cde rejection (#255)
    Open source →
  43. 2.2.0 20 Aug 2024 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Expose ZipArchive::central_directory_start (#232)
    Open source →
  44. 2.1.6 31 Jul 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • (#33) Rare combination of settings could lead to writing a corrupt archive with overlength extra data, and data_start locations when reading the archive back were also wrong (#221)

    <!-- 2 -->🚜 Refactor

    • Eliminate some magic numbers and unnecessary path prefixes (#225)
    Open source →
  45. 2.1.5 20 Jul 2024 withdrawn
    Release notes

    <!-- 2 -->🚜 Refactor

    • change invalid_state() return type to io::Result<T>
    Open source →
  46. 2.1.4 19 Jul 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • fix(#215): Upgrade to deflate64 0.1.9
    • Panic when reading a file truncated in the middle of an XZ block header
    • Some archives with over u16::MAX files were handled incorrectly or slowly (#189)
    • Check number of files when deciding whether a CDE is the real one
    • Could still select a fake CDE over a real one in some cases
    • May have to consider multiple CDEs before filtering for validity
    • We now keep searching for a real CDE header after read an invalid one from the file comment
    • Always search for data start when opening an archive for append, and reject the header if data appears to start after central directory
    • deep_copy_file no longer allows overwriting an existing file, to match the behavior of shallow_copy_file
    • File start position was wrong when extra data was present
    • Abort file if central extra data is too large
    • Overflow panic when central directory extra data is too large
    • ZIP64 header was being written twice when copying a file
    • ZIP64 header was being written to central header twice
    • Start position was incorrect when file had no extra data
    • Allow all reserved headers we can create
    • Fix a bug where alignment padding interacts with other extra-data fields
    • Fix bugs involving alignment padding and Unicode extra fields
    • Incorrect header when adding AES-encrypted files
    • Parse the extra field and reject it if invalid
    • Incorrect behavior following a rare combination of merge_archive, abort_file and deep_copy_file. As well, we now return an error when a file is being copied to itself.
    • path_to_string now properly handles the case of an empty path
    • Implement Debug for ZipWriter even when it's not implemented for the inner writer's type
    • Fix an issue where the central directory could be incorrectly detected
    • finish_into_readable() would corrupt the archive if the central directory had moved

    <!-- 2 -->🚜 Refactor

    • Verify with debug assertions that no FixedSizeBlock expects a multi-byte alignment (#198)
    • Use new do_or_abort_file method

    <!-- 4 -->⚡ Performance

    • Speed up CRC when encrypting small files
    • Limit the number of extra fields
    • Refactor extra-data validation
    • Store extra data in plain vectors until after validation
    • Only build one IndexMap after choosing among the possible valid headers
    • Simplify validation of empty extra-data fields
    • Validate automatic extra-data fields only once, even if several are present
    • Remove redundant validate_extra_data() call
    • Skip searching for the ZIP32 header if a valid ZIP64 header is present (#189)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Fix a bug introduced by c934c824
    • Fix a failing unit test
    • Fix build errors on older Rust versions
    • Fix build
    • Fix another fuzz failure
    • Switch to ok_or_abort_file, and inline when that fails borrow checker
    • Switch to ok_or_abort_file, and inline when that fails borrow checker
    • Fix a build error
    • Fix boxed_local warning (can borrow instead)
    • Partial debug
    • Fix more errors when parsing multiple extra fields
    • Fix an error when decoding AES header
    • Fix an error caused by not allowing 0xa11e field
    • Bug fix: crypto_header was being counted toward extra_data_end
    • Bug fix: revert a change where crypto_header was incorrectly treated as an extra field
    • Fix a bug where a modulo of 0 was used
    • Fix a bug when ZipCrypto, alignment and a custom header are used
    • Fix a bug when both ZipCrypto and alignment are used
    • Fix another bug: header_end vs extra_data_end
    • Fix use of a stale value in a debug_assert_eq!
    • Fix: may still get an incorrect size if opening an invalid file for append
    • Fix: may need the absolute start as tiebreaker to ensure deterministic behavior
    Open source →
  47. 2.1.3 05 Jun 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Some date/time filters were previously unreliable (i.e. later-pass filters had no earliest-pass or latest-fail, and vice-versa)
    • Decode Zip-Info UTF8 name and comment fields (#159)

    <!-- 2 -->🚜 Refactor

    • Return extended timestamp fields copied rather than borrowed (#183)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Fix a new Clippy warning
    • Fix a bug and inline deserialize for safety
    • Add check for wrong-length blocks, and incorporate fixed-size requirement into the trait name
    • Fix a fuzz failure by using checked_sub
    • Add feature gate for new unit test
    Open source →
  48. 2.1.2 02 Jun 2024 withdrawn

    Nothing published for this version

  49. 2.1.1 28 May 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Derive Debug for ZipWriter
    • lower default version to 4.5 and use the version-needed-to-extract where feasible.

    <!-- 2 -->🚜 Refactor

    • use a MIN_VERSION constant

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Bug fixes for debug implementation
    • Bug fixes for debug implementation
    • Update unit tests
    • Remove unused import
    Open source →
  50. 2.1.0 25 May 2024 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Support mutual conversion between DateTime and MS-DOS pair

    <!-- 1 -->🐛 Bug Fixes

    • version-needed-to-extract was incorrect in central header, and version-made-by could be lower than that (#100)
    • version-needed-to-extract was incorrect in central header, and version-made-by could be lower than that (#100)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Another tweak to ensure version_needed is applied
    • Tweaks to make version_needed and version_made_by work with recently-merged changes
    Open source →
  51. 2.0.0 24 May 2024 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Add fmt::Display for DateTime
    • Implement more traits for DateTime

    <!-- 2 -->🚜 Refactor

    • Change type of last_modified_time to Option<DateTime>
    • [breaking] Rename from_msdos to from_msdos_unchecked, make it unsafe, and add try_from_msdos (#145)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Continue to accept archives with invalid DateTime, and use now_utc() as default only when writing, not reading
    Open source →
  52. 1.3.1 22 May 2024 withdrawn
    Release notes

    <!-- 2 -->🚜 Refactor

    • Make deflate enable both default implementations
    • Merge the hidden deflate-flate2 flag into the public one
    • Rename _deflate-non-zopfli to _deflate-flate2
    • Reject encrypted and using_data_descriptor files slightly faster in read_zipfile_from_stream
    • Convert impl TryInto<NaiveDateTime> for DateTime to impl TryFrom<DateTime> for NaiveDateTime (#136)

    <!-- 4 -->⚡ Performance

    • Change default compression implementation to flate2/zlib-ng

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • chore(#132): Attribution for some copied test data
    • chore(#133): chmod -x src/result.rs
    Open source →
  53. 1.3.0 17 May 2024 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Add is_symlink method

    <!-- 1 -->🐛 Bug Fixes

    • Extract symlinks into symlinks on Unix and Windows, and fix a bug that affected making directories writable on MacOS

    <!-- 2 -->🚜 Refactor

    • Eliminate deprecation warning when --all-features implicitly enables the deprecated feature
    • Check if archive contains a symlink's target, without borrowing both at the same time
    • Eliminate a clone that's no longer necessary
    • is_dir only needs to look at the filename
    • Remove unnecessary #[cfg] attributes

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Fix borrow-of-moved-value
    • Box<str> doesn't directly convert to PathBuf, so convert back to String first
    • partial revert - only &str has chars(), but Box<str> should auto-deref
    • contains_key needs a Box<str>, so generify is_dir to accept one
    • Add missing ZipFileData::is_dir() method
    • Fix another Windows-specific error
    • More bug fixes for Windows-specific symlink code
    • More bug fixes for Windows-specific symlink code
    • Bug fix: variable name change
    • Bug fix: need both internal and output path to determine whether to symlink_dir
    • Another bug fix
    • Fix another error-type conversion error
    • Fix error-type conversion on Windows
    • Fix conditionally-unused import
    • Fix continued issues, and factor out the Vec<u8>-to-OsString conversion (cc: #125)
    • Fix CI failure involving conversion to OsString for symlinks (see my comments on #125)
    • Move path join into platform-independent code
    Open source →
  54. 1.2.3 11 May 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Remove a window when an extracted directory might be unexpectedly listable and/or cdable by non-owners
    • Extract directory contents on Unix even if the directory doesn't have write permission (https://github.com/zip-rs/zip-old/issues/423)

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • More conditionally-unused imports
    Open source →
  55. 1.2.2 09 May 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Failed to clear "writing_raw" before finishing a symlink, leading to dropped extra fields

    <!-- 4 -->⚡ Performance

    • Use boxed slice for archive comment, since it can't be concatenated
    • Optimize for the fact that false signatures can't overlap with real ones
    Open source →
  56. 1.2.1 07 May 2024 withdrawn
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Prevent panic when trying to read a file with an unsupported compression method
    • Prevent panic after reading an invalid LZMA file
    • Make Stored the default compression method if Deflated isn't available, so that zip files are readable by as much software as possible
    • version_needed was wrong when e.g. cfg(bzip2) but current file wasn't bzip2 (#100)
    • file paths shouldn't start with slashes (#102)

    <!-- 2 -->🚜 Refactor

    • Overhaul impl Arbitrary for FileOptions
    • Remove unused atomic module
    Open source →
  57. 1.2.0 06 May 2024 withdrawn
    Release notes

    <!-- 0 -->🚀 Features

    • Add method decompressed_size() so non-recursive ZIP bombs can be detected

    <!-- 2 -->🚜 Refactor

    • Make ZipWriter::finish() consume the ZipWriter

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Use panic! rather than abort to ensure the fuzz harness can process the failure
    • Update fuzz_write to use replace_with
    • Remove a drop that can no longer be explicit
    • Add #![allow(unexpected_cfgs)] in nightly
    Open source →
  58. 1.1.4 04 May 2024
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Build was failing with bzip2 enabled
    • use is_dir in more places where Windows paths might be handled incorrectly

    <!-- 4 -->⚡ Performance

    • Quick filter for paths that contain "/../" or "/./" or start with "./" or "../"
    • Fast handling for separator-free paths
    • Speed up logic if main separator isn't '/'
    • Drop normalized_components slightly sooner when not using it
    • Speed up path_to_string in cases where the path is already in the proper format

    <!-- 7 -->⚙️ Miscellaneous Tasks

    • Refactor: can short-circuit handling of paths that start with MAIN_SEPARATOR, no matter what MAIN_SEPARATOR is
    • Bug fix: non-canonical path detection when MAIN_SEPARATOR is not slash or occurs twice in a row
    • Bug fix: must recreate if . or .. is a path element
    • Bug fix

    <!-- 9 -->◀️ Revert

    • #58 (partial): bzip2-rs can't replace bzip2 because it's decompress-only
    Open source →
  59. 1.1.3 30 Apr 2024
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Rare bug where find_and_parse would give up prematurely on detecting a false end-of-CDR header
    Open source →
  60. 1.1.2 28 Apr 2024
    Release notes

    <!-- 1 -->🐛 Bug Fixes

    • Alignment was previously handled incorrectly (#33)

    <!-- 2 -->🚜 Refactor

    • deprecate deflate-miniz feature since it's now equivalent to deflate (#35)
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive