]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
2.1.0 Beta1 release 2.1.0-beta1
authorHans Kristian Rosbach <hk-git@circlestorm.org>
Tue, 25 Apr 2023 10:37:32 +0000 (12:37 +0200)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Fri, 28 Apr 2023 09:38:36 +0000 (11:38 +0200)
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

Makefile.in
zlib-ng.h.in
zlib.h.in
zutil.c

index 4bfb6313e272efb833dacc3f7cd410b728a9fc59..8ca8c81da7ea08723973106c651efa809dafc9e1 100644 (file)
@@ -29,7 +29,7 @@ TEST_LIBS=$(LIBNAME1).a
 LDSHARED=$(CC)
 LDSHAREDFLAGS=-shared
 
-VER=2.1.0.devel
+VER=2.1.0.beta1
 VER1=2
 
 STATICLIB=$(LIBNAME1).a
index a1536b76d20441078ad25bae216acef36fdcf74b..7f68f7a337e4dd8eba6041458d8988e0386be950 100644 (file)
@@ -48,8 +48,8 @@
 extern "C" {
 #endif
 
-#define ZLIBNG_VERSION "2.1.0.devel"
-#define ZLIBNG_VERNUM 0x02010000L   /* MMNNRRMS: major minor revision status modified */
+#define ZLIBNG_VERSION "2.1.0.beta1"
+#define ZLIBNG_VERNUM 0x02010010L   /* MMNNRRSM: major minor revision status modified */
 #define ZLIBNG_VER_MAJOR 2
 #define ZLIBNG_VER_MINOR 1
 #define ZLIBNG_VER_REVISION 0
index 311cd34e8c047f962477ff8c452e8339978a8ed0..6da533c402e22296d348d95e07220fe8dadc3bbc 100644 (file)
--- a/zlib.h.in
+++ b/zlib.h.in
 extern "C" {
 #endif
 
-#define ZLIBNG_VERSION "2.1.0.devel"
-#define ZLIBNG_VERNUM 0x02010000L   /* MMNNRRMS: major minor revision status modified */
+#define ZLIBNG_VERSION "2.1.0.beta1"
+#define ZLIBNG_VERNUM 0x02010010L   /* MMNNRRSM: major minor revision status modified */
 #define ZLIBNG_VER_MAJOR 2
 #define ZLIBNG_VER_MINOR 1
 #define ZLIBNG_VER_REVISION 0
-#define ZLIBNG_VER_STATUS 0         /* 0=devel, 1-E=beta, F=Release */
+#define ZLIBNG_VER_STATUS 1         /* 0=devel, 1-E=beta, F=Release */
 #define ZLIBNG_VER_MODIFIED 0       /* non-zero if modified externally from zlib-ng */
 
 #define ZLIB_VERSION "1.2.13.zlib-ng"
diff --git a/zutil.c b/zutil.c
index 742c33ac3d9bd21a00d676457ddb29145b36efac..0fd14f4ef3a229cc83ae85da6833b7269adc7999 100644 (file)
--- a/zutil.c
+++ b/zutil.c
@@ -21,7 +21,7 @@ z_const char * const PREFIX(z_errmsg)[10] = {
 };
 
 const char PREFIX3(vstring)[] =
-    " zlib-ng 2.1.0.devel forked from zlib";
+    " zlib-ng 2.1.0.beta1";
 
 #ifdef ZLIB_COMPAT
 const char * Z_EXPORT zlibVersion(void) {