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
Releases
latest 60 of 131-
9.0.0-pre311 Aug 2026 pre-releaseRelease notes
Open source →🚀 Features
🐛 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
⚙️ Miscellaneous Tasks
- tag PRs with size labels (#882)
Release notes
Open source →<!-- 0 -->🚀 Features
<!-- 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
<!-- 7 -->⚙️ Miscellaneous Tasks
- tag PRs with size labels (#882)
-
9.0.0-pre211 May 2026 pre-release -
9.0.0-pre106 May 2026 pre-releaseRelease notes
Open source →🚀 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)
Release notes
Open source →<!-- 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)
-
8.6.025 Apr 2026Release notes
Open source →🚀 Features
- add
compression not supportedas enum error (#774)
🐛 Bug Fixes
- allow for
[u8]as filename (#775)
🚜 Refactor
Release notes
Open source →<!-- 0 -->🚀 Features
- add
compression not supportedas enum error (#774)
<!-- 1 -->🐛 Bug Fixes
- allow for
[u8]as filename (#775)
<!-- 2 -->🚜 Refactor
- add
-
8.5.107 Apr 2026Release notes
Open source →Release notes
Open source → -
8.5.001 Apr 2026Release notes
Open source →🐛 Bug Fixes
- remove
zip64 commentand addzip64 extensible data sector(#747)
🚜 Refactor
⚙️ Miscellaneous Tasks
- cleanup README (#758)
Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- remove
zip64 commentand addzip64 extensible data sector(#747)
<!-- 2 -->🚜 Refactor
<!-- 7 -->⚙️ Miscellaneous Tasks
- cleanup README (#758)
- remove
-
8.4.023 Mar 2026Release notes
Open source →🚀 Features
- add a check for building benches (#748)
🚜 Refactor
⚡ Performance
- skip BufReader for Stored files in make_reader (#739)
⚙️ Miscellaneous Tasks
- move pull request template to correct folder (#749)
Release notes
Open source →<!-- 0 -->🚀 Features
- add a check for building benches (#748)
<!-- 2 -->🚜 Refactor
<!-- 4 -->⚡ Performance
- skip BufReader for Stored files in make_reader (#739)
<!-- 7 -->⚙️ Miscellaneous Tasks
- move pull request template to correct folder (#749)
-
8.3.121 Mar 2026Release notes
Open source → -
8.3.019 Mar 2026Release notes
Open source →🚀 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
🚜 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)
Release notes
Open source →<!-- 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
<!-- 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)
-
8.2.003 Mar 2026Release notes
Open source →🚀 Features
- allow custom salt (#680)
- Support compressing bzip2 when feature
bzip2-rsis enabled, sincebzip2/bzip2-sysnow 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)
Release notes
Open source →<!-- 0 -->🚀 Features
- allow custom salt (#680)
- Support compressing bzip2 when feature
bzip2-rsis enabled, sincebzip2/bzip2-sysnow 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)
-
8.1.016 Feb 2026Release notes
Open source →<!-- 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)
-
8.0.015 Feb 2026 -
7.4.006 Feb 2026 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
- Increase MSRV to 1.88 and update dependencies (#626)
-
7.3.004 Feb 2026 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
<!-- 1 -->🐛 Bug Fixes
- Document feature
unreservedand 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)
- Document feature
-
7.3.0-pre127 Jan 2026 pre-releaseRelease notes
Open source →<!-- 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
-
7.2.020 Jan 2026Release notes
Open source →<!-- 0 -->🚀 Features
<!-- 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
-
7.1.014 Jan 2026Release notes
Open source →<!-- 0 -->🚀 Features
- display the underlying error in Display impl for
ZipError(#483) - Enable creation of
ZipArchivewithout 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
getrandomdependency (#504) - (zipcrypto) Support streaming ZipCrypto encryption, don't store entire file in memory (#462)
<!-- 2 -->🚜 Refactor
<!-- 7 -->⚙️ Miscellaneous Tasks
- Lock
lzma-rust2to at least 0.15.5 (#491)
- display the underlying error in Display impl for
-
7.0.019 Dec 2025Release notes
Open source →<!-- 9 -->⚠️ Breaking Changes
- Removed the following features:
getrandom,hmac,pbkdf2,sha1,zeroize. - Removed
lzma-staticandxz-staticfeature flags, which were deprecated synonyms oflzmaandxz. (#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)
- Removed the following features:
-
6.0.009 Oct 2025Release notes
Open source →<!-- 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_datais now generic and accepts anyAsRef<[u8]>. (#435)
-
5.1.111 Sep 2025Release notes
Open source →<!-- 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)
-
5.1.010 Sep 2025Release notes
Open source →<!-- 0 -->🚀 Features
- Add legacy shrink/reduce/implode compression (#303)
-
5.0.110 Sep 2025Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- AES metadata was not copied correctly in raw copy methods, which could corrupt the copied file. (#417)
-
5.0.005 Sep 2025 -
4.6.103 Sep 2025Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- Fixes an issue introduced by the swap from
lzma-rstoliblzma(#407)
- Fixes an issue introduced by the swap from
-
4.6.031 Aug 2025Release notes
Open source →<!-- 0 -->🚀 Features
- Allow to read zip files with unsupported extended timestamps (#400)
<!-- 1 -->🐛 Bug Fixes
- enable clamp_opt for ppmd and xz (#401)
-
4.5.021 Aug 2025 -
4.4.021 Aug 2025Release notes
Open source →<!-- 0 -->🚀 Features
- Add
lzma-staticandxz-staticfeatures that enableliblzma/static(#393)
<!-- 7 -->⚙️ Miscellaneous Tasks
- Move deprecated annotations to fix a Clippy warning (#391)
- Add
-
4.3.009 Jul 2025 -
4.2.023 Jun 2025 -
4.1.015 Jun 2025 -
4.0.021 May 2025Release notes
Open source →<!-- 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
-
3.0.015 May 2025Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- return correct offset in SeekableTake::seek (#342)
- When only zopfli is available, decompression of deflate should not be possible (#348)
- Specify
flate2dependency of thedeflate-flate2feature. (#345)
<!-- 7 -->⚙️ Miscellaneous Tasks
-
2.6.104 Apr 2025 withdrawnRelease notes
Open source →<!-- 1 -->🐛 Bug Fixes
- avoid scanning through all local file headers while opening an archive (#281)
-
2.6.003 Apr 2025 withdrawn -
2.5.023 Mar 2025 withdrawnRelease notes
Open source → -
2.4.219 Mar 2025Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
deep_copy_fileproduced a mangled file header on big-endian platforms (#309)
-
2.4.117 Mar 2025Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- type issue in test
- double as_ref().canonicalize()?
- CI failures
- Create directory for extraction if necessary (#314)
-
2.4.017 Mar 2025Release notes
Open source →<!-- 0 -->🚀 Features
ZipArchive::root_dirandZipArchive::extract_unwrapped_root_dir(#304)
<!-- 1 -->🐛 Bug Fixes
- wasm build failure due to a missing use statement (#313)
-
2.3.016 Mar 2025Release notes
Open source →<!-- 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)
-
2.2.326 Feb 2025 withdrawnRelease notes
Open source →<!-- 2 -->🚜 Refactor
- Change the inner structure of
DateTime(#267)
<!-- 7 -->⚙️ Miscellaneous Tasks
- cargo fix --edition
- Change the inner structure of
-
2.2.216 Dec 2024 withdrawnRelease notes
Open source →<!-- 1 -->🐛 Bug Fixes
- rewrite the EOCD/EOCD64 detection to fix extreme performance regression (#247)
-
2.2.121 Nov 2024 withdrawn -
2.2.020 Aug 2024 withdrawn -
2.1.631 Jul 2024 withdrawnRelease notes
Open source →<!-- 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)
-
2.1.520 Jul 2024 withdrawnRelease notes
Open source →<!-- 2 -->🚜 Refactor
- change invalid_state() return type to io::Result<T>
-
2.1.419 Jul 2024 withdrawnRelease notes
Open source →<!-- 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_fileno longer allows overwriting an existing file, to match the behavior ofshallow_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_fileanddeep_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
DebugforZipWritereven 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
-
2.1.305 Jun 2024 withdrawnRelease notes
Open source →<!-- 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
deserializefor 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
-
2.1.202 Jun 2024 withdrawnNothing published for this version
-
2.1.128 May 2024 withdrawnRelease notes
Open source →<!-- 1 -->🐛 Bug Fixes
- Derive
DebugforZipWriter - 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
- Derive
-
2.1.025 May 2024 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
- Support mutual conversion between
DateTimeand 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_neededis applied - Tweaks to make
version_neededandversion_made_bywork with recently-merged changes
- Support mutual conversion between
-
2.0.024 May 2024 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
- Add
fmt::DisplayforDateTime - Implement more traits for
DateTime
<!-- 2 -->🚜 Refactor
- Change type of
last_modified_timetoOption<DateTime> - [breaking] Rename
from_msdostofrom_msdos_unchecked, make it unsafe, and addtry_from_msdos(#145)
<!-- 7 -->⚙️ Miscellaneous Tasks
- Continue to accept archives with invalid DateTime, and use
now_utc()as default only when writing, not reading
- Add
-
1.3.122 May 2024 withdrawnRelease notes
Open source →<!-- 2 -->🚜 Refactor
- Make
deflateenable 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 DateTimetoimpl TryFrom<DateTime> for NaiveDateTime(#136)
<!-- 4 -->⚡ Performance
- Change default compression implementation to
flate2/zlib-ng
<!-- 7 -->⚙️ Miscellaneous Tasks
- Make
-
1.3.017 May 2024 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
- Add
is_symlinkmethod
<!-- 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-featuresimplicitly 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 generifyis_dirto 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
- Add
-
1.2.311 May 2024 withdrawnRelease notes
Open source →<!-- 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
- Remove a window when an extracted directory might be unexpectedly listable and/or
-
1.2.209 May 2024 withdrawnRelease notes
Open source →<!-- 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
-
1.2.107 May 2024 withdrawnRelease notes
Open source →<!-- 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
Storedthe default compression method ifDeflatedisn'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
atomicmodule
-
1.2.006 May 2024 withdrawnRelease notes
Open source →<!-- 0 -->🚀 Features
- Add method
decompressed_size()so non-recursive ZIP bombs can be detected
<!-- 2 -->🚜 Refactor
- Make
ZipWriter::finish()consume theZipWriter
<!-- 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
- Add method
-
1.1.404 May 2024Release notes
Open source →<!-- 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_componentsslightly sooner when not using it - Speed up
path_to_stringin 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-rscan't replacebzip2because it's decompress-only
-
1.1.330 Apr 2024Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- Rare bug where find_and_parse would give up prematurely on detecting a false end-of-CDR header
-
1.1.228 Apr 2024Release notes
Open source →<!-- 1 -->🐛 Bug Fixes
- Alignment was previously handled incorrectly (#33)
<!-- 2 -->🚜 Refactor
- deprecate
deflate-minizfeature since it's now equivalent todeflate(#35)