Packaging Python extensions with ABI3
15/10/2026 , Sala 3

Are you maintaining complex build matrices with cibuildwheel? Multiple platforms x Python versions? It is time to move to the stable ABI3 and reduce the maintainer burden!


In this tutorial we will cover how to move a Python extension package build setup to ABI3. The goal is to help maintainer reduce the build matrix by building it for only 1 Python version that is forwards compatible.


Quais conhecimentos prévios são necessários para que seja possível acompanhar bem a sua atividade?:

This tutorial are for those that that packaged Python C/C++, Rust, or Fortran extensions, and distributes it on PyPI using cibuildwheel. Folks that maintain existing workflows, but did not create the, are also the target audience for this tutorial.

O que as pessoas que participarem podem esperar aprender na sua atividade?:

We hope that participantes will be able to modify existing Python extensions build setups to ABI3 instead of specialized builds, in more detail they will:

  • Learn how to adapt existing setup.py to ABI3 support
  • Run specialized builds setups (non-ABI3) together with ABI3;
  • Learn how to modify their pyproject.toml configs to ABI3;
  • Implement cibuildwheel configuration from zero or from existing non-ABI3 setups;
  • Test the artifact for ABI3 compatibility
  • Test the wheel in forwards Python version;
  • Adapt existing extensions written in C/C++ corner cases to ABI3;
Escolha uma ou mais áreas em que essa proposta se encaixa: Testes, DevOps e Automação de Infraestrutura, Computação Científica

I'm a Physical oceanographer by training, turned research software engineer, and a software packager hobbyist. Nobody loves software packaging, but I do love to see how helpful it can be to others!