cibuildwheel 4.0.0 is out, with some very big additions. We’ve added
pyemscripten 3.13 wheels (uploadable to PyPI!), Python 3.15 (and 3.15t)
betas, and much more! We’ve got a new stage: audit, which applies
abi3audit to stable ABI wheels. We now default to running
delvewheel to repair Windows wheels. We now have {project} and {package}
placeholders for config-settings, and we set CIBUILDWHEEL_BUILD_IDENTIFIER
in the build step. We’ve also made some nice Android improvements. We’ve removed
support for Python 3.8, Python 3.13t, GraalPy 3.11, and Cirrus CI.
π‘ cibuildwheel 3.0
cibuildwheel 3.0.0 is out, with some very big additions. We’ve added
GraalPy, Python 3.14 (and 3.14t) betas, and iOS support! We’ve got several new
options: test-sources, test-environment, and (experimental)
pyodide-version. We now fully use enable (and PyPy requires using it), and
we no longer inject setuptools and wheel in build environments. Defaults have
changed, too: build is now the default frontend, manylinux_2_28 is the
default manylinux image, with 32-bit linux now being opt-in. We’ve removed
support for Python 3.6 and 3.7, we now require 3.11+ to run cibuildwheel itself,
and EoL manylinux/musllinux images now need to be fully specified.
We’ve had some fantastic releases of cibuildwheel since my last post over 2.19, so I’ll include a few of the new features from those releases, too. I’ll also note a few of the features being worked on for future releases.
[Read More]π‘ cibuildwheel 2.19
cibuildwheel 2.19 is out, with some very big additions. A new platform,
Pyodide, has been added for building WebAssembly wheels. We’ve added CPython
3.13 free-threaded builds, now on all OS’s. And we have an opt-in speed
improvement with the build[uv] build-frontend option.
We’ve had some fantastic releases of cibuildwheel since my last post over 2.10,
so I’ll include a few of the new features from those releases, too, with a
highlight on a larger feature that can use more explaining: inherit for
overrides.
π‘ cibuildwheel 2.10
cibuildwheel 2.10 is out, with some important additions. PEP 517 config
settings added, --only (which has an interesting use in GHA), and Cirrus CI
support (including our first Apple Silicon native runner!) are highlights. We
also support Python 3.11 now (as of 2.11.2, RC’s in older releases).
We’ve had some fantastic releases of cibuildwheel this year, including some very powerful features you might be interested in using, and I haven’t covered releases since 2.2, so let’s take an in-depth look at what’s new for this and the last few releases!
[Read More]π‘ cibuildwheel 2.2
Another great release from cibuildwheel, 2.2.0, is out! There are a few important additions in this release that you should be aware of, so I will outline the major changes here. We will cover the new musllinux wheels, overload configuration, and incoming changes to pip and PyPy expected in the next release. As always, it is recommended that you pin your cibuildwheel version and then provide some automated way to keep the pin up-to-date, such as GitHub’s dependabot. You should be updating just before you make a release, as well, but you probably don’t want to be surprised by new wheels during your release process!
[Read More]π‘ cibuildwheel 2.0
The cibuildwheel package has just had a major release with some fantastic
features. Python 2.7 and 3.5 support has been removed (and PyPy3.6), allowing us
to update to the latest manylinux and auditwheel versions, and support the newly
unified manylinux PyPy3.7 images. We now allow users to select pypa/build as a
build frontend. We now have a custom option to enable pre-release Pythons (3.10
currently) for testing before they are ABI stable (please don’t release wheels
until that happens). Maybe most exciting, cibuildwheel now supports
configuration in pyproject.toml, allowing you to be even further isolated from
dependence on your CI system; you can easily produce Linux and Windows wheels
locally (macOS still installs to system locations). And, since my
last post and
introduction post, cibuildwheel is now part of
the PyPA!
π‘ cibuildwheel 1.8.0 and 1.9.0
cibuildwheel has just had two back-to-back releases, two weeks apart,
representing several months of hard work and a few exciting features! I will be
covering both releases at once, so we will discuss Apple Silicon support,
architecture emulation on Linux, integrated PEP 621 Requires-Python support, the
native GitHub Action, extended build and test controls, and more!
If you are following the releases, 1.7.0 came out last November (2020), and
included the fantastic output folding feature, which makes logs much easier to
read on CI systems that support folding, and makes it much easier to see how
long each step takes. The 1.7.x series also included the addition of the
working examples section of the documentation, which tracks
some known projects using cibuildwheel, such as scikit-learn, Matplotlib, and
MyPy; it is a great place to go to look into how other projects have integrated
cibuildwheel into their workflow.
I have a general overview post as well. Now let’s look at what’s new! Update: cibuildwheel is now an official package of the PyPA!
[Read More]Overview of cibuildwheel π‘
This is the first of two posts on cibuildwheel, a fantastic project I
joined after switching to it from my own azure-wheel-helpers, which I’ve
blogged about here before. It is the best wheelbuilding
system available for Python today, and can make something that is normally a
pain to setup and a headache to maintain a breeze (by forcing all the headaches
on us, of course, as maintainers, but it’s better to solve issues centrally!
Obviously we rather like solving these problems. Or we are just crazy, which is
also possible ;) ).
Be sure to checkout
the followup post over new features in 1.8.0 and 1.9.0,
too! Also, cibuildwheel was recently accepted into the PyPA!