Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.1.0 Beta1 #1475

Merged
merged 1 commit into from
Apr 28, 2023
Merged

2.1.0 Beta1 #1475

merged 1 commit into from
Apr 28, 2023

Conversation

Dead2
Copy link
Member

@Dead2 Dead2 commented Apr 25, 2023

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-VNNI, 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 no longer actively supported and tested, it is now community supported.
  • See the wiki for minimum build system versions and deprecations https://github.com/zlib-ng/zlib-ng/wiki

@Dead2 Dead2 added the Needs testing Please help test this label Apr 25, 2023
@Dead2 Dead2 force-pushed the 2.1.0-beta1 branch 2 times, most recently from 974584d to 47c95e4 Compare April 25, 2023 11:17
@codecov
Copy link

codecov bot commented Apr 25, 2023

Codecov Report

Patch coverage has no change and project coverage change: -0.02 ⚠️

Comparison is base (2d5d0a2) 83.17% compared to head (603fcb8) 83.15%.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1475      +/-   ##
===========================================
- Coverage    83.17%   83.15%   -0.02%     
===========================================
  Files          130      130              
  Lines        10766    10766              
  Branches      2765     2765              
===========================================
- Hits          8955     8953       -2     
- Misses        1136     1138       +2     
  Partials       675      675              
Flag Coverage Δ
macos_clang 42.97% <ø> (ø)
macos_gcc 72.98% <ø> (ø)
ubuntu_clang 82.28% <ø> (ø)
ubuntu_clang_debug 81.94% <ø> (ø)
ubuntu_clang_inflate_allow_invalid_dist 81.70% <ø> (-0.23%) ⬇️
ubuntu_clang_inflate_strict 82.27% <ø> (+0.22%) ⬆️
ubuntu_clang_mmap 83.63% <ø> (+1.02%) ⬆️
ubuntu_clang_pigz 14.15% <ø> (ø)
ubuntu_clang_pigz_no_optim 11.55% <ø> (ø)
ubuntu_clang_pigz_no_threads 13.97% <ø> (ø)
ubuntu_clang_reduced_mem 83.80% <ø> (+1.02%) ⬆️
ubuntu_gcc 75.19% <ø> (+0.74%) ⬆️
ubuntu_gcc_aarch64 76.68% <ø> (ø)
ubuntu_gcc_aarch64_compat_no_opt 75.01% <ø> (+0.01%) ⬆️
ubuntu_gcc_aarch64_no_acle 75.55% <ø> (ø)
ubuntu_gcc_aarch64_no_neon 75.54% <ø> (ø)
ubuntu_gcc_armhf 76.75% <ø> (ø)
ubuntu_gcc_armhf_compat_no_opt 74.98% <ø> (ø)
ubuntu_gcc_armhf_no_acle 76.70% <ø> (ø)
ubuntu_gcc_armhf_no_neon 76.59% <ø> (ø)
ubuntu_gcc_armsf 74.08% <ø> (ø)
ubuntu_gcc_armsf_compat_no_opt 73.54% <ø> (-0.02%) ⬇️
ubuntu_gcc_benchmark 73.20% <ø> (ø)
ubuntu_gcc_compat_no_opt 76.10% <ø> (ø)
ubuntu_gcc_compat_sprefix 73.06% <ø> (ø)
ubuntu_gcc_m32 73.29% <ø> (+0.58%) ⬆️
ubuntu_gcc_mingw_i686 72.95% <ø> (ø)
ubuntu_gcc_mingw_x86_64 72.95% <ø> (-0.16%) ⬇️
ubuntu_gcc_no_avx2 73.71% <ø> (+0.05%) ⬆️
ubuntu_gcc_no_ctz 74.12% <ø> (ø)
ubuntu_gcc_no_ctzll 74.14% <ø> (ø)
ubuntu_gcc_no_pclmulqdq 73.65% <ø> (+0.06%) ⬆️
ubuntu_gcc_no_sse2 73.86% <ø> (ø)
ubuntu_gcc_no_sse42 74.14% <ø> (ø)
ubuntu_gcc_o1 73.49% <ø> (ø)
ubuntu_gcc_osb ∅ <ø> (∅)
ubuntu_gcc_pigz 38.33% <ø> (ø)
ubuntu_gcc_pigz_aarch64 39.27% <ø> (ø)
ubuntu_gcc_ppc 73.35% <ø> (ø)
ubuntu_gcc_ppc64 73.82% <ø> (ø)
ubuntu_gcc_ppc64le 73.90% <ø> (ø)
ubuntu_gcc_ppc_no_power8 74.04% <ø> (ø)
ubuntu_gcc_s390x 74.22% <ø> (ø)
ubuntu_gcc_s390x_dfltcc 71.43% <ø> (ø)
ubuntu_gcc_s390x_dfltcc_compat 73.28% <ø> (ø)
ubuntu_gcc_s390x_no_crc32 74.01% <ø> (ø)
ubuntu_gcc_sparc64 74.26% <ø> (ø)
ubuntu_gcc_sprefix 73.30% <ø> (+0.42%) ⬆️
win64_gcc 73.36% <ø> (ø)
win64_gcc_compat_no_opt 74.19% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
zutil.c 85.00% <ø> (ø)

... and 3 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@KungFuJesus
Copy link
Contributor

Minor typo if this is a prospective public release announcement, VINNI should be VNNI.

@mtl1979
Copy link
Collaborator

mtl1979 commented Apr 26, 2023

builsystem on the last line should likely be build system...

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-VNNI, 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 no longer actively supported and tested, it is now community supported.
- See the wiki for minimum build system versions and deprecations https://github.com/zlib-ng/zlib-ng/wiki
@Dead2 Dead2 merged commit 1c2698f into develop Apr 28, 2023
231 of 243 checks passed
@Dead2 Dead2 deleted the 2.1.0-beta1 branch April 28, 2023 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs testing Please help test this
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants