v3.0.0
See @henryiii's release post for more info on new features!
-
🌟 Adds the ability to build wheels for iOS! Set the
platform
option toios
on a Mac with the iOS toolchain to try it out! (#2286, #2363, #2432) -
🌟 Adds support for the GraalPy interpreter! Enable for your project using the
enable
option. (#1538, #2411, #2414) -
✨ Adds CPython 3.14 support, under the
enable
optioncpython-prerelease
. This version of cibuildwheel uses 3.14.0b2. (#2390)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 the test-sources option, and changes the working directory for tests. (#2062, #2284, #2437)
- If this option is set, cibuildwheel will copy the files and folders specified in
test-sources
into the temporary directory we run from. This is required for iOS builds, but also useful for other platforms, as it allows you to avoid placeholders. - If this option is not set, behaviour matches v2.x - cibuildwheel will run the tests from a temporary directory, and you can use the
{project}
placeholder in thetest-command
to refer to the project directory. (#2420)
- If this option is set, cibuildwheel will copy the files and folders specified in
-
✨ Adds
dependency-versions
inline syntax (#2122) -
✨ Improves support for Pyodide builds and adds the experimental
pyodide-version
option, which allows you to specify the version of Pyodide to use for builds. (#2002) -
✨ Add
pyodide-prerelease
enable option, with an early build of 0.28 (Python 3.13). (#2431) -
✨ Adds the
test-environment
option, which allows you to set environment variables for the test command. (#2388) -
✨ Adds the
xbuild-tools
option, which allows you to specify tools safe for cross-compilation. Currently only used on iOS; will be useful for Android in the future. (#2317) -
🛠 The default manylinux image has changed from
manylinux2014
tomanylinux_2_28
. (#2330) -
🛠 EOL images
manylinux1
,manylinux2010
,manylinux_2_24
andmusllinux_1_1
can no longer be specified by their shortname. The full OCI name can still be used for these images, if you wish. (#2316) -
🛠 Invokes
build
rather thanpip wheel
to build wheels by default. You can control this via thebuild-frontend
option. You might notice that you can see your build log output now! (#2321) -
🛠 Build verbosity settings have been reworked to have consistent meanings between build backends when non-zero. (#2339)
-
🛠 Removed the
CIBW_PRERELEASE_PYTHONS
andCIBW_FREE_THREADED_SUPPORT
options - these have been folded into theenable
option instead. (#2095) -
🛠 Build environments no longer have setuptools and wheel preinstalled. (#2329)
-
🛠 Use the standard Schema line for the integrated JSONSchema. (#2433)
-
⚠️ Dropped support for building Python 3.6 and 3.7 wheels. If you need to build wheels for these versions, use cibuildwheel v2.23.3 or earlier. (#2282) -
⚠️ The minimum Python version required to run cibuildwheel is now Python 3.11. You can still build wheels for Python 3.8 and newer. (#1912) -
⚠️ 32-bit Linux wheels no longer built by default - the arch was removed from"auto"
. It now requires explicit"auto32"
. Note that modern manylinux images (like the new default,manylinux_2_28
) do not have 32-bit versions. (#2458) -
⚠️ PyPy wheels no longer built by default, due to a change to our options system. To continue building PyPy wheels, you'll now need to set theenable
option topypy
orpypy-eol
. (#2095) -
⚠️ Dropped official support for Appveyor. If it was working for you before, it will probably continue to do so, but we can't be sure, because our CI doesn't run there anymore. (#2386) -
📚 A reorganisation of the docs, and numerous updates. (#2280)
-
📚 Use Python 3.14 color output in docs CLI output. (#2407)
-
📚 Docs now primarily use the pyproject.toml name of options, rather than the environment variable name. (#2389)
-
📚 README table now matches docs and auto-updates. (#2427, #2428)