Faster zlib and gzip compatible compression and decompression by providing python bindings for the isa-l library.
This package provides Python bindings for the isa-l library. The Intel Infrastructure Storage Acceleration Library (isa-l) implements several key algorithms in assembly language. This includes a variety of functions to provide zlib/gzip-compatible compression.
python-isal provides the bindings by offering an isal_zlib and
igzip module which are usable as drop-in replacements for the zlib
and gzip modules from the stdlib (with some minor exceptions, see below).
isa-l version 2.26.0 or higher is needed. This includes bindings for the adler32 function.
isa-l is available in numerous Linux distro's as well as on conda via the conda-forge channel. Checkout the ports documentation on the isa-l project wiki to find out how to install it.
The latest development version of python-isal can be installed with
pip install git+https://github.com/rhpvorderman/python-isal.git
Python-isal has faster versions of the stdlib's zlib and gzip module
these are called isal_zlib and igzip respectively.
They can be imported as follows
from isal import isal_zlib
from isal import igzipisal_zlib and igzip were meant to be used as drop in replacements so
their api and functions are the same as the stdlib's modules. Except where
isa-l does not support the same calls as zlib (See differences below).
python -m isal.igzip implements a simple gzip-like command line
application (just like python -m gzip).
- Compression level 0 in
zlibandgzipmeans no compression, while inisal_zlibandigzipthis is the lowest compression level. This is a design choice that was inherited from the isa-l library. - Compression levels range from 0 to 3, not 1 to 9.
isal_zlib.crc32andisal_zlib.adler32do not support negative numbers for the value parameter.zlib.Z_DEFAULT_STRATEGY,zlib.Z_RLEetc. are exposed asisal_zlib.Z_DEFAULT_STRATEGY,isal_zlib.Z_RLEetc. for compatibility reasons. However,isal_zlibonly supports a default strategy and will give warnings when other strategies are used.zlibsupports different memory levels from 1 to 9 (with 8 default).isal_zlibsupports memory levels smallest, small, medium, large and largest. These have been mapped to levels 1, 2-3, 4-6, 7-8 and 9. Soisal_zlibcan be used with zlib compatible memory levels.isal_zlibonly supportsFLUSH,SYNC_FLUSHandFULL_FLUSHFINISHis aliased toFULL_FLUSH(and works correctly as such).isal_zlibhas acompressobjanddecompressobjimplementation. However, the unused_data and unconsumed_tail for the Decompress object, only work properly when using gzip compatible compression. (25 <= wbits <= 31).- The flush implementation for the Compress object behavious differently from the zlib equivalent.
Please make a PR or issue if you feel anything can be improved. Bug reports are also very welcome. Please report them on the github issue tracker.