Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This release contains two years of development and improvements to zlib-ng, as well as fixes and changes inherited from zlib. The 2.1.x version series has new targeted minumum buildsystem versions, as detailed on the Wiki https://github.com/zlib-ng/zlib-ng/wiki Buildsystem: - Many improvements to the CMake scripts. - Improved support for detecting memory alignment functions. - Improved support for unaligned access by letting the compiler promote code to unaligned if supported by the CPU. - Remove x86 cpu feature detection for TZCNT, safely fallback to BSF. - Enable using AVX512 intrinsics with GCC <9. Optimizations and Enhancements: - Decompression is a lot faster (56% faster measured on AVX2-capable x86-64) - Compresson is improved for Level 9, at the cost of a little performance. - Compression is improved for Level 3, by switching from deflate_fast to deflate_medium. - Levels 3 and 4 have been reconfigured to provide a better gradual tradeoff for speed/compression between levels 2 and 5. - Deflate_quick (Level 1) has been improved to default to a bigger windowsize and support changing the window size like the other levels. New instruction set optimizations: - Adler32 implementation using AVX512, AVX512-VINNI, VMX. - CRC32-B implementation using VPCLMULQDQ & IBM-Z. - Slide hash implementation using VMX. - Compare256 implementations using SSE2, Neon, & POWER9. - Inflate chunk copying using SSSE3 & VSX. Compatibility and Porting: - CRC-32 computation changes from madler/zlib. zlib-ng/zlib-ng#a6155234 - Compatible and up-to-date with zlib 1.2.13. - Removed the usage of macros in zlib-ng.h, making life easier for languages that want to call the C functions without having the C preprocessor (Python, etc). Improved support more environments: - Apple M1 - vcpkg - Emscripten Testing: - Tests have been converted to use GTest. Many new tests have also been added. - Gbench support has been added to easily benchmark changes to performance-critical functions. Misc: - Several pieces of core code has been restructured or rewritten. - Too many changes to list here, see the git commit log for the full list of changes. Deprecations: - Configure no longer has the full range of tests. - NMake is now longer actively supported and tested, it is now community supported. - See the wiki for minimum builsystem versions and deprecations https://github.com/zlib-ng/zlib-ng/wiki
- Loading branch information