Skip to content

Release 1.1.0 - #92

Merged
rhpvorderman merged 31 commits into
mainfrom
release_1.1.0
Nov 3, 2026
Merged

rhpvorderman merged 31 commits into
mainfrom
release_1.1.0

Conversation

@rhpvorderman

Copy link
Copy Markdown
Contributor

Checklist

  • Pull request details were added to CHANGELOG.rst
  • Documentation was updated (if needed)

rhpvorderman and others added 30 commits September 15, 2025 08:14
* add arm64 builds & tests, run workflow

* skip cp39 and cp310 on arm64 windows

* add v5 python-setup for arm64 windows

Updated Python setup action for Windows ARM architecture.

* fix typo

* print env variables for windows to debug

* fix pwsh command before build

* run SET

* Specify architecture for MSVC developer prompt

* add arch option to msvc action

* remove SET

* uncomment skipped sections, remove fork branch trigger

* update CHANGELOG.rst

Added version 1.0.1-dev section with a note about Windows arm64 wheel support.
…ython 3.15 (#80)

* Fix a crash when calling `copy()` on a flushed compress object on Python 3.15

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

* test: Address Pytest 9.1 warnings

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

* chore: Allow usage of ` tox -e 3.15 -- <some pytest params>`

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

* ci: Add Python 3.15 and 3.15t to CI matrix

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

* ci: Replace `macos-13` runner with `macos-15-intel`

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

---------

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>
In the bundled zlib-ng, level 1 uses deflate_quick(), which codes all
data with the fixed Huffman codes and never falls back to stored blocks.
Bytes 144 to 255 take 9 bits in these codes, so data made of them with
no repeats grows by 12.5%. Each compressor had an output buffer only
about 10% larger than the block size, so compress_and_crc() raised
OverflowError. At level 1, make the buffer the block size plus an
eighth plus 500 bytes, because no input byte takes more than 9 bits.
When raw.write() raised an error in the thread that writes the
compressed blocks, that thread exited without calling task_done(). As a
result, flush() waited forever, and so did closing the file object that
gzip_ng_threaded.open() returns. write() blocked forever when an input
queue was full.

The thread now stores the error and drops later blocks until stop()
ends it, so write(), flush(), and close() can raise the error in the
calling thread. After an error, close() closes raw only if closefd is
true, so it no longer closes a file object passed to
gzip_ng_threaded.open().

close() now calls flush() before it writes the trailer, as python-isal's
close() has done since pycompression/python-isal@5ef868b, so the trailer
always comes after the queued blocks.

This ports pycompression/python-isal#275.
ci: re-enable PyPy wheel builds
Review feedback: one buffer size for all levels is simpler, and the
extra 2.5% of headroom at the other levels doesn't matter.
Fix `gzip_ng_threaded` writers that raise `OverflowError` at compression level 1
Raise write errors of `gzip_ng_threaded` writers instead of waiting forever
Throw an overflowerror on adverserial headers
Update included zlib-ng distribution to 2.3.3.
Update release method and add sanitizer tests
Fix broken pipe error when piping into programs using the CLI.
@rhpvorderman
rhpvorderman merged commit 1201391 into main Nov 3, 2026
22 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants