Releases: trifectatechfoundation/zlib-rs
Releases · trifectatechfoundation/zlib-rs
v0.6.3
Highlights
A while ago a bug was reported in zlib-rs #459, which turned out to also exist in zlib-ng. zlib-ng has now fixed the bug and made a new release, and we're following suit here. This fix can change the output of compression slightly.
What's Changed
- gate tests on features they use by @alexanderkjall in #475
- the zalloc_rust and zalloc_rust_calloc functions are behind the rust-allocator feature by @alexanderkjall in #476
- add test for deterministic deflate output by @folkertdev in #461
- fix compilation errors for 'cargo test --all-features' by @alexanderkjall in #477
- Run all the gz tests when building on macOS by @brian-pane in #479
- ensure that
all-featuresand--no-default-featuresbuilds by @folkertdev in #480
New Contributors
- @alexanderkjall made their first contribution in #475
Full Changelog: v0.6.2...v0.6.3
v0.6.2
Release 0.6.1
What's Changed
- Replace run-time asserts with compile time in deflate tally functions by @brian-pane in #450
- Simplify the emit_match function in the medium deflate algorithm by @brian-pane in #451
- fuzzers: fix build with 32-bit targets by @Mrmaxmeier in #452
- Remove no-op
as _casts with return codes by @Mrmaxmeier in #456 - fuzzers: Use bytes instead of string inputs by @Mrmaxmeier in #453
- Remove use of allow(unsafe_op_in_unsafe_fn) from adler32 NEON impl by @brian-pane in #458
- Additional test coverage for inflate/window.rs by @brian-pane in #460
- Move State to beginning of inflate/deflate allocations, fix overallocation during inflate by @spectral54 in #457
- Fix
compressreturning incorrect error value by @Mrmaxmeier in #454 - turn
C-unwindinto justCby @folkertdev in #441 - use
stdby default when building acdylibby @folkertdev in #462 - add vnni adler32 variant by @folkertdev in #448
- Move gz back by @folkertdev in #447
- bump
getrandomto0.2.17by @folkertdev in #464 - do not export zlib-rs macros by @folkertdev in #466
gzdocs updates by @folkertdev in #463- Hide more symbols by @folkertdev in #467
- Add safety comments to Writer implementation by @brian-pane in #403
- fixups for some doc comments by @folkertdev in #468
inftrees.rsimprovements by @folkertdev in #471- fix overflow on
total_{in, out}on windows by @folkertdev in #473
New Contributors
- @Mrmaxmeier made their first contribution in #452
- @spectral54 made their first contribution in #457
Full Changelog: v0.5.5...v0.6.1
Release v0.6.0
breaking changes
libz-rs-sys
- functions that used
extern "C-unwind"before now useextern "C". This helps when building zlib-rs as a C library, because unwinding from rust into C is UB. Now, if a panic does occur in the rust code, it will abort the program at the FFI boundary rather than unwind into C code. If you do really need unwinding in rust code, we suggest usingflate2or usingzlib-rsdirectly.
zlib-rs
- the internals are no longer publicly exposed. If you were using some unstable symbol before, and it is no longer exported, but you do believe it would be reasonable for us to provide it, let us know.
- the
uncompress_slicefunction was renamed todecompress_slice
other highlights
- the
gz*functions are now included in the main crate. Thanks again to @brian-pane for implementing these. - overall we now provide all public symbols that zlib-ng provides (e.g.
inflateBackwas added). Thegzprintfandgzvprintffunctions need nightly though. - improved
avx512support.
What's Changed
- Replace run-time asserts with compile time in deflate tally functions by @brian-pane in #450
- Simplify the emit_match function in the medium deflate algorithm by @brian-pane in #451
- fuzzers: fix build with 32-bit targets by @Mrmaxmeier in #452
- Remove no-op
as _casts with return codes by @Mrmaxmeier in #456 - fuzzers: Use bytes instead of string inputs by @Mrmaxmeier in #453
- Remove use of allow(unsafe_op_in_unsafe_fn) from adler32 NEON impl by @brian-pane in #458
- Additional test coverage for inflate/window.rs by @brian-pane in #460
- Move State to beginning of inflate/deflate allocations, fix overallocation during inflate by @spectral54 in #457
- Fix
compressreturning incorrect error value by @Mrmaxmeier in #454 - turn
C-unwindinto justCby @folkertdev in #441 - use
stdby default when building acdylibby @folkertdev in #462 - add vnni adler32 variant by @folkertdev in #448
- Move gz back by @folkertdev in #447
- bump
getrandomto0.2.17by @folkertdev in #464 - do not export zlib-rs macros by @folkertdev in #466
gzdocs updates by @folkertdev in #463- Hide more symbols by @folkertdev in #467
- Add safety comments to Writer implementation by @brian-pane in #403
- fixups for some doc comments by @folkertdev in #468
New Contributors
- @Mrmaxmeier made their first contribution in #452
- @spectral54 made their first contribution in #457
Full Changelog: v0.5.5...v0.6.0
v0.5.5
What's Changed
- use global allocator by @folkertdev in #446
- handle input/output buffers with lengths that overflow
c_uintby @folkertdev in #449
Full Changelog: v0.5.4...v0.5.5
v0.5.4
What's Changed
- Export missing functions by @folkertdev in #440
- expose
gzvprintfby @folkertdev in #435 - expose
uncompress2by @folkertdev in #436 - use the new
c_variadicAPI by @folkertdev in #443 - test ABI compatibility with zlib-ng on CI by @folkertdev in #442
- add
set_dictionaryandset_levelto stable api by @folkertdev in #444
Full Changelog: v0.5.3...v0.5.4
v0.5.3
What's Changed
- add example data from gitoxide, which decompresses many small files by @folkertdev in #411
- zlib-rs: properly guard tests by allocator by @Fabian-Gruenbichler in #413
- work around miri limitation, run more deflate tests with miri by @folkertdev in #414
- zlib-rs: adapt neon CPU feature check to avx2 one by @folkertdev in #418
- a slice fill is now turned into a memset even when using miri by @folkertdev in #417
- Enforce unsafe_op_in_unsafe_fn in more source files by @brian-pane in #400
- crc32: add avx512 implementation by @folkertdev in #422
- Libz sys upgrade by @folkertdev in #423
- cdylib: add symbol versioning CI job by @folkertdev in #420
- stable api v0 by @folkertdev in #424
- Inflate back by @folkertdev in #426
- Fix match on window boundary bug by @folkertdev in #428
- use only a single allocation for all deflate state by @folkertdev in #429
- add avx512 adler32 implementation by @folkertdev in #425
- port avx512 implementation of
compare256by @folkertdev in #427 - Test
gzapi with miri by @folkertdev in #431 - implement the
Mode::Donestate by @folkertdev in #434 - Inflate: use a single allocation by @folkertdev in #430
- Set Z_HAVE_UNISTD_H only on non-Windows platforms by @jakos-sec in #437
- add note about how to do symbol versioning by @folkertdev in #432
New Contributors
- @Fabian-Gruenbichler made their first contribution in #413
Full Changelog: v0.5.2...v0.5.3
v0.5.2
What's Changed
- add a fuzzer that compresses the gzip header by @folkertdev in #384
- distribute
zlib.handzconf.hby @folkertdev in #385 - fix valgrind issue in test by @folkertdev in #387
- Export crc32_combine64 and adler32_combine64 for 32bit architectures by @jakos-sec in #386
- Correct naming of zlib-sys to libz-sys by @erikjee in #390
- expose the 64-bit versions of some gz functions by @folkertdev in #388
- extract
SymBufby @folkertdev in #391 - libz-rs-sys-cdylib: include LICENSE by @j-vanderstoep in #394
- clippy fixes for 1.88.0 by @folkertdev in #395
- fix valgrind install command by @folkertdev in #398
- Strengthen the lint directives related to unsafe code by @brian-pane in #396
- Export crc32_z and adler32_z by @jakos-sec in #399
- Declare BitReader::refill unsafe and document safety prerequisites by @brian-pane in #397
- expose the allocators as statics by @folkertdev in #402
- clippy by @folkertdev in #405
- Ci cleanup by @folkertdev in #406
- work around avx512vl miscompilation by @folkertdev in #408
- export
get_crc_tableby @folkertdev in #409
New Contributors
- @jakos-sec made their first contribution in #386
Full Changelog: v0.5.1...v0.5.2
v0.5.1
Highlights
- we now have experimental support for the
gz*functions when building a C dynamic library. See the README oflibz-rs-sys-cdylib. (most of the work here was done by @brianpane - fixed a bug where uninitialized memory was read (but not used) during decompression, see #346
- fixed some logic bugs in the construction of the gzip header (unlikely to come up in practice)
- performance improvements for compression and decompression
- we support
inflateCodesUsed,inflateGetDictionaryanddeflateGetDictionary
What's Changed
- remove CI usage of
ubuntu-20.04, just useubuntu-latestby @folkertdev in #330 - Partial implementation of gzopen and gzclose by @brian-pane in #326
- Add Linux-specific gzopen options and more tests by @brian-pane in #332
- Add some comments to gzopen_help and reduce the amount of unsafe code by @brian-pane in #333
- Fix unsafe_op_in_unsafe_fn warning in AArch64 CRC32 implementation by @brian-pane in #334
- bump codecov action version by @folkertdev in #336
- Finish implementing gz_open and add gzdopen and gzerror by @brian-pane in #335
- Add gzclearerr and gzeof functions by @brian-pane in #339
- Micro-optimization for decompression by @mat-1 in #320
- use
cargo nextestwithcargo llvm-covto gather the test coverage by @folkertdev in #338 - ignore coverage of test files by @folkertdev in #342
- run the uncompress fuzzer with a custom corpus and gather fuzzer codecov by @folkertdev in #337
- stop using custom wasm simd for
slide_hashby @folkertdev in #343 - Implement gzdirect by @brian-pane in #341
- Copy chunks as
MaybeUninit<u8>by @folkertdev in #346 - Implement gzread and gzbuffer by @brian-pane in #345
- Implement gzwrite and gzflush by @brian-pane in #347
- Fuzz coverage error paths by @folkertdev in #344
- Make gzclose_r and gzclose_w part of the public API by @brian-pane in #348
- Implement gzoffset and gztell by @brian-pane in #349
- Implement gzputc and gzputs by @brian-pane in #351
- Implement gzgetc and gzgets by @brian-pane in #352
- Implement gzfread by @brian-pane in #353
- Implement gzfwrite and add null buffer check to gzfread by @brian-pane in #354
- Implement gzungetc by @brian-pane in #355
- Implement gzsetparams by @brian-pane in #356
- Implement gzseek for reads, as well as gzrewind by @brian-pane in #358
- Implement gzseek for writes by @brian-pane in #359
- check for and enable the
bmi1andbmi2target feature by @folkertdev in #362 - Additional gz test coverage by @brian-pane in #363
- use more idiomatic way to create an integer out of a repeating byte by @folkertdev in #364
- use an autovectorized
slide_hash_chainon neon by @folkertdev in #366 - add
inflateCodesUsedby @folkertdev in #350 - Hard-code the hash function for the quick deflate algorithm by @brian-pane in #369
- faster
compare256aarch64 neon implementation by @Dr-Emann in #371 - Move gz API to libz-rs-sys-cdylib by @brian-pane in #365
- Cache locality improvement for deflate State.lookahead by @brian-pane in #372
- Hard-code the hash selection for the fast and medium deflate algorithms by @brian-pane in #373
- Optimize out some read operations from the quick deflate algorithm by @brian-pane in #374
- Optimize out some read operations from the fast deflate algorithm by @brian-pane in #375
- Reserve half of the GzState input buffer space for gzprintf. by @brian-pane in #378
- run the zlib C tests on our cdylib by @folkertdev in #377
- Fix import resolution in crc32 for the Android build by @j-vanderstoep in #379
- add
gzprintfby @folkertdev in #376 - add
inflateGetDictionaryanddeflateGetDictionaryby @folkertdev in #380 - Use core::mem::transmute instead of std in wasm adler32 by @storo-dfend in #382
cdylib: usecoreinstead ofstdby @folkertdev in #383- fix a bug in the value of the FTEXT field of the gz header by @folkertdev in #381
New Contributors
- @mat-1 made their first contribution in #320
- @Dr-Emann made their first contribution in #371
- @j-vanderstoep made their first contribution in #379
- @storo-dfend made their first contribution in #382
Full Changelog: v0.5.0...v0.5.1
v0.5.0
This is technically a breaking change, but unless you rely on rust exporting C symbols, you should not run into any issues when upgrading.
highlights
- the
export-symbolsfeature now controls whether C symbols are exported. This feature is off by default (that is why this is a breaking change; the behavior of earlier versions was to export those symbols). For rust users that is almost certainly the correct default, because it means zlib-rs can be used together with stock zlib or zlib-ng in the same project. This should fix some issues with symbol clashes betweenlibz-sys(used e.g. by openssl) andzlib-rs. - the
cdylibcrate now usespanic=abort. For C users, that is the only safe way to panic, because unwinding to C is unsound. - Some simplifications to simd code: in a number of cases, LLVM optimizes safe rust code to the equivalent assembly that we achieved with explicit simd before.
What's Changed
- make the fallback implementation of slidehash vectorize better by @folkertdev in #296
- Clippy 1.85.0 fixes by @folkertdev in #299
- the standard
slide_hashimplementation vectorizes well on avx2 by @folkertdev in #298 - remove explicit SIMD reads and writes by @folkertdev in #303
- Store mode on the stack in dispatch by @bjorn3 in #304
- add
Cargo.lockby @folkertdev in #308 zlig-ng->zlib-ngby @folkertdev in #310- use a more straightforward bit counting operaration by @folkertdev in #311
- use safe chunking in wasm32/aarch64 compare256 by @folkertdev in #312
- Inflate cleanups by @folkertdev in #313
- Show sponsor button by @erikjee in #316
- add
semver-prefixfeature (like we have for libbz2-rs-sys) by @folkertdev in #318 - explicitly document memory management by @folkertdev in #317
- Loop match preparations by @folkertdev in #319
- add
export-symbolsfeature flag by @folkertdev in #322 - add
panic=abortto the cdylib by @folkertdev in #323 - run clippy for more scenarios by @folkertdev in #325
- add
zlibCompileFlagsby @folkertdev in #324 - refactor zeroed allocation api by @folkertdev in #327
- fix alignment in zeroed allocations by @folkertdev in #328
- investigate CI failure by @folkertdev in #329
Full Changelog: v0.4.2...v0.5.0