]>
git.ipfire.org Git - thirdparty/zlib-ng.git/log
Nathan Moinvaziri [Thu, 29 Jan 2026 03:48:43 +0000 (19:48 -0800)]
Remove unnecessary string.h include in x86_features
Nathan Moinvaziri [Mon, 26 Jan 2026 22:53:43 +0000 (14:53 -0800)]
Use index-based CRC macros and inline memcpy.
Nathan Moinvaziri [Thu, 15 Jan 2026 04:17:53 +0000 (20:17 -0800)]
Loop unroll for len >= 8 in crc32_copy_small.
Nathan Moinvaziri [Thu, 15 Jan 2026 04:15:05 +0000 (20:15 -0800)]
Move crc32_copy_small to shared private header.
Dougall Johnson [Sun, 25 Jan 2026 18:34:14 +0000 (10:34 -0800)]
Combine Huffman code and extra bits into single shift operation
This changes the "code" structure so that "bits" contains the total
number of bits, and "op & 15" contains the non-extra bit count.
Based on https://github.com/dougallj/zlib-dougallj/commit/
34b9fc457b5247d7d2d732e6f28c9a80ff16abd7
Co-authored-by: Nathan Moinvaziri <nathan@nathanm.com>
Nathan Moinvaziri [Sun, 25 Jan 2026 02:00:50 +0000 (18:00 -0800)]
Check cpuid availability on FreeBSD/OpenBSD when detecting fast/pmull
Pavel P [Wed, 21 Jan 2026 12:30:11 +0000 (14:30 +0200)]
Move cleanup to inffast_tpl.h, clean up INFLATE_FAST
Pavel P [Wed, 21 Jan 2026 11:10:03 +0000 (13:10 +0200)]
Add cleanup for defines that might be set before inclusion of chunkset_tpl.h
+ remove unused `HAVE_CHUNKUNROLL`
+ type `utilisation` => `utilization`
Nathan Moinvaziri [Sat, 17 Jan 2026 18:10:49 +0000 (10:10 -0800)]
Read architecture name from binary in detect-arch.
Nathan Moinvaziri [Sat, 17 Jan 2026 16:43:26 +0000 (08:43 -0800)]
Remove architecture-specific compile definitions from build system
Nathan Moinvaziri [Sun, 18 Jan 2026 03:12:44 +0000 (19:12 -0800)]
Convert arch detection from preprocessor errors to runtime with header
Nathan Moinvaziri [Thu, 22 Jan 2026 01:10:14 +0000 (17:10 -0800)]
Move DoNotOptimize in benchmark loop to prevent it being optimized away
In some cases I've noticed incorrect 0 benchmark results from compiler
optimizing away len during hash benchmarks.
Nathan Moinvaziri [Tue, 20 Jan 2026 01:06:02 +0000 (17:06 -0800)]
Use MIN macro in a few more instances throughout the code
Nathan Moinvaziri [Thu, 8 Jan 2026 02:23:23 +0000 (18:23 -0800)]
Add ALIGN_UP and ALIGN_DOWN macros for readability
Robert Kausch [Fri, 23 Jan 2026 13:16:46 +0000 (14:16 +0100)]
Remove redundant include directives
Robert Kausch [Wed, 21 Jan 2026 23:15:08 +0000 (00:15 +0100)]
Make feature macro tests more consistent
- Test feature macros before any includes
- Use #ifdef over #if defined() for single macro tests
- Always include zbuild.h first
Robert Kausch [Mon, 19 Jan 2026 15:41:14 +0000 (16:41 +0100)]
Test feature macros in all implementation files
Nathan Moinvaziri [Thu, 15 Jan 2026 07:53:18 +0000 (23:53 -0800)]
Reduce code size and directly call in adler32_copy
There is no need for _impl when there is no const int COPY being used
Nathan Moinvaziri [Wed, 14 Jan 2026 23:39:34 +0000 (15:39 -0800)]
Fix oversized pair allocation in adler32_vmx
Nathan Moinvaziri [Fri, 16 Jan 2026 18:36:57 +0000 (10:36 -0800)]
Skip redundant literal checks in inflate_fast
When we know a code is not a literal we can skip the redundant check for
op == 0.
Nathan Moinvaziri [Fri, 16 Jan 2026 18:50:48 +0000 (10:50 -0800)]
Shared macros for inflate decoding trace statements
Previously, trace statements for some literal decodes were not being
reported in inflate_fast.
Nathan Moinvaziri [Fri, 16 Jan 2026 19:49:10 +0000 (11:49 -0800)]
Replace conditional byte swapping with portable host/LE conversion
Pavel P [Thu, 22 Jan 2026 16:43:43 +0000 (18:43 +0200)]
Remove unnecessary CHUNK_SIZE define - rm last ref
Pavel P [Thu, 22 Jan 2026 09:04:33 +0000 (11:04 +0200)]
Remove unnecessary CHUNK_SIZE define
Hans Kristian Rosbach [Thu, 22 Jan 2026 15:32:46 +0000 (16:32 +0100)]
Don't run testing with the extra corpora for RISC-V builds,
they take ~15min to finish a single job and they easily bog down
the whole CI queue when multiple pushes/PRs are queued.
Hans Kristian Rosbach [Wed, 21 Jan 2026 17:39:28 +0000 (18:39 +0100)]
Also upload coverage reports to coveralls.io
Hans Kristian Rosbach [Thu, 22 Jan 2026 12:51:44 +0000 (13:51 +0100)]
- Merge -O3 test into prefix test.
- Enable benchmarks in both prefix tests, to make sure they work with prefixes.
Hans Kristian Rosbach [Thu, 22 Jan 2026 10:39:49 +0000 (11:39 +0100)]
Split OSB builds out into separate workflow.
Enable verbose for cmake build stage.
Mika Lindqvist [Tue, 13 Jan 2026 21:07:56 +0000 (13:07 -0800)]
Add Windows ARM support for EOR3 feature detection and MSVC intrinsics
Nathan Moinvaziri [Tue, 13 Jan 2026 03:11:00 +0000 (19:11 -0800)]
Check for null return value from getauxval(AT_PLATFORM)
Brad Smith [Tue, 13 Jan 2026 02:38:35 +0000 (18:38 -0800)]
Guard FreeBSD/OpenBSD auxv calls with HAVE_SYS_AUXV_H check
Brad Smith [Tue, 13 Jan 2026 02:38:35 +0000 (18:38 -0800)]
Add elf_aux_info() support on FreeBSD/OpenBSD for PMULL and EOR3
Use elf_aux_info() to detect PMULL and EOR3 on FreeBSD and OpenBSD
aarch64.
Nathan Moinvaziri [Tue, 13 Jan 2026 03:25:57 +0000 (19:25 -0800)]
Remove unnecessary ARM_AUXV_HAS_NEON preprocessor check
Nathan Moinvaziri [Tue, 13 Jan 2026 02:39:13 +0000 (18:39 -0800)]
Remove unnecessary ARM_AUXV_HAS_CRC32 preprocessor check
Nathan Moinvaziri [Tue, 13 Jan 2026 03:13:22 +0000 (19:13 -0800)]
Use ARCH_64BIT preprocessor define in arm feature checks.
Nathan Moinvaziri [Tue, 13 Jan 2026 03:35:34 +0000 (19:35 -0800)]
Clean up arm feature check return values.
Nathan Moinvaziri [Thu, 8 Jan 2026 07:51:08 +0000 (23:51 -0800)]
Pre-calculate last vector check ptr in compare256 for sse2 and lsx
Pavel P [Tue, 20 Jan 2026 19:52:13 +0000 (21:52 +0200)]
Add "None" for sanitizer option
Pavel P [Tue, 20 Jan 2026 19:50:58 +0000 (21:50 +0200)]
Move cleanup undefs to insert_string_tpl.h
Vladislav Shchapov [Sat, 17 Jan 2026 13:46:50 +0000 (18:46 +0500)]
Fix integer overflow in gz_compress_mmap
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Hans Kristian Rosbach [Tue, 13 Jan 2026 21:01:44 +0000 (22:01 +0100)]
Fix CI configure workflow failure artifact upload
Hans Kristian Rosbach [Sun, 11 Jan 2026 21:50:21 +0000 (22:50 +0100)]
Expand configure script testing.
- Remove 2 redundant jobs.
- Add 1 new jobs.
- Test multiple non-conflicting options in more of the jobs.
Hans Kristian Rosbach [Sun, 11 Jan 2026 14:14:11 +0000 (15:14 +0100)]
Enable codecov for more CI jobs.
Disable codecov where -O1 or higher is requested, since codecov sets -O0.
Disable codecov where tests are not run.
Add comments for jobs where codecov is not enabled.
Hans Kristian Rosbach [Sun, 11 Jan 2026 17:17:26 +0000 (18:17 +0100)]
Use default clang version for most builds.
Let one job use clang-15, and a few clang-20
Hans Kristian Rosbach [Sun, 11 Jan 2026 22:05:51 +0000 (23:05 +0100)]
Combine ARM CI jobs testing non-NEON with non-ARMv8, as these have no common optimized
functions. For Aarch64, use no-opt config for testing bothwithout Neon/Armv8.
This reduced cmake and configure jobs by 3 each.
Also reorder and rename a few other jobs to try to use a common style.
Hans Kristian Rosbach [Sun, 11 Jan 2026 18:03:27 +0000 (19:03 +0100)]
Remove separate MMAP CI job by folding into another.
Remove separate REDUCED_MEM CI job by folding into another.
Make sure both are present for both GCC and Clang.
Add ZLIB_COMPAT to clang debug job.
Hans Kristian Rosbach [Sun, 11 Jan 2026 18:16:28 +0000 (19:16 +0100)]
Fix codecov parameter placement warnings.
Hans Kristian Rosbach [Sun, 11 Jan 2026 13:51:31 +0000 (14:51 +0100)]
Add configured compiler defines to informational output,
this eases debugging, especially in CI where further inspection is hard.
Hans Kristian Rosbach [Sun, 11 Jan 2026 13:49:06 +0000 (14:49 +0100)]
Improve detection of compiler code coverage support.
Hans Kristian Rosbach [Thu, 15 Jan 2026 22:42:19 +0000 (23:42 +0100)]
Unify baseline benchmarking for both adler32 and crc32.
Fix missing benchmarks of _copy functions for some platforms.
Hans Kristian Rosbach [Wed, 14 Jan 2026 20:18:56 +0000 (21:18 +0100)]
Unify compare256/compare256_rle benchmarks and add rolling misalignment
Hans Kristian Rosbach [Wed, 14 Jan 2026 16:18:02 +0000 (17:18 +0100)]
Unify adler32/crc32 benchmarks and add rotating misalignment
Add aligned benchmarks for adler32/crc32
Hans Kristian Rosbach [Wed, 14 Jan 2026 20:20:47 +0000 (21:20 +0100)]
Use aligned alloc for insert_string benchmark
Hans Kristian Rosbach [Wed, 14 Jan 2026 22:37:34 +0000 (23:37 +0100)]
Fix name collision in inflate benchmark
Vladislav Shchapov [Tue, 13 Jan 2026 20:02:47 +0000 (01:02 +0500)]
Make deflate output deterministic if PREFIX3(stream) is reused after deflateReset
Co-authored-by: Marcin Kowalczyk <QrczakMK@gmail.com>
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Nathan Moinvaziri [Tue, 13 Jan 2026 18:04:55 +0000 (10:04 -0800)]
Prefix macros with z in crc32_vpclmulqdq for clarity
Nathan Moinvaziri [Tue, 13 Jan 2026 16:43:26 +0000 (08:43 -0800)]
Use epi32 variants for older MSVC (v141/v140) to avoid cast warnings
Nathan Moinvaziri [Mon, 12 Jan 2026 01:16:36 +0000 (17:16 -0800)]
Fix cast truncates constant value warnings with ternarylogic on Win v141
Nathan Moinvaziri [Sun, 11 Jan 2026 22:53:45 +0000 (14:53 -0800)]
Use epi64 intrinsics for VPCLMULQDQ operations
PCLMULQDQ operates on 64-bit polynomial elements, so use epi64 intrinsics
throughout to provide accurate type information to the compiler.
Nathan Moinvaziri [Sun, 11 Jan 2026 20:05:46 +0000 (12:05 -0800)]
Use masked load/store in partial folding in crc32_vpclmulqdq.
Nathan Moinvaziri [Sun, 11 Jan 2026 20:03:26 +0000 (12:03 -0800)]
Combine final_fold function to remove extra len branch
Nathan Moinvaziri [Sun, 11 Jan 2026 19:32:44 +0000 (11:32 -0800)]
Eliminate extra vmovdqu instruction folding xmm into zmm.
Fixed by using _mm512_castsi128_si512() and removing redundant insert.
Nathan Moinvaziri [Sat, 3 Jan 2026 07:47:34 +0000 (23:47 -0800)]
Clean up variable names for readability in zmm path.
Nathan Moinvaziri [Sat, 3 Jan 2026 02:14:24 +0000 (18:14 -0800)]
Don't compile in Chorba for vpclmulqdq because it is never used
By the time Chorba if statement is hit, len is already reduced to < 256.
Nathan Moinvaziri [Sun, 11 Jan 2026 19:34:45 +0000 (11:34 -0800)]
Combine partial and final fold and reduce the number of operations
We do the partial fold after we have folded the crc32 state into a single
128-bit value.
Nathan Moinvaziri [Fri, 2 Jan 2026 23:03:33 +0000 (15:03 -0800)]
Generate shuffle masks in registers for partial_fold.
Faster than loading table into memory.
Nathan Moinvaziri [Fri, 2 Jan 2026 22:47:53 +0000 (14:47 -0800)]
Use mm_blend_epi16 in crc32_(v)pclmulqdq final reduction
This is the preferred operation mentioned in
https://www.corsix.org/content/alternative-exposition-crc32_4k_pclmulqdq
Nathan Moinvaziri [Sun, 11 Jan 2026 20:17:34 +0000 (12:17 -0800)]
Use ternarylogic when available in crc32_vpclmulqdq.
Nathan Moinvaziri [Sat, 3 Jan 2026 02:26:16 +0000 (18:26 -0800)]
Hoist folding constants to function scope to avoid repeated loads
Nathan Moinvaziri [Sun, 11 Jan 2026 21:28:20 +0000 (13:28 -0800)]
Batch PCLMULQDQ operations to reduce latency
Nathan Moinvaziri [Fri, 2 Jan 2026 08:46:36 +0000 (00:46 -0800)]
Move remaining fold calls before load to hide latency
All fold calls are now consistent in this respect.
Nathan Moinvaziri [Fri, 2 Jan 2026 03:26:14 +0000 (19:26 -0800)]
Revert "Move fold calls closer to last change in xmm_crc# variables."
The fold calls were in a better spot before begin located after loads to
reduce latency.
This reverts commit
cda0827b6d522acdb2656114e2c4b7b18b6c1c20 .
Nathan Moinvaziri [Wed, 31 Dec 2025 23:18:38 +0000 (15:18 -0800)]
Remove old comments about crc32 folding from crc32 benchmark.
Nathan Moinvaziri [Fri, 2 Jan 2026 06:49:56 +0000 (22:49 -0800)]
Remove unnecessary casts from crc32_(v)pclmulqdq.
Originally, some compilers and older versions of intrinsics libraries only
provided _mm_xor_ps (for __m128) and not _mm_xor_si128 (for __m128i).
Developers would cast integer vectors to float vectors to use the XOR
operation, then cast back. Modern compilers and intrinsics headers provide
_mm_xor_si128, making these casts unnecessary.
Nathan Moinvaziri [Tue, 13 Jan 2026 00:47:43 +0000 (16:47 -0800)]
Simplify CRC32 complement operations using bitwise NOT operator
Nathan Moinvaziri [Tue, 13 Jan 2026 00:44:48 +0000 (16:44 -0800)]
Fix space indentation formatting in crc32_zbc
Nathan Moinvaziri [Sun, 11 Jan 2026 21:11:08 +0000 (13:11 -0800)]
Add fallback for __has_builtin to prevent unmatched parenthesis warning
Occurs on MSVC.
Nathan Moinvaziri [Tue, 13 Jan 2026 17:01:11 +0000 (09:01 -0800)]
Add ARM __builtin_bitreverse16 fallback implementation for GCC.
Nathan Moinvaziri [Sun, 11 Jan 2026 00:22:43 +0000 (16:22 -0800)]
Remove compiler check for builtin_bitreverse16 since we check in code
And we have a generic fallback
Nathan Moinvaziri [Sat, 10 Jan 2026 01:38:55 +0000 (17:38 -0800)]
__builtin_bitreverse16 CMake compiler check fails for GCC 13
Provide a final check for __builtin_bitreverse16 in code.
Vladislav Shchapov [Wed, 7 Jan 2026 19:30:19 +0000 (00:30 +0500)]
Use GCC's may_alias attribute for access to buffers in crc32_chorba
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Hans Kristian Rosbach [Tue, 13 Jan 2026 14:32:53 +0000 (15:32 +0100)]
Add Z_UNREACHABLE compiler hint
Hans Kristian Rosbach [Tue, 13 Jan 2026 13:55:37 +0000 (14:55 +0100)]
Fix (impossible) infinite loop in gz_fetch() detected by GCC-14 static analyzer.
According to the comment, gz_fetch() also assumes that state->x.have == 0, so
lets add an Assert to that effect.
Hans Kristian Rosbach [Mon, 12 Jan 2026 19:52:47 +0000 (20:52 +0100)]
Update static analyzer from targeting GCC v10 to v14
Mika T. Lindqvist [Mon, 12 Jan 2026 01:42:13 +0000 (03:42 +0200)]
Fix symbol mangling so symbols in shared library are exported correctly
* We need to mangle symbols in the map file, otherwise none of the symbols are exported
* Fix gz_error name conflict with zlib-ng API
Nathan Moinvaziri [Mon, 12 Jan 2026 22:57:50 +0000 (14:57 -0800)]
Remove extra indirection calling into crc32_z functions.
This also prevents the double-checking of buf == NULL.
Nathan Moinvaziri [Mon, 12 Jan 2026 19:18:56 +0000 (11:18 -0800)]
Clean up buf == NULL handling on adler32 functions and test strings.
Nathan Moinvaziri [Sun, 11 Jan 2026 00:13:54 +0000 (16:13 -0800)]
Fixed UB in adler32_avx512_copy storemask when len is 0.
Nathan Moinvaziri [Thu, 8 Jan 2026 19:02:08 +0000 (11:02 -0800)]
Rename and reorder properties in hash_test.
Nathan Moinvaziri [Sat, 10 Jan 2026 18:29:05 +0000 (10:29 -0800)]
Merge adler32 and crc32 hash test strings.
Nathan Moinvaziri [Wed, 7 Jan 2026 08:39:25 +0000 (00:39 -0800)]
Add adler32_copy unit test
Nathan Moinvaziri [Wed, 7 Jan 2026 08:34:02 +0000 (00:34 -0800)]
Separate adler32 test strings into their own source header
Hans Kristian Rosbach [Sat, 10 Jan 2026 21:08:13 +0000 (22:08 +0100)]
Simplify the gzread.c name mangling workaround by splitting out just
the workaround into a separate file. This allows us to browse gzread.c
with code highlighting and it allows codecov to record coverage data.
Hans Kristian Rosbach [Sat, 10 Jan 2026 22:32:49 +0000 (23:32 +0100)]
Don't count tests/tools towards overall project coverage.
Set project coverage target to 80%.
Loosen project coverage reduction threshold to 10% to avoid failing coverage
tests when CI happens to run on hosts that do not support AVX-512.
Set component coverage reduction thresholds low, except for common and
arch_x86 that need higher limits due to the AVX-512 CI hosts.
Vladislav Shchapov [Fri, 9 Jan 2026 20:02:11 +0000 (01:02 +0500)]
Update to GoogleTest 1.16.0.
This requires minimum CMake 3.13 and C++14, this matches nicely with zlib-ng 2.3.x requirements.
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Vladislav Shchapov [Fri, 9 Jan 2026 19:47:20 +0000 (00:47 +0500)]
Replace deprecated FetchContent_Populate with FetchContent_MakeAvailable
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Vladislav Shchapov [Fri, 9 Jan 2026 19:01:03 +0000 (00:01 +0500)]
Remove always TRUE or FALSE CMake version checks
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Vladislav Shchapov [Fri, 9 Jan 2026 18:55:13 +0000 (23:55 +0500)]
Set minimum and upper compatible CMake version
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Hans Kristian Rosbach [Sat, 10 Jan 2026 20:31:06 +0000 (21:31 +0100)]
deflateinit was still checking for failed secondary allocations, this is
no longer necessary as we only allocate a single buffer and has already
been checked for failure before this.
Vladislav Shchapov [Thu, 8 Jan 2026 19:27:55 +0000 (00:27 +0500)]
Explicitly define the __SSE__ and __SSE2__ macros, since starting with MSVS 2012 the default instruction set is SSE2
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>