Skip to content

Commit b18fd61

Browse files
committed
Clarify how building extensions for multiple platforms scales
This also mentions the use-case for the stable ABI for reducing the wheel compatibility matrix sizes.
1 parent 7ebb12f commit b18fd61

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

source/guides/packaging-binary-extensions.rst

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,22 @@ Building extensions for multiple platforms
288288
------------------------------------------
289289

290290
If you plan to distribute your extension, you should provide
291-
:term:`wheels <Wheel>` for all the platforms you intend to support. For most
292-
extensions, this is at least one package per Python version times the number of
293-
OS and architectures you support. These are usually built on continuous
294-
integration (CI) systems. There are tools to help you build highly
295-
redistributable binaries from CI; these include :ref:`cibuildwheel` and
296-
:ref:`multibuild`.
297-
291+
:term:`wheels <Wheel>` for all the platforms you intend to support. These
292+
are usually built on continuous integration (CI) systems. There are tools
293+
to help you build highly redistributable binaries from CI; these include
294+
:ref:`cibuildwheel` and :ref:`multibuild`.
295+
296+
For most extensions, you will need to build wheels for all the platforms
297+
you intend to support. This means that the number of wheels you need to
298+
build is the product of::
299+
300+
count(Python minor versions) * count(OS) * count(architectures)
301+
302+
Using CPython's :ref:`Stable ABI <cpython-stable-abi>` can help significantly
303+
reduce the number of wheels you need to provide, since a single wheel on a
304+
platform can be used with all Python minor versions; eliminating one dimension
305+
of the matrix. It also removes the need to generate new wheels for each new
306+
minor version of Python.
298307

299308
Binary extensions for Windows
300309
-----------------------------

0 commit comments

Comments
 (0)