Releases: pycompression/python-isal
Version 1.3.0
- 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
improved bgzf decompression speed by 5% on some files compared to the
more generic solution of 1.2.0. - Integrated CPython 3.11 code for reading gzip headers. This leads to more
commonality between the python-isal code and the upstream gzip.py code.
This has enabled the change above. It comes at the cost of a slight increase
in overhead at thegzip.decompress
function.
Version 1.2.0
- 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 gzip files that consist of one block that spans the entire file.)
This has reduced decompression time for bgzip files by roughly 12%. - Speed-up source build by using ISA-L Unix-specific makefile rather than the
autotools build. - Simplify build setup. ISA-L release flags are now used and not
overwritten with python release flags when building the included static
library. - Fix bug where zdict's could not be set for
isal_zlib.decompressobj
and
igzip_lib.IgzipDecompressor
. - Escape GIL when calling inflate, deflate, crc32 and adler32 functions just
like in CPython. This allows for utilising more CPU cores in combination
with the threading module. This comes with a very slight cost in efficiency
for strict single-threaded applications.
Version 1.1.0
version 1.1.0
- Added tests and support for Python 3.11.
Version 1.0.1
- Fixed failing tests and wheel builds for PyPy.
Version 1.0.0
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
andWRITE
constants on theigzip
module. These are
also present in Python's stdlibgzip
module and exposing them allows for
better drop-in capability ofigzip
. Thanks to @alexander-beedie in
#115. -
A
--no-name
flag has been added topython -m isal.igzip
. -
Reduced wheel size by not including debug symbols in the binary. Thanks to
@marcelm in #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 ofOSError
.isal_zlib.IsalError
,
igzip_lib.IsalError
,isal_zlib.error
andigzip_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 allocatemaxsize
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:
- ISA-L library version variables are now available on windows as well,
for the statically linked version available on PyPI. - Wheels are now always build with nasm for the x86 architecture.
Previously yasm was used for Linux and MacOS due to build issues. - Fixed a bug upstream in ISA-L were zlib headers would be created with an
incorrect wbits value.
- ISA-L library version variables are now available on windows as well,
-
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.
Version 0.11.1
- Fixed an issue which occurred rarely that caused IgzipDecompressor's
unused_data to report back incorrectly. This caused checksum errors when
reading gzip files. The issue was more likely to trigger in multi-member gzip
files.
Version 0.11.0
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.
- Prompt when an output file is overwritten with the
python -m isal.igzip
command line utility and provide the-f
or--force
flags to force
overwriting. - Added
-o
and--output
flags to thepython -m isal.igzip
command
line utility to allow the user to select the destination of the output file. - Reverse a bug in the build system which caused some docstring and parameter
information onigzip_lib
andisal_zlib
to disappear in the
documentation and the REPL. - Increase the buffer size for
python -m isal.igzip
so it is now closer
to speeds reached withigzip
. - Add a
READ_BUFFER_SIZE
attribute toigzip
which allows setting the
amount of raw data that is read at once. - Add an
igzip_lib.IgzipDecompressor
object which can decompress without
using an unconsumed_tail and is therefore more efficient.
Version 0.10.0
- 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
decompression, as well as setting the memory levels manually. - Added more extensive documentation.
Version 0.9.0
- Fix a bug where a AttributeError was triggered when zlib.Z_RLE or
zlib.Z_FIXED were not present. - Add support for Linux aarch64 builds.
- Add support for pypy by adding pypy tests to the CI and setting up wheel
building support.
Version 0.8.1
- 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
bitbuffer which was not taken properly into account in some circumstances.