Releases · pypa/cibuildwheel · GitHub
Skip to content

Releases: pypa/cibuildwheel

v4.1.0

12 Jun 16:03

Choose a tag to compare

  • ✨ Updates Pyodide to the final 314.0.0 release, so Pyodide 3.14 wheels now build by default without the pyodide-prerelease enable flag. (#2906)
  • 🐛 Raises clear errors when a build produces no wheel, instead of failing later with a confusing message (#2909)
  • 🛠 Speeds up CLI startup through lazy imports on Python 3.15 (#2797)
  • 📚 Adds an FAQ section on caching cibuildwheel's downloaded tools with CIBW_CACHE_PATH (#2842)
  • 📚 Documentation improvements: clarifies which shell is used for command options, clarifies environment variable precedence, and fixes a dead Pyodide env info link (#2904, #2905, #2911)

v4.0.0

07 Jun 18:54

Choose a tag to compare

See @henryiii's release post for more info on new features!

  • 🌟 Adds wheel auditing with abi3audit as a default after the repair step, with new audit-requires and audit-command options (#2805)

  • 🌟 Adds pyemscripten platform tag support (PEP 783), updates Pyodide to 314.0.0a2, and adds a pyodide-eol enable flag for building end-of-life Pyodide versions (#2812, #2848)

  • 🌟 Sets up delvewheel as the default repair-wheel-command for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)

  • ✨ Adds CPython 3.15 support, under the enable option cpython-prerelease. This version of cibuildwheel uses 3.15.0b2. (#2833, #2850)

    While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.15 will be available in cibuildwheel without the flag.

  • ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)

  • ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the xbuild-files option (#2695)

  • ✨ Adds CIBUILDWHEEL_BUILD_IDENTIFIER environment variable set to the current build identifier (e.g. cp311-manylinux_x86_64) during per-build steps (#2872)

  • ✨ Adds {project} and {package} placeholders to config-settings (#2827)

  • ⚠️ Drops support for Python 3.8 (#2686)

  • ⚠️ Removes the experimental CPython 3.13 free-threading builds and the cpython-freethreading enable option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)

  • ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)

  • ⚠️ Drops GraalPy 3.11 (gp311) support, as agreed in #2741, and removes GraalPy 24-only workarounds (#2895)

  • 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)

  • 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)

  • 🐛 Fixes UV_PYTHON not being set for before-build on Linux when using uv as the build-frontend (#2830)

  • 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)

  • 🐛 Fixes config-settings expansion when {project} or {package} contains spaces or backslashes (#2886)

  • 🐛 Prevents deadlock when linux32 fails and forwards platform args to the sanity check (#2880, #2888)

  • 🐛 Fixes container resource leaks on start failure and during teardown (#2879, #2887)

  • 🐛 Removes potential partial cache-population in case of error (#2892)

  • 🐛 Raises a clear error when ANDROID_API_LEVEL is not an integer (#2891)

  • 🐛 Replaces assert with proper exception in python-build-standalone (#2859)

  • 🐛 Uses ConfigurationError when package_dir is outside cwd instead of a generic Exception (#2898)

  • 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884, #2845, #2837, #2818, #2810, #2838, #2813)

  • 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)

  • 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)

  • 🛠 Uses python -V -V for Windows build diagnostics (#2832)

  • 🛠 Simplifies pinned container image lookup (#2897)

  • 🛠 Minor fixups across error messages, OCI container, and options (#2860)

  • 💼 Adds PEP 723 metadata for bin/ scripts and drops the bin dependency group (#2819)

  • 💼 Improves Azure test reliability with retries and caching (#2890)

  • 💼 Fixes Windows GitLab CI test running (#2870)

  • 💼 Updates CI action pins and dev dependencies (#2902, #2867, #2851, #2843, #2826, #2823, #2820, #2807)

  • 💼 Adds agent and copilot setup files (#2861)

  • 💼 Uses if TYPE_CHECKING: blocks (#2866, #2864)

  • 🧪 Fixes Android tests using the uv frontend (#2809)

  • 🧪 Fixes the update-dependencies workflow to use uv to run nox (#2808)

  • 🧪 Adds unit tests for OCIContainer._get_platform_args (#2878)

  • 📚 Updates documentation for delvewheel as the default Windows repair-wheel-command, including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)

  • 📚 Documents platform-specific before-build configuration (#2834)

  • 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)

  • 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)

  • 📚 Adds intersphinx support for external documentation linking (#2871)

  • 📚 Adds instructions for building CUDA wheels and fixes manylinux container references in FAQ (#2896, #2900)

  • 📚 Links back to source in docs (#2806)

  • 📚 Removes outdated numpy info (#2855)

v4.0.0rc2

05 Jun 13:29

Choose a tag to compare

v4.0.0rc2 Pre-release
Pre-release
  • ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)
  • ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the xbuild-files option (#2695)
  • ✨ Adds CIBUILDWHEEL_BUILD_IDENTIFIER environment variable set to the current build identifier (e.g. cp311-manylinux_x86_64) during per-build steps (#2872)
  • 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)
  • 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)
  • 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)
  • 🐛 Fixes config-settings expansion when {project} or {package} contains spaces or backslashes (#2886)
  • 🐛 Prevents deadlock when linux32 fails and forwards platform args to the sanity check (#2880, #2888)
  • 🐛 Fixes container resource leaks on start failure and during teardown (#2879, #2887)
  • 🐛 Removes potential partial cache-population in case of error (#2892)
  • 🐛 Raises a clear error when ANDROID_API_LEVEL is not an integer (#2891)
  • 🐛 Replaces assert with proper exception in python-build-standalone (#2859)
  • 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884)
  • 🛠 Minor fixups across error messages, OCI container, and options (#2860)
  • 📚 Updates documentation for delvewheel as the default Windows repair-wheel-command, including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
  • 📚 Adds intersphinx support for external documentation linking (#2871)
  • 📚 Removes outdated numpy info (#2855)
  • 💼 Improves Azure test reliability with retries and caching (#2890)
  • 💼 Fixes Windows GitLab CI test running (#2870)
  • 💼 Updates CI action pins (#2867)
  • 💼 Adds agent and copilot setup files (#2861)
  • 💼 Uses if TYPE_CHECKING: blocks (#2866, #2864)
  • 🧪 Adds unit tests for OCIContainer._get_platform_args (#2878)

v4.0.0rc1

14 May 15:59

Choose a tag to compare

v4.0.0rc1 Pre-release
Pre-release
  • 🌟 Adds wheel auditing with abi3audit as a default after the repair step, with new audit-requires and audit-command options (#2805)

  • 🌟 Adds pyemscripten platform tag support (PEP 783), updates Pyodide to 314.0.0a1, and adds a pyodide-eol enable flag for building end-of-life Pyodide versions (#2812, #2848)

  • 🌟 Sets up delvewheel as the default repair-wheel-command for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)

  • ✨ Adds CPython 3.15 support, under the enable option cpython-prerelease. This version of cibuildwheel uses 3.15.0b1. (#2833, #2850)

    While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.14 will be available in cibuildwheel without the flag. (#2390)

  • ✨ Adds {project} and {package} placeholders to config-settings (#2827)

  • ⚠️ Drops support for Python 3.8 (#2686)

  • ⚠️ Removes the experimental CPython 3.13 free-threading builds and the cpython-freethreading enable option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)

  • ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)

  • 🐛 Fixes UV_PYTHON not being set for before-build on Linux when using uv as the build-frontend (#2830)

  • 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)

  • 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)

  • 🛠 Updates dependencies and container pins (#2845, #2837, #2821, #2818, #2810, #2838, #2813)

  • 🛠 Uses python -V -V for Windows build diagnostics (#2832)

  • 📚 Documents platform-specific before-build configuration (#2834)

  • 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)

  • 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)

  • 📚 Links back to source in docs (#2806)

  • 💼 Adds PEP 723 metadata for bin/ scripts and drops the bin dependency group (#2819)

  • 💼 Updates CI action pins and dev dependencies (#2851, #2843, #2826, #2823, #2820, #2807)

  • 🧪 Fixes Android tests using the uv frontend (#2809)

  • 🧪 Fixes the update-dependencies workflow to use uv to run nox (#2808)

v3.4.1

02 Apr 13:58

Choose a tag to compare

  • ⚠️ Building for the experimental CPython 3.13 free-threading variant is now deprecated. That functionality will be removed in the next minor release. The enable option cpython-freethreading is therefore also deprecated. Builds specifying enable = "all" no longer select cpython-freethreading. CPython 3.14 free-threading support remains available without the enable flag. (#2787)
  • 🐛 iOS builds will no longer skip repair-wheel-command if it's defined in config (#2761)
  • 🐛 Fix bug causing uv to fail when environments define PYTHON_VERSION or UV_PYTHON, conflicting with our venvs (#2795)
  • ✨ cibuildwheel prints the selected build identifiers at the start of the build. (#2785)
  • 🔐 The GitHub Action now references other actions with a full SHA (#2744)

v2.23.4

16 Mar 19:32

Choose a tag to compare

v3.4.0

05 Mar 09:00

Choose a tag to compare

  • 🌟 You can now build wheels using uv as a build frontend. This should improve performance, especially if your project has lots of build dependencies. To use, set build-frontend to uv. (#2322)
  • ⚠️ We no longer support running on Travis CI. It may continue working but we don't run tests there anymore so we can't be sure. (#2682)
  • ✨ Improvements to building Rust wheels on Android (#2650)
  • 🛠 Update Pyodide to 0.29.3 (#2719, #2733)
  • 🐛 Fix bug with the GitHub Action on Windows, where PATH was getting unnecessarily changed, causing issues with meson builds. (#2723)
  • ✨ Add support for quiet setting on build and uv from the cibuildwheel build-verbosity setting. (#2737)
  • 📚 Docs updates, including guidance on using Meson on Windows (#2718)

v3.3.1

05 Jan 19:57

Choose a tag to compare

  • 🛠 Update dependencies and container pins, including updating to CPython 3.14.2. (#2708)

v3.3.0

12 Nov 19:28

Choose a tag to compare

  • 🐛 Fix an incompatibility with Docker v29 (#2660)
  • ✨ Adds test-runtime option, to customise how tests on simulated/emulated environments are run (#2636)
  • ✨ Adds support for new manylinux_2_35 images on 32-bit ARM armv7l, offering better C++20 compatibility (#2656)
  • build[uv] is now supported on Android (#2587)
  • ✨ You can now install extras (such as uv) with a simple option on the GitHub Action (#2630)
  • {project} and {package} placeholders are now supported in repair-wheel-command (#2589)
  • 🛠 The versions set with dependency-versions no longer constrain packages specified by your build-system.requires. Previously, on platforms other than Linux, the constraints in this option would remain in the environment during the build. This has been tidied up make behaviour more consistent between platforms, and to prevent version conflicts. (#2583)
  • 🛠 Improve the handling of test-command on Android, enabling more options to be passed (#2590)
  • 📚 Docs improvements (#2618)

v3.2.1

12 Oct 08:24

Choose a tag to compare

  • 🛠 Update to CPython 3.14.0 final (#2614)
  • 🐛 Fix the default MACOSX_DEPLOYMENT_TARGET on Python 3.14 (#2613)
  • 📚 Docs improvements (#2617)