Skip to content

Latest commit

 

History

History
476 lines (300 loc) · 15.4 KB

CHANGELOG.md

File metadata and controls

476 lines (300 loc) · 15.4 KB

Changelog

2.1.3 - 2024-06-04

🐛 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)

🚜 Refactor

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

⚙️ 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

2.1.1 - 2024-05-28

🐛 Bug Fixes

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

🚜 Refactor

  • use a MIN_VERSION constant

⚙️ Miscellaneous Tasks

  • Bug fixes for debug implementation
  • Bug fixes for debug implementation
  • Update unit tests
  • Remove unused import

2.1.0 - 2024-05-25

🚀 Features

  • Support mutual conversion between DateTime and MS-DOS pair

🐛 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)

⚙️ Miscellaneous Tasks

  • Another tweak to ensure version_needed is applied
  • Tweaks to make version_needed and version_made_by work with recently-merged changes

2.0.0 - 2024-05-24

🚀 Features

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

🚜 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)

⚙️ Miscellaneous Tasks

  • Continue to accept archives with invalid DateTime, and use now_utc() as default only when writing, not reading

1.3.1 - 2024-05-21

🚜 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)

⚡ Performance

  • Change default compression implementation to flate2/zlib-ng

⚙️ Miscellaneous Tasks

  • chore(#132): Attribution for some copied test data
  • chore(#133): chmod -x src/result.rs

1.3.0 - 2024-05-17

🚀 Features

  • Add is_symlink method

🐛 Bug Fixes

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

🚜 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

⚙️ Miscellaneous Tasks

  • Fix borrow-of-moved-value
  • Box doesn't directly convert to PathBuf, so convert back to String first
  • partial revert - only &str has chars(), but Box 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-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

1.2.3 - 2024-05-10

🐛 Bug Fixes

⚙️ Miscellaneous Tasks

  • More conditionally-unused imports

1.2.2 - 2024-05-09

🐛 Bug Fixes

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

⚡ 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.1 - 2024-05-06

🐛 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)

🚜 Refactor

  • Overhaul impl Arbitrary for FileOptions
  • Remove unused atomic module

1.2.0 - 2024-05-06

🚀 Features

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

🚜 Refactor

  • Make ZipWriter::finish() consume the ZipWriter

⚙️ 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

1.1.4 - 2024-05-04

🐛 Bug Fixes

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

⚡ 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

⚙️ 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

◀️ Revert

  • #58 (partial): bzip2-rs can't replace bzip2 because it's decompress-only

1.1.3 - 2024-04-30

🐛 Bug Fixes

  • Rare bug where find_and_parse would give up prematurely on detecting a false end-of-CDR header

1.1.2 - 2024-04-28

🐛 Bug Fixes

  • Alignment was previously handled incorrectly (#33)

🚜 Refactor

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

[1.1.1]

Added

  • index_for_name, index_for_path, name_for_index: get the index of a file given its path or vice-versa, without initializing metadata from the local-file header or needing to mutably borrow the ZipArchive.
  • add_symlink_from_path, shallow_copy_file_from_path, deep_copy_file_from_path, raw_copy_file_to_path: copy a file or create a symlink using AsRef<Path> arguments

Changed

  • add_directory_from_path and start_file_from_path are no longer deprecated, and they now normalize .. as well as ..

[1.1.0]

Added

  • Support for decoding LZMA.

Changed

  • Eliminated a custom AtomicU64 type by replacing it with OnceLock in the only place it's used.
  • FileOptions now has the subtype SimpleFileOptions which implements Copy but has no extra data.

[1.0.1]

Changed

  • The published package on crates.io no longer includes the tests or examples.

[1.0.0]

Changed

  • Now uses boxed slices rather than String or Vec for metadata fields that aren't likely to grow.

[0.11.0]

Added

  • Support for DEFLATE64 (decompression only).
  • Support for Zopfli compression levels up to i64::MAX.

Changed

  • InvalidPassword is now a kind of ZipError to eliminate the need for nested Result structs.
  • Updated dependencies.

[0.10.3]

Changed

  • Updated dependencies.
  • MSRV increased to 1.67.

Fixed

  • Fixed some rare bugs that could cause panics when trying to read an invalid ZIP file or using an incorrect password.

[0.10.2]

Changed

  • Where possible, methods are now const. This improves performance, especially when reading.

[0.10.1]

Changed

  • Date and time conversion methods now return DateTimeRangeError rather than () on error.

[0.10.0]

Changed

  • Replaces the flush_on_finish_file parameter of ZipWriter::new and ZipWriter::Append with a set_flush_on_finish_file method.

Fixed

  • Fixes build errors that occur when all default features are disabled.
  • Fixes more cases of a bug when ZIP64 magic bytes occur in filenames.

[0.9.2]

Added

  • zlib-ng for fast Deflate compression. This is now the default for compression levels 0-9.
  • chrono to convert zip::DateTime to and from chrono::NaiveDateTime

[0.9.1]

Added

  • Zopfli for aggressive Deflate compression.

[0.9.0]

Added

  • flush_on_finish_file parameter for ZipWriter.

[0.8.3]

Changed

  • Uses the aes::cipher::KeyInit trait from aes 0.8.2 where appropriate.

Fixed

  • Calling abort_file() no longer corrupts the archive if called on a shallow copy of a remaining file, or on an archive whose CDR entries are out of sequence. However, it may leave an unused entry in the archive.
  • Calling abort_file() while writing a ZipCrypto-encrypted file no longer causes a crash.
  • Calling abort_file() on the last file before finish() no longer produces an invalid ZIP file or garbage in the comment.

Added

  • ZipWriter methods get_comment() and get_raw_comment().

[0.8.2]

Fixed

  • Fixed an issue where code might spuriously fail during write fuzzing.

Added

  • New method with_alignment on FileOptions.

[0.8.1]

Fixed

  • ZipWriter now once again implements Send if the underlying writer does.

[0.8.0]

Deleted

  • Methods start_file_aligned, start_file_with_extra_data, end_local_start_central_extra_data and end_extra_data (see below).

Changed

  • Alignment and extra-data fields are now attributes of [zip::unstable::write::FileOptions], allowing them to be specified for add_directory and add_symlink.
  • Extra-data fields are now formatted by the FileOptions method add_extra_data.
  • Improved performance, especially for shallow_copy_file and deep_copy_file on files with extra data.

Fixed

  • Fixes a rare bug where the size of the extra-data field could overflow when large_file was set.
  • Fixes more cases of a bug when ZIP64 magic bytes occur in filenames.

[0.7.5]

Fixed

  • Fixed a bug that occurs when ZIP64 magic bytes occur twice in a filename or across two filenames.

[0.7.4]

Added

  • Added experimental [zip::unstable::write::FileOptions::with_deprecated_encryption] API to enable encrypting files with PKWARE encryption.

[0.7.3]

Fixed

  • Fixed a bug that occurs when a filename in a ZIP32 file includes the ZIP64 magic bytes.

[0.7.2]

Added

  • Method abort_file - removes the current or most recently-finished file from the archive.

Fixed

  • Fixed a bug where a file could remain open for writing after validations failed.

[0.7.1]

Changed

  • Bumped the version number in order to upload an updated README to crates.io.

[0.7.0]

Fixed

  • Calling start_file with invalid parameters no longer closes the ZipWriter.
  • Attempting to write a 4GiB file without calling FileOptions::large_file(true) now removes the file from the archive but does not close the ZipWriter.
  • Attempting to write a file with an unrepresentable or invalid last-modified date will instead add it with a date of 1980-01-01 00:00:00.

Added

  • Method is_writing_file - indicates whether a file is open for writing.

[0.6.13]

Fixed

  • Fixed a possible bug in deep_copy_file.

[0.6.12]

Fixed

  • Fixed a Clippy warning that was missed during the last release.

[0.6.11]

Fixed

  • Fixed a bug that could cause later writes to fail after a deep_copy_file call.

[0.6.10]

Changed

  • Updated dependency versions.

[0.6.9]

Fixed

  • Fixed an issue that prevented ZipWriter from implementing Send.

[0.6.8]

Added

  • Detects duplicate filenames.

Fixed

  • deep_copy_file could set incorrect Unix permissions.
  • deep_copy_file could handle files incorrectly if their compressed size was u32::MAX bytes or less but their uncompressed size was not.
  • Documented that deep_copy_file does not copy a directory's contents.

Changed

  • Improved performance of deep_copy_file by using a HashMap and eliminating a redundant search.

[0.6.7]

Added

  • deep_copy_file method: more standards-compliant way to copy a file from within the ZipWriter

[0.6.6]

Fixed

  • Unused flag #![feature(read_buf)] was breaking compatibility with stable compiler.

Changed

[0.6.5]

Changed

  • Added experimental [zip::unstable::write::FileOptions::with_deprecated_encryption] API to enable encrypting files with PKWARE encryption.

Added

  • shallow_copy_file method: copy a file from within the ZipWriter

[0.6.4]

Changed