Zlib
====
Legacy data compression library - Consider using zlib-ng instead
.. toctree::
:maxdepth: 1
:caption: Contents:
Overview
--------
`Zlib `_ is a general-purpose, lossless data-compression library. However, it is now considered legacy on Discoverer and clusters.
.. warning::
We strongly recommend using :doc:`zlib-ng` with its compatibility mode (zlib-ng-compat) instead of zlib.
Zlib-ng-compat provides:
* Drop-in replacement for zlib
* Significant performance improvements through SIMD optimizations
* Automatic CPU feature detection and optimization
* Full API compatibility with zlib
To switch to zlib-ng-compat, simply load its module instead of zlib::
$ module load zlib-ng-compat/
Also, refer to the :doc:`zlib-ng` documentation for more details.
Available versions
------------------
To view available zlib versions::
$ module load zlib
Build recipes and configuration details are maintained in our GitLab repository:
* `Build Recipes `_
Compiler support
----------------
Each zlib version is built against multiple compiler sets, though we recommend using :doc:`zlib-ng` instead.
Still supported builds (but soon to be retired)::
$ module avail zlib/*/*llvm # LLVM build
$ module avail zlib/*/*gcc # GCC build
Retired builds (but still available in the public software repository)::
$ module avail zlib/*/*intel # Intel oneAPI build
$ module avail zlib/*/*nvidia # NVIDIA HPC SDK build
$ module avail zlib/*/*aocc # AMD AOCC build
Migration to zlib-ng
--------------------
For dynamically linked programs::
$ module load zlib-ng-compat/
$ ./your_program # will automatically use libz.so from zlib-ng-compat installation
For programs requiring recompilation against the zlib-ng-compat library::
$ module load zlib-ng-compat/
$ -lz
.. note::
The zlib-ng-compat provides the same API and ABI as zlib, making it a safe replacement
with significant performance benefits through CPU-specific optimizations based on SIMD instructions.
Getting Help
------------
For additional assistance:
* See the :doc:`help` documentation