Skip to content

Update dependency zstandard to v0.25.0#905

Open
k1h-renovate[bot] wants to merge 1 commit intodevfrom
renovate/zstandard-0.x
Open

Update dependency zstandard to v0.25.0#905
k1h-renovate[bot] wants to merge 1 commit intodevfrom
renovate/zstandard-0.x

Conversation

@k1h-renovate
Copy link
Contributor

@k1h-renovate k1h-renovate bot commented Feb 25, 2026

This PR contains the following updates:

Package Update Change
zstandard minor ==0.23.0==0.25.0

Release Notes

indygreg/python-zstandard (zstandard)

v0.25.0

Compare Source

  • 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)

v0.24.0

Compare Source

Backwards Compatibility Notes

  • Support for Python 3.8 has been dropped because it reached end of life. Python 3.9 is the minimum supported Python version. The code should still be compatible with Python 3.8 and removing of version checks from setup.py will likely yield a working install. However, this is not officially supported.

Changes

  • Bundled zstd library upgraded from 1.5.6 to 1.5.7. (#​255)
  • We now use and require cffi 1.17.0 or newer. Previously, the constraint was >=1.11.0 on Python <3.13.
  • The pyproject.toml file now defines a [project] section.
  • We now use GitHub's native ARM Linux runners to build wheels and run tests. Previously, Linux ARM wheels were built inside a QEMU virtualized environment and we didn't run tests on this platform.
  • We now use GitHub's native ARM Windows runners to build wheels and run tests. Previously, Windows ARM wheels were cross compiled from an x86-64 runner and we never ran tests for the Windows ARM platform.
  • We now collections.abs.Buffer on Python 3.12+ instead of typing.ByteString, as typing.ByteString was deprecated and later removed. (#​238, #​262)
  • PyO3 Rust crate upgraded from 0.21 to 0.22 (#​257) and later to 0.24.
  • Removed CI coverage for PyPy 3.9.
  • Added CI coverage for PyPy 3.11.
  • Anaconda Windows CI builds have been disabled because we're running into an apparent conda bug.
  • Added CI coverage for Anaconda 3.12 and 3.13 on Linux and Windows x86-64 (but the Windows builds no-op due to above issue).
  • get_frame_parameters() now accepts an optional format argument defining the zstandard frame type. You can pass e.g. zstandard.FORMAT_ZSTD1_MAGICLESS to decode frames without header magic. (#​217)
  • Initial Python 3.14 support. We build wheels and have CI test coverage.

Source Archive Publishing Error

During the release process of this version, we uploaded the source archive to PyPI after some wheels. PyPI rejected the source archive because of presence of a license-file entry while using metadata version 2.4. We manually generated the source distribution locally. The source distribution on PyPI therefore does not match what GitHub Actions produced.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@k1h-renovate k1h-renovate bot requested a review from a team as a code owner February 25, 2026 01:22
@codecov
Copy link

codecov bot commented Feb 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.45%. Comparing base (342abc1) to head (95c2b25).

Additional details and impacted files
@@           Coverage Diff           @@
##              dev     #905   +/-   ##
=======================================
  Coverage   54.45%   54.45%           
=======================================
  Files          33       33           
  Lines        3043     3043           
=======================================
  Hits         1657     1657           
  Misses       1386     1386           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@k1h-renovate k1h-renovate bot force-pushed the renovate/zstandard-0.x branch from ce61415 to 95c2b25 Compare February 26, 2026 01:24
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.

0 participants