diff --git a/README.md b/README.md index e8c6874f..e86139d3 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ jobs: - uses: actions/setup-python@v6 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==3.4.1 + run: python -m pip install cibuildwheel==4.0.0rc1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -238,6 +238,35 @@ Changelog +### v4.0.0rc1 + +_14 May 2026_ + +- ๐ŸŒŸ Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805) +- ๐ŸŒŸ Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a1, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848) +- ๐ŸŒŸ Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#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](https://cibuildwheel.pypa.io/en/stable/options/#enable) `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`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827) +- โš ๏ธ Drops support for Python 3.8 (#2686) +- โš ๏ธ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#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`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#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`](https://cibuildwheel.pypa.io/en/stable/options/#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 _2 April 2026_ @@ -280,15 +309,7 @@ _12 November 2025_ - ๐Ÿ›  Improve the handling of `test-command` on Android, enabling more options to be passed (#2590) - ๐Ÿ“š Docs improvements (#2618) -### v3.2.1 - -_12 October 2025_ - -- ๐Ÿ›  Update to CPython 3.14.0 final (#2614) -- ๐Ÿ› Fix the default MACOSX_DEPLOYMENT_TARGET on Python 3.14 (#2613) -- ๐Ÿ“š Docs improvements (#2617) - - + --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index a5cfdf59..0d337e87 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1 +1 @@ -__version__ = "3.4.1" +__version__ = "4.0.0rc1" diff --git a/docs/changelog.md b/docs/changelog.md index 09d376dc..58c6fb2f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,35 @@ title: Changelog # Changelog +### v4.0.0rc1 + +_14 May 2026_ + +- ๐ŸŒŸ Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805) +- ๐ŸŒŸ Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a1, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848) +- ๐ŸŒŸ Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#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](https://cibuildwheel.pypa.io/en/stable/options/#enable) `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`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827) +- โš ๏ธ Drops support for Python 3.8 (#2686) +- โš ๏ธ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#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`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#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`](https://cibuildwheel.pypa.io/en/stable/options/#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 _2 April 2026_ diff --git a/docs/faq.md b/docs/faq.md index e3542bab..b0c79294 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -125,7 +125,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead If you use GitHub Actions for builds, you can use cibuildwheel as an action: ```yaml -uses: pypa/cibuildwheel@v3.4.1 +uses: pypa/cibuildwheel@v4.0.0rc1 ``` This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal. @@ -150,7 +150,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==3.4.1 +cibuildwheel==4.0.0rc1 ``` Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this: @@ -315,7 +315,7 @@ Solutions to this vary, but the simplest is to use pipx: # most runners have pipx preinstalled, but in case you don't python3 -m pip install pipx -pipx run cibuildwheel==3.4.1 --output-dir wheelhouse +pipx run cibuildwheel==4.0.0rc1 --output-dir wheelhouse pipx run twine upload wheelhouse/*.whl ``` diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index d561e189..0a1bce9a 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -6,7 +6,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - pip3 install cibuildwheel==3.4.1 + pip3 install cibuildwheel==4.0.0rc1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -20,7 +20,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - python3 -m pip install cibuildwheel==3.4.1 + python3 -m pip install cibuildwheel==4.0.0rc1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -34,7 +34,7 @@ jobs: - bash: | set -o errexit python -m pip install --upgrade pip - pip install cibuildwheel==3.4.1 + pip install cibuildwheel==4.0.0rc1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index 4678eeba..6f30df92 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -11,7 +11,7 @@ jobs: - run: name: Build the Linux wheels. command: | - python3 -m pip install --user cibuildwheel==3.4.1 + python3 -m pip install --user cibuildwheel==4.0.0rc1 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -28,7 +28,7 @@ jobs: - run: name: Build the Linux aarch64 wheels. command: | - python3 -m pip install --user cibuildwheel==3.4.1 + python3 -m pip install --user cibuildwheel==4.0.0rc1 python3 -m cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -44,7 +44,7 @@ jobs: name: Build the OS X wheels. command: | sudo softwareupdate --install-rosetta --agree-to-license # for x86_64/universal2 tests - pip3 install cibuildwheel==3.4.1 + pip3 install cibuildwheel==4.0.0rc1 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 5e6a5329..8ca374e3 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -53,7 +53,7 @@ jobs: persist-credentials: false - name: Build wheels - uses: pypa/cibuildwheel@v3.4.1 + uses: pypa/cibuildwheel@v4.0.0rc1 env: CIBW_PLATFORM: ${{ matrix.platform || 'auto' }} CIBW_ARCHS: ${{ matrix.archs || 'auto' }} diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index a1898770..9405e907 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -17,7 +17,7 @@ jobs: persist-credentials: false - name: Build wheels - uses: pypa/cibuildwheel@v3.4.1 + uses: pypa/cibuildwheel@v4.0.0rc1 # env: # CIBW_SOME_OPTION: value # ... diff --git a/examples/github-pipx.yml b/examples/github-pipx.yml index 29736ea5..2b13b04a 100644 --- a/examples/github-pipx.yml +++ b/examples/github-pipx.yml @@ -17,7 +17,7 @@ jobs: persist-credentials: false - name: Build wheels - run: pipx run cibuildwheel==3.4.1 + run: pipx run cibuildwheel==4.0.0rc1 - uses: actions/upload-artifact@v4 with: diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index ae068658..b9b9b9cc 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -23,7 +23,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v3.4.1 + uses: pypa/cibuildwheel@v4.0.0rc1 env: # configure cibuildwheel on Linux to build native archs ('auto'), # and to split the remaining architectures between the x86_64 and diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index 8ab27c04..8f2c006a 100644 --- a/examples/gitlab-minimal.yml +++ b/examples/gitlab-minimal.yml @@ -12,7 +12,7 @@ linux: DOCKER_TLS_CERTDIR: "" script: - curl -sSL https://get.docker.com/ | sh - - python -m pip install cibuildwheel==3.4.1 + - python -m pip install cibuildwheel==4.0.0rc1 - cibuildwheel --output-dir wheelhouse artifacts: paths: @@ -23,7 +23,7 @@ windows: before_script: - choco install python -y --allow-downgrade --version 3.12.4 - choco install git.install -y - - py -m pip install cibuildwheel==3.4.1 + - py -m pip install cibuildwheel==4.0.0rc1 script: - py -m cibuildwheel --output-dir wheelhouse --platform windows artifacts: @@ -35,7 +35,7 @@ windows: macos: image: macos-14-xcode-15 before_script: - - python3 -m pip install cibuildwheel==3.4.1 + - python3 -m pip install cibuildwheel==4.0.0rc1 script: - python3 -m cibuildwheel --output-dir wheelhouse artifacts: diff --git a/examples/gitlab-with-qemu.yml b/examples/gitlab-with-qemu.yml index 266111b1..b2947736 100644 --- a/examples/gitlab-with-qemu.yml +++ b/examples/gitlab-with-qemu.yml @@ -14,7 +14,7 @@ linux: - curl -sSL https://get.docker.com/ | sh # Warning: This is extremely slow, be careful with how many wheels you build - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - python -m pip install cibuildwheel==3.4.1 + - python -m pip install cibuildwheel==4.0.0rc1 # Assuming your CI runner's default architecture is x86_64... - cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64 artifacts: diff --git a/pyproject.toml b/pyproject.toml index 1a011a11..28e71daf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "cibuildwheel" -version = "3.4.1" +version = "4.0.0rc1" description = "Build Python wheels on CI with minimal configuration." readme = "README.md" license = "BSD-2-Clause"