NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2831 most downloaded on PyPI
Faster zlib and gzip compatible compression and decompression by providing python bindings for the ISA-L ibrary.
Last release 1 years ago
10 Sep 2025
Release timing varies
gaps range from 2 weeks to 6 months
Nearly every release is documented
notes for 24 of 24 stable releases
7 versions withdrawn
withdrawn after publishing
6 years old
31 releases · first in 2020
One column per quarter.
Python 3.8 and 3.9 are no longer supported.
Use upstream ISA-L version 2.31.1 which includes patches to make installation on MacOS ARM64 possible.
Fix a bug where flushing files when writing in threaded mode did not work properly.
Include a patched ISA-L version 2.31. The applied patches make compilation and wheelbuilding on MacOS ARM64 possible.
igzip.compress function, which should leadFix a bug where streams that were passed to igzip_threaded.open where closed.
Fix a bug where compression levels for IGzipFile where checked in read mode.
__close__ function when a threadedFix a bug where append mode would not work when using igzip_threaded.open .
igzip_threaded.open.Fix a bug where a filehandle remained opened when igzip_threaded.open was used for writing with a wrong compression level.
igzip_threaded.openFix a memory leak in the GzipReader.readall implementation.
Make a special case for threads==1 in igzip_threaded.open for writing files. This now combines the writing and compression thread for less overhead.
igzip_threaded.open for writingigzip_threaded.open writing.Fix several errors related to unclosed files and buffers.
Drop support for python 3.7 and PyPy 3.8 as these are no longer supported. Add testing and support for python 3.12 and PyPy 3.10.
isal.igzip_threaded module which has an
open function.
This can be used to read and write large files in a streaming fashion
while escaping the GIL.igzip._IGzipReader has been rewritten in C. As a result the
overhead of decompressing files has significantly been reduced and
python -m isal.igzip is now very close to the C igzip application.igzip._IGZipReader in C is now used in igzip.decompress. The
_GzipReader also can read from objects that support the buffer protocol.
This has reduced overhead significantly.Gzip headers are now actively checked for a BGZF extra field. If found the block size is taken into account when decompressing. This has further impro
gzip.decompress function.Bgzip files are now detected and a smaller reading buffer is used to accomodate the fact that bgzip blocks are typically less than 64K. (Unlike normal
isal_zlib.decompressobj and
igzip_lib.IgzipDecompressor.Added tests and support for Python 3.11.
Fixed failing tests and wheel builds for PyPy.
Python-isal has been rewritten as a C-extension (first implementation was in Cython). This has made the library faster in many key areas.
Python-isal has been rewritten as a C-extension (first implementation was in Cython). This has made the library faster in many key areas.
Since the module now mostly contains code copied from CPython and then modified to work with ISA-L the license has been changed to the Python Software Foundation License version 2.
Python versions lower than 3.7 are no longer supported. Python 3.6 is out of support since December 2021.
Stub files with type information have now been updated to correctly display positional-only arguments.
Expose READ and WRITE constants on the igzip module. These are
also present in Python's stdlib gzip module and exposing them allows for
better drop-in capability of igzip. Thanks to @alexander-beedie in
https://github.com/pycompression/python-isal/pull/115.
A --no-name flag has been added to python -m isal.igzip.
Reduced wheel size by not including debug symbols in the binary. Thanks to @marcelm in https://github.com/pycompression/python-isal/pull/108.
Cython is no longer required as a build dependency.
isal_zlib.compressobj and isal_zlib.decompressobj are now about six times faster.
igzip.decompress has 30% less overhead when called.
Error structure has been simplified. There is only IsalError which has
Exception as baseclass instead of OSError. isal_zlib.IsalError,
igzip_lib.IsalError, isal_zlib.error and igzip_lib.error are
all aliases of the same error class.
GzipReader now uses larger input and output buffers (128k) by default and
IgzipDecompressor.decompress has been updated to allocate maxsize buffers
when these are of reasonable size, instead of growing the buffer to maxsize
on every call. This has improved gzip decompression speeds by 7%.
Patch statically linked included library (ISA-L 2.30.0) to fix the following:
Python-isal shows up in Python profiler reports.
Support and tests for Python 3.10 were added.
Due to a change in the deployment process wheels should work for older versions of pip.
Added a crc property to the IgzipDecompressor class. Depending on the
decompression flag chosen, this will update with an adler32 or crc32
checksum.
All the decompression NO_HDR flags on igzip_lib were incorrectly documented. This is now fixed.
Fixed an issue which occurred rarely that caused IgzipDecompressor's unused_data to report back incorrectly. This caused checksum errors when reading
In this release the python -m isal.igzip relatively slow decompression rate has been improved in both speed and usability. Previously it was 19% slowe
In this release the python -m isal.igzip relatively slow decompression rate
has been improved in both speed and usability. Previously it was 19% slower
than igzip when used with the -d flag for decompressing, now it is
just 8% slower. Also some extra flags were added to make it easier to select
the output file.
python -m isal.igzip
command line utility and provide the -f or --force flags to force
overwriting.-o and --output flags to the python -m isal.igzip command
line utility to allow the user to select the destination of the output file.igzip_lib and isal_zlib to disappear in the
documentation and the REPL.python -m isal.igzip so it is now closer
to speeds reached with igzip.READ_BUFFER_SIZE attribute to igzip which allows setting the
amount of raw data that is read at once.igzip_lib.IgzipDecompressor object which can decompress without
using an unconsumed_tail and is therefore more efficient.Added an igzip_lib module which allows more direct access to ISA-L's igzip_lib API. This allows features such as headerless compression and decompress
igzip_lib module which allows more direct access to ISA-L's
igzip_lib API. This allows features such as headerless compression and
decompression, as well as setting the memory levels manually.Fix a bug where a AttributeError was triggered when zlib.Z_RLE or zlib.Z_FIXED were not present.
Fix a bug where multi-member gzip files where read incorrectly due to an offset error. This was caused by ISA-L's decompressobj having a small bitbuff
Due to changes in this version igzip.compress, igzip.decompress, isal_zlib.compress, isal_zlib.crc32 and isal_zlib.adler32 perform always faster than
Due to changes in this version igzip.compress, igzip.decompress, isal_zlib.compress, isal_zlib.crc32 and isal_zlib.adler32 perform always faster than their gzip and zlib counterparts. isal_zlib.decompress is still slower for very small data <128 bytes, but faster in all other cases.
igzip.compress and igzip.decompress by improving the
implementation.isal_zlib library was removed:
ISAL_DEFAULT_HIST_BITS.This release fixes several bugs in isal_zlib. It now is a proper drop-in replacement for zlib. This is a major milestone towards the 1.0.0 release.
This release fixes several bugs in isal_zlib. It now is a proper drop-in replacement for zlib. This is a major milestone towards the 1.0.0 release.
igzip module for the unconsumed_tail
and unused_data bugs. igzip._IGzipReader now functions the same
as gzip._GzipReader with only a few calls replaced with isal_zlib
calls for speed.unused_data and unconsumed_tail on
isal_zlib.Decompress objects.
It works the same as in CPython's zlib now.isal_zlib.Compress and
isal_zlib.Decompress objects.
It works the same as in CPython's zlib now.Fix a crash that occurs when opening a file that did not end in .gz while outputting to stdout using python -m isal.igzip.
.gz while
outputting to stdout using python -m isal.igzip.Python-isal is now cross-platform thanks to adding Windows support in this release.
Python-isal is now cross-platform thanks to adding Windows support in this release.
python -m gzip's behaviour has been changed since fixing bug:
bpo-43316 <https://bugs.python.org/issue43316>_. This bug was not present
in python -m isal.igzip but it handled the error differently than the
solution in CPython. This is now corrected and python -m isal.igzip
handles the error the same as the fixed python -m gzip.Fix a bug where negative integers were not allowed for the adler32 and crc32 functions in isal_zlib.
adler32 and
crc32 functions in isal_zlib.isal_zlib and _isal modules.
Package is now tested with mypy to ensure correct type information.-b flag was added to adjust the buffer size for benchmarks.-c or --stdout flag was added to the CLI interface of isal.igzip.
This allows it to behave more like the gzip or pigz command line
interfaces.Move wheel building to cibuildwheel on github actions CI. Wheels are now provided for Mac OS as well.
Set included ISA-L library at version 2.30.0.
Fixed a bug where writing of the gzip header would crash if an older version of Python 3.7 was used such as on Debian or Ubuntu. This is due to differ
setup.py to list setuptools as a requirement.The first release for python-isal includes a implementation of the igzip module that is compliant with the tests for CPython's gzip module. The zlib m
The first release for python-isal includes a implementation of the igzip module that is compliant with the tests for CPython's gzip module. The zlib module has still some issues. This release was made to allow easy installation for people who want to enjoy the speed improvements of the igzip module over the gzip module.
python -m isal.igzipYour coding agent can read these notes before it upgrades. Set up the MCP server →