Skip to content

Releases: pycompression/python-isal

Version 1.3.0

20 Sep 10:03
6e3c067
Compare
Choose a tag to compare
  • 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 the gzip.decompress function.

Version 1.2.0

21 Jul 12:58
e56db90
Compare
Choose a tag to compare
  • 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

12 Oct 13:07
de1b55d
Compare
Choose a tag to compare

version 1.1.0

  • Added tests and support for Python 3.11.

Version 1.0.1

03 Aug 10:20
9c4a459
Compare
Choose a tag to compare
  • Fixed failing tests and wheel builds for PyPy.

Version 1.0.0

01 Aug 09:36
a182513
Compare
Choose a tag to compare

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
    #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 #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:

    • 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.
  • 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

29 Aug 07:40
bda6c24
Compare
Choose a tag to compare
  • 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

23 Jul 07:50
901133f
Compare
Choose a tag to compare

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 the python -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 on igzip_lib and isal_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 with igzip.
  • Add a READ_BUFFER_SIZE attribute to igzip 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

19 Apr 05:25
dc92b71
Compare
Choose a tag to compare
  • 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

30 Mar 15:02
1a56307
Compare
Choose a tag to compare
  • 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

29 Mar 10:03
2e5e4dc
Compare
Choose a tag to compare
  • 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.