chore(deps): update dependency llvm_zlib to v2.3.3#520
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
chore(deps): update dependency llvm_zlib to v2.3.3#520renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
Test plan: CI should pass with updated dependencies. No review required: this is an automated dependency update PR.
Release Notes
zlib-ng/zlib-ng (llvm_zlib)
v2.3.3Compare Source
This is a small bugfix release, fixing several relatively minor bugs and updating the CI workflows.
Changes since 2.3.2:
Bug fixes
Tests
Buildsystem
Cleanup
CI
v2.3.2: - HotfixCompare Source
This hotfix release fixes bug #2029.
This bug caused CRC32 failures for data that ended on certain byte counts above 256KB.
Changes since 2.3.1:
Chorba: Fix edge case bug for >256KB input #2033
v2.3.1Compare Source
Warning, bug in crc32 Chorba:
We recommend skipping this release and instead use the 2.3.2 Hotfix release.
First stable release of the 2.3.x branch.
This is a feature release that introduces several optimizations and improvements.
For some benchmarks and graphs, please see #2022.
For recommended os/cmake/compiler versions, please see Wiki.
The biggest addition is the Chorba CRC32 code, this is a major improvement to crc32 calculation speed
for pre-PCLMUL (or equivalent) cpus. For now, we have 3 variants of Chorba: Generic, SSE2 and SSE4.1.
We have also removed our detection and usage of the various aligned alloc functions, because we have to
support an application-provided alloc function, and thus we have to check and fix buffer alignments anyway,
so now we just use malloc() if none is provided.
The gzopen-related init code has been rewritten to clean up and unify the gzread and gzwrite behavior.
Several malloc calls removed, places in the gz* code with malloc calls is down from 7 to 4 places
(using gzopen will now only result in 2-3 calls to malloc total).
The reason for releasing 2.3.x instead of another 2.2 release is the introduction of Chorba CRC32, rewritten
gzopen init code, the increased CMake version requirement, and the removal of NMake project files.
There should not be any API/ABI changes (other than on the previously failing platforms fixed by #1980).
Tip for distro maintainers:
Distros that require x86-64-v3 or higher can optionally choose to disable compiling in the large generic-C
Chorba code by setting the CMake option "WITH_CRC32_CHORBA=OFF", since x86-64-v3 guarantees that pclmul
instructions will always be available on x86-64-v3, and the pclmul optimized crc32 does not depend on it
(the SSE2/SSE4.1 implementations do however).
PS: If your company benefits from zlib-ng, please consider donating so we can expand our fleet of test systems
Changes since 2.3.0-rc2:
Arch-Specific improvements/optimizations
Buildsystem
Tests/Benchmarks
CI
Full changelog since 2.2.5:
Important fixes/changes
Optimizations
Arch-Specific improvements/optimizations
Buildsystem
Tests/Benchmarks
CI
Misc
v2.2.5Compare Source
This is a bugfix release, backporting a few bugfixes and updating the CI.
Changes
Important fixes
Buildsystem
Tests/Benchmarks
CI
Misc
v2.2.4Compare Source
This is primarily a bugfix release, fixing a few new and old bugs.
Changes
Important fixes
Buildsystem
Tests/Benchmarks
CI
v2.2.3Compare Source
New Years release, zlib-ng's 10 years celebration
My first commit in this repo was in October 8th 2014, although I do remember that I started during summer vacation and had made the zlib cleanup more of a mess than I wanted, so I restarted from scratch in October when I had gotten a better overview of the code and what I wanted to do to clean it up. At that point zlib-ng was not very likely to go anywhere, but despite the odds, over time several people found it and opened PRs with their own improvements, a few of those became long-time contributors, and a few years ago zlib-ng finally became more than an experimental fork. Zlib-ng has since gained traction and several distros have started replacing stock zlib with zlib-ng in compat mode.
The past year we have been lucky enough to have received donations so that we were able to invest in a couple Rpi5 systems for testing, and we are looking forward to hopefully being able to acquire more architectures for development and testing, Risc-V would be interesting for example, and we are lacking a dedicated testing machine capable of AVX512.
Release 2.2.3
This time we have two code fixes for potentially unsafe access, although we have not had any bug-reports about these.
It also contains several optimizations. Especially of note, inflate has been optimized on various instruction sets and also the generic C code has seen improvements, and we have improvements for arches where unaligned accesses are not possible (lacking instructions to handle unaligned access) and also improvements on big endian.
Example benchmarks:
x86-64 AVX2: Inflate ~17.8% faster, Deflate unchanged. -4.6KB library size.
Aarch64: Inflate ~2.3% faster, Deflate unchanged. - 5.5KB library size.
We also took some time to do a comprehensive cleanup of the now misleading UNALIGNED_OK option and of all the "unaligned" functions. We have noticed that some distros have been disabling these, fearing they are using potentially unsafe unaligned pointers, but we already fixed that in 2.1.0-beta1. Since then, these "unaligned" settings/functions have been referring to using unaligned accesses in safe ways, like utilizing unaligned intrinsics or memcpy to fix alignment for example and selecting what safe method is optimal to the arch. So disabling that instead disabled several safe optimizations.
Because this was obviously misleading certain distros into disabling these optimizations, we have cleaned it up, removed a lot of unnecessary preprocessor checks, and made detection of optimal methods happen during compile instead of configure. As a bonus, this cleaned up a lot of code and also let us not compile in many extra variants of compare256/longest_match, saving about 8-10KB of library size.
Update: This is caused by a bug in Clang versions 18 -> 19.1.2, ref: llvm/llvm-project#109113
Any Zlib-ng version on s390x built with VX-extensions enabled compiled using a buggy Clang version will be unsafe.
Changes
Fixes for potentially unsafe access
Optimizations / Cleanups
Big Endian
Buildsys fixes / minor fixes
CI
v2.2.2Compare Source
This release fixes a corruption bug with the inflateback implementation, this was
detected by Docker using pigz w/zlib-ng to decompress a 25GB image file and failing CRC.
Since this is so far the only known way to trigger the bug, it seems to be hard to hit.
Most of the rest are minor changes to avoid triggering warnings in MSVC or optional
warnings in other compilers, as well as a few minor fixes to the buildsystem and CI.
Changes
Important Fixes
Buildsystem
CI/Test
Misc
S390x
RISC-V
v2.2.1Compare Source
This is the first stable release of the 2.2.x branch
Please read the changelog for the 2.2.0 Release Candidate if you didn't already, especially if your software gives zlib-ng a custom allocator.
No bugreports came in during 2.2.0 RC testing, so the only change in 2.2.1 is a small fix for Configure that was already in the pipe:
v2.2.0: Release CandidateCompare Source
This release contains several larger changes and optimizations. On x86-64 for example, this leads to a compression speedup of ~12% on default level.
We also have a major reorganization of memory alloc/free to always happen during init, this allows applications to potentially do the init early and be finished with the malloc system calls before it needs to process latency sensitive compression/decompression. It also ensures that zlib-ng can not fail due to memory pressure after having run the init functions successfully. We also now only do a single memory allocation deflate or inflate, ensuring we do less system calls and the allocated buffers live close together in memory.
Compression or decompression of very small buffers will now also be faster due to spending less time doing malloc/free.
The downside to this is that decompression will now always allocate the maximum required memory (~42KB total on 64-bit platforms), previously it would allocate (and potentially free) memory as needed during decompression.
It also means that applications that replace the alloc/free functions with their own can potentially have some issues (Yes I am looking at you Nginx).
Changes
Buildsystem
CI/Test
Cleanup
Refactoring and Optimizations
ARM
Power
RVV
S390x
x86
Misc
v2.1.8Compare Source
This backport release fixes a corruption bug with the inflateback implementation, this was
detected by Docker using pigz w/zlib-ng to decompress a 25GB image file and failing CRC.
Since this is so far the only known way to trigger the bug, it seems to be hard to hit.
Most of the rest are minor changes to avoid triggering warnings in MSVC or optional
warnings in other compilers, as well as a few minor fixes to the buildsystem and CI.
Other changes
Important Fixes
Buildsystem
CI/Test
Misc
S390x
RISC-V
v2.1.7Compare Source
Due to the high amount of refactoring changes in
develop, I have decided to target those to a new version branch2.2.x.There is also a lot of fixes and minor improvements, so those will be backported and released as 2.1.7.
To work around the #1708 issue (incompatibility with applications mis-using the zlib zalloc/zfree API), #1710 is merged instead of backporting the much bigger #1713.
Backported Changes
Buildsystem
CI/Test
Cleanup
Refactoring and Optimizations
ARM
Power
RVV
S390x
x86
Misc
v2.1.6Compare Source
This is a stable release, with several minor improvements and one corruption fix for inflateCopy().
This release also improves on the functable implementation, and also moves its initialization to happen in deflateInit() and inflateInit(). We also have some optimizations for RVV and ARM.
Notes for packagers:
INSTALL_LIB_DIRworkarounds, this should not be needed since v2.0.2 (2021), but packagers seem to keep copying the workaround from each other. Please see cmake/detect-install-dirs.cmake.Changes
Fix inflateCopy corruption caused by change in 2.1.4 #1628
Functable
API
ARM
RVV
x86
Buildsystem
Misc
v2.1.5Compare Source
This is a hotfix release, fixing an issue where certain applications would fail with a checksum error during inflate (decompression).
A few minor fixes and improvements are also included.
Fix bug with Z_FINISH handling with no window. #1602
Added unit test for inflate with Z_FINISH and no window #1603
Fix CMake handling of CMAKE_INSTALL_INCLUDEDIR #1593
Fix pkgconfig support for WITH_GZFILEOP #1595 #1598
Github Actions update #1590
Readme Update #1594
v2.1.4Compare Source
This is a stable release, with several minor improvements and one fix for a possible buffer overrun while using inflateCopy().
Zlib-ng's zlib-compat mode is now targeting zlib 1.3 compatibility.
Of note, we have new optimizations for ARM and Risc-V RVV, and a lot of fixes and improvements to the buildsystem.
Fix: inflateCopy() allocate window with padding #1583
Pull zlib 1.3 changes #1563
API
MacOS
MinGW
ARM
Loongarch
PowerPC
RVV
x86
Configuration
📅 Schedule: Branch creation - "on the 1st through 7th day of the month" in timezone America/Los_Angeles, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.