github indygreg/python-zstandard 0.25.0

21 hours ago
  • 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)

Don't miss a new python-zstandard release

NewReleases is sending notifications on new releases.