🚀 Features
- add ZipFileBuilder for parallelizing compression (#911)
- add method
by_index_with_data_descriptor(#994) - add len, is_empty and entry to ZipArchiveMetadata (#1015)
- read data descriptor from binary (#990)
- add comment and test for ZipStreamReader and symlinks (#985)
- (write) add
ZipWriter::hide_filefor in-place entry deletion (#924) - add compression (#948)
- add test to in place modification (#945)
- move CustomExtraField to own file (#941)
- add a test on enum size (#939)
- use ZipFileEntry instead of ZipStreamFileMetadata (#935)
- add ZipFileEntry with no Reader (#933)
- change
aes_modetoaes_settings()in ZipFileData (#925) - cleanup and harmonize extra fields (#923)
- Rewrite zip64 extra (#913)
🐛 Bug Fixes
- reading an empty AES entry again at EOF returns Ok(0) (#1024)
- reject ZIP64 sizes that overflow u64 when computing data end offsets (#1036)
- apply central directory metadata in ZipStreamReader, only to written entries (#1030)
- consume the whole extended timestamp field in the central header (#1016)
- parse the central header of the extended timestamp (#1002)
- don't pre-allocate the declared size in the legacy decoders (#991)
- Symlink with very large declared size could lead to out-of-memory panic (#984)
- copy extra fields in raw_copy_file (#955) (#982)
- add unix_mode when copy_raw_file (#981)
- rewrite documentation of add_symlink_from_path (#979)
- ignore a ZIP64 extra field that no sentinel asked for (#962)
- do not set data descriptor if directory (#973)
- expose flags function for easier access (#972)
- preserve unix permission in raw_copy_file (#956)
- clippy warning on nightly (#960)
- remove extra alloc used to copy (#938)
- lazy allocation on error case (#937)
- fix data alignment (#929)
🚜 Refactor
- move extract to own file (#1009)
- cleanup permissions related code (#961)
- remove feature gate (#949)
- create
ZipFileFlagsto wrapflags(#947) - remove unused trait (#946)
- access
crate::formatwithzip::unstable::format(#944) - harmonize functions to
format/functions.rs(#943) - rewrite
make_reader()function (#936) - simplify
initialize_local_block(#934) - move write options to
write/options.rs(#931) - move spec to format (#932)
- move Magic to format (#930)
- [breaking] Remove ZipFileData::extra_data_start field that is never read (#926)
⚙️ Miscellaneous Tasks
- Fix high-level symlink extraction logic, disable some tests in miri, and fix some typos (#1035)
Fix
- some permissions tests can only run on Unix (#1000)