Cyber Week 2025: If you wish to enjoy the site ad-free, multi-page articles on a single page, and other benefits, consider joining Phoronix Premium. This week only is our Cyber Week promotion to help support all of our Linux/open-source hardware and software operations while enjoying the added premium benefits at a discounted rate. Thanks for your consideration and support this holiday season with providing daily original content for over 21 years.
Zlib-ng 2.3.1 is out today as the first stable release in the v2.3 series for this Zlib replacement that carries a variety of performance optimizations for speedier compression/decompression.
Zlib-ng 2.3.1 brings yet more performance optimizations and one of the big drivers to this new release is the Corba CRC32 code:
“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.”
The new zlib-ng release also adds an AVX-512 version of COMPARE256, various AVX2 improvements, and other CPU optimizations.
Per this discussion, the Zlib-ng 2.3 performance is looking quite appealing compared to Zlib and prior Zlib-ng releases:
Zlib-ng 2.3.1 can be downloaded from GitHub.
