Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -203,15 +203,15 @@ jobs:
TSAN_OPTIONS: halt_on_error=1

deploy:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
runs-on: ${{ matrix.os }}
needs:
- lint
- package-checks
- test-static
- test-dynamic
- test-arch
- test-sanitizers
# needs:
# - lint
# - package-checks
# - test-static
# - test-dynamic
# - test-arch
# - test-sanitizers
strategy:
matrix:
os:
Expand Down
46 changes: 30 additions & 16 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,26 @@ Changelog
.. that users understand how the changes affect the new version.


version 1.8.1-dev
version 1.9.0
-----------------

By far most of the work on this release has been done by
`@ptweezy <https://github.com/ptweezy>`_. Almost all bug fixes and improvements
are their work.

Major changes:

+ Updated included ISA-L library to 2.32.1.
+ Python 3.10 and PyPy 3.10 are no longer supported. Added support for PyPy
3.12 and Python 3.15.
+ Restore PyPy wheel builds.
+ Fix builds on macOS with Apple Silicon, which used the portable C code of
ISA-L rather than its optimized aarch64 assembly. On an Apple M4,
decompression is 1.6 to 3 times faster, CRC-32 is 50 times faster, and
Adler-32 is 7 times faster.

Optimizations and features:

+ ``isal_zlib.compressobj`` supports ``strategy=Z_FIXED`` at compression
level 0. Level 0 then uses fixed Huffman codes instead of starting each
block with a Huffman table of about 110 bytes. This shrinks small flushed
Expand All @@ -21,16 +39,19 @@ version 1.8.1-dev
+ Speed up ``import isal.igzip`` and ``import isal.igzip_threaded`` by
importing ``argparse`` and ``shutil`` only when the command line interface
runs, and by dropping the ``multiprocessing`` import.
+ Updated ISA-L to 2.32.1.
+ Python 3.10 and PyPy 3.10 are no longer supported. Added support for PyPy
3.12 and Python 3.15.
+ Restore PyPy wheel builds.
+ Speed up reading lines from binary ``igzip`` files through iteration,
``readlines()``, and ``readline()``. On an Apple M4, reading FASTQ data is
1.13 times faster, and reading lines of a few bytes is 1.5 times faster.
+ Speed up each ``write()`` call to binary ``igzip`` files on CPython. On an
AMD Ryzen 7 9800X3D with Python 3.14.8, writing FASTQ data or Python source
code one line at a time is 1.1 times faster.
+ Speed up many small writes to ``igzip.IGzipFile`` on Python 3.12 and later.
``IGzipFile`` collects these writes in the write buffer of
``gzip.GzipFile`` and compresses them in large chunks, which makes writing
lines 1.4 times faster.

Bug fixes:

+ Fix zlib streams compressed with a preset dictionary so they can be decoded
by standard zlib, including builds linked against older ISA-L releases.
+ Fix backward seeking in igzip files by discarding buffered compressed data
Expand Down Expand Up @@ -81,14 +102,6 @@ version 1.8.1-dev
+ Fix ``igzip_threaded`` readers and writers that waited for a polling timeout
of up to 50 ms at the end of the stream or when closed. Writing and closing
a small file takes less than a millisecond instead of 60 ms.
+ Speed up many small writes to ``igzip.IGzipFile`` on Python 3.12 and later.
``IGzipFile`` collects these writes in the write buffer of
``gzip.GzipFile`` and compresses them in large chunks, which makes writing
lines 1.4 times faster.
+ Fix builds on macOS with Apple Silicon, which used the portable C code of
ISA-L rather than its optimized aarch64 assembly. On an Apple M4,
decompression is 1.6 to 3 times faster, CRC-32 is 50 times faster, and
Adler-32 is 7 times faster.
+ Fix ``igzip_threaded`` writers that waited forever when writing to the
underlying file failed, for example, because the disk was full. A later call
to ``write()``, ``flush()``, or ``close()`` raises the error. After an error,
Expand All @@ -108,9 +121,6 @@ version 1.8.1-dev
private ``isal_zlib._GzipReader`` class raise ``TypeError`` instead of
``SystemError`` for arguments of the wrong type or number.
``igzip.IGzipFile`` was not affected.
+ Fix crashes and wrong data when one thread calls ``seek()`` of the
private ``isal_zlib._GzipReader`` class while another thread reads from the
same object. ``igzip.IGzipFile`` was not affected.
+ Fix a crash on PyPy when you create an ``isal_zlib.Compress`` or
``isal_zlib.Decompress`` object by calling the type, for example,
``isal_zlib.Compress()``, and then use it. Calling the type raises
Expand Down Expand Up @@ -138,6 +148,10 @@ version 1.8.1-dev
``igzip_lib.IgzipDecompressor`` object. It raises ``MemoryError`` now.
+ Fix the ``-0`` and ``--fast`` options of ``python -m isal.igzip``, which
compressed at level 2 instead of level 0.
+ Fix crashes and wrong data when one thread calls ``seek()`` of the
private ``isal_zlib._GzipReader`` class while another thread reads from the
same object. ``igzip.IGzipFile`` was not affected.


version 1.8.0
-----------------
Expand Down
2 changes: 2 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ This project builds upon the software and experience of many. Many thanks to:
+ The `github actions team <https://github.com/orgs/actions/people>`_ for
creating the actions CI service that enables building and testing on all
three major operating systems.
+ `@ptweezy <https://github.com/ptweezy>`_ for discovering and fixing lots and
lots of bugs as well as suggesting and implementing quite a few improvements.
+ `@animalize <https://github.com/animalize>`_ for explaining how to test and
build python-isal for ARM 64-bit platforms.
+ And last but not least: everyone who submitted a bug report or a feature
Expand Down
Loading