From c6f18bc7f21463bb498ea8c535bbf8f14342ca0b Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Mon, 2 Nov 2026 13:49:40 +0100 Subject: [PATCH 1/5] Organize changelog and update version statement --- CHANGELOG.rst | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9c103b92..cc1e6938 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,8 +8,22 @@ Changelog .. that users understand how the changes affect the new version. -version 1.8.1-dev +version 1.9.0 ----------------- + +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: + + ``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 @@ -21,17 +35,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. -+ Fix zlib streams compressed with a preset dictionary so they can be decoded ++ 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 when rewinding the underlying file. @@ -81,14 +97,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, @@ -108,9 +116,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 @@ -138,6 +143,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 ----------------- From 2ced63f3c0732ba3257aaad7cbb25b3b1270ba6d Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Mon, 2 Nov 2026 13:57:43 +0100 Subject: [PATCH 2/5] Properly credit @ptweezy --- CHANGELOG.rst | 6 +++++- README.rst | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cc1e6938..344f3b2d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -11,6 +11,10 @@ Changelog version 1.9.0 ----------------- +By far most of the work on this release has been done by +`@ptweezy `_. Almost all bug fixes and improvements +are their work. + Major changes: + Updated included ISA-L library to 2.32.1. @@ -22,7 +26,7 @@ Major changes: decompression is 1.6 to 3 times faster, CRC-32 is 50 times faster, and Adler-32 is 7 times faster. -Optimizations: +Optimizations abd features: + ``isal_zlib.compressobj`` supports ``strategy=Z_FIXED`` at compression level 0. Level 0 then uses fixed Huffman codes instead of starting each diff --git a/README.rst b/README.rst index 0ac85ac4..fd4ce61b 100644 --- a/README.rst +++ b/README.rst @@ -224,6 +224,8 @@ This project builds upon the software and experience of many. Many thanks to: + The `github actions team `_ for creating the actions CI service that enables building and testing on all three major operating systems. ++ `@ptweezy `_ for discovering and fixing lots and + lots of bugs as well as suggesting and implementing quite a few improvements. + `@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 From b58a5995801232d7e4fc1972df3e291be735cc48 Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Mon, 2 Nov 2026 14:11:14 +0100 Subject: [PATCH 3/5] Fix changelog build errors --- CHANGELOG.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 344f3b2d..307b330b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -26,7 +26,7 @@ Major changes: decompression is 1.6 to 3 times faster, CRC-32 is 50 times faster, and Adler-32 is 7 times faster. -Optimizations abd features: +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 @@ -51,7 +51,8 @@ Optimizations abd features: lines 1.4 times faster. Bug fixes: - + Fix zlib streams compressed with a preset dictionary so they can be decoded + ++ 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 when rewinding the underlying file. From 208caa7facf2afe580c99e6ef6d673ee0d9ae835 Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Mon, 2 Nov 2026 14:24:04 +0100 Subject: [PATCH 4/5] Always build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76a87acc..9bc1031f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -203,7 +203,7 @@ 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 From d2a7e32c3b30e1796127601593341cdc06c66359 Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Mon, 2 Nov 2026 14:30:43 +0100 Subject: [PATCH 5/5] Start building right away --- .github/workflows/ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bc1031f..6f64ca9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -205,13 +205,13 @@ jobs: deploy: # 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: