You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PyO3 Rust created upgraded from 0.24 to 0.25. (#273)
We now use Py_REFCNT(obj) instead of accessing (*obj)->ob_refcnt directly.
This fixes a nogil / multi-threaded compile error. (#201, #275)
A zstandard commit to fix qsort detection on BSD operating systems
has been backported. (#272)
The PYTHON_ZSTANDARD_IMPORT_POLICY environment variable now has leading
and trailing whitespace stripped. Values like cffi and cffi are
now equivalent to cffi.
The CI jobs for building wheels have been overhauled to always use cibuildwheel and uv (where possible). This change should be backwards
compatible. But wheel building for this project has historically been
fragile and there may be unwanted changes. We're optimistic that standardizing
on uv (except for musllinux ppc64le and s390x where uv isn't available)
will lead to more stability over time.
CI now runs tests against the wheels we distribute. Previously, we ran
tests against a separate build that was theoretically identical. But the
builds may have been subtly different, leading to preventable bugs in our
wheels. (Enabling this test coverage did not uncover any failures.)
The pyproject.toml build backend has been switched from setuptools.build_meta:__legacy__ to setuptools.build_meta.
The setuptools build dependency has been upgraded from <69.0.0 to >=77.0.0.
Modern versions of setuptools broke --config-settings=--build-option=... as part of implementing PEP 660.
A workaround is to use --config-settings=--global-option=... instead. --global-option apparently is deprecated and the setuptools folks have yet
to figure out how to thread config settings into setup.py invocations.
(--build-option is sent to the build_wheel command but not the build_editable command.)
Python 3.14 wheels are now built with manylinux_2_28 (versus manylinux2014) for older Python versions. This may raise the minimum
glibc version, effectively dropping support for Debian 8 and 9, Ubuntu
13.10 through 18.04, Fedora 19 to 28, and RHEL/Centos 7. However, in
practice most platforms don't container newer glibc symbols and are still
ABI compatible with manylinux2014 and glibc 2.17.
We now require cffi >= 2.0.0b on Python 3.14. <3.14 still requires 1.17.
(#274)
The cffi backend is now automatically disabled for free-threaded builds
on Python <3.14, as cffi didn't implement free-threaded support until
the 2.0 release. (#274)
Added CI coverage for free-threaded CPython 3.13 and 3.14. We do not yet
formally support free-threaded builds. (#276)
The C and Rust backends now declare the GIL as unused.
The pythoncapi_compat.h file has been upgraded to the latest version. (#278)
setup.py now depends on packaging and uses packaging.version.Version
for version comparisons. This removes some deprecation warnings from usage of
legacy distutils Version classes.
Relax run-time libzstd version checking in C extension from exactly 1.5.7
to >=1.5.6. (#254, #267)
C extension types now (correctly) declare their fully qualified type names
as zstandard.backend_c.* versus zstd.* before. The names have been
subtly broken for years. We believe the only practical exposure to this change
is via pickling (possibly encountered when using the multiprocessing or concurrent.futures packages), which would fail to pickle types like ZstdError before since the fully qualified type name referenced an
incorrect and likely missing package (zstd). (#248)