Skip to main content

Demo of wide Stable ABI compatibility.

Project description

This minimal extension demoes wide Stable ABI compatibility.

Four wheels to cover 3 CPython versions × 3 operating systems × 2 GIL/free-threading variants.

Note that up-to date tools -- ones that are aware of the abi3t wheel tag (for example, pip >= 26.1, packaging >= 26.1, uv >= 0.11.3).

CPython versions: 3.13, 3.14, and 3.15.0b1+.

OSs: Linux (64-bit x86), macOS (universal2), Windows (64-bit x86) (Covering other CPU architectures is possible but would mostly just complicate this demo.)

The shim

The file ft_compat.h contains the compatibility shim needed to make the new API necessary for abi3t (PEP 793 PyModExport & PEP 803 PySlot) work on older versions of Python. It's intended to be reusable, and includes a usage comment.

Note that the extension must be compiled with CPython 3.15+.

Installation

python -m pip install abi3-abi3t-universal

Usage

There's one trivial function that increments and returns a number, mostly to demo module state.

>>> import abi3_abi3t_universal
>>> abi3_abi3t_universal.increment_value()
0
>>> abi3_abi3t_universal.increment_value()
1
>>> abi3_abi3t_universal.increment_value()
2

Caveats

As abi3t is not widely supported in build tools at the time of writing, we use Setuptools, and reach into its internals to select the appropriate tags.

Windows

On Windows, until CPython 3.15.0b2, separate abi3 and abi3t wheels are required due to DLL linkage details. (This will not be fixed for 3.13 and 3.14.)

This project builds two wheels:

  • abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl
  • abi3_abi3t_universal-0.2-cp313-abi3t-win_amd64.whl

For real libraries, it might be more practical to build 4 wheels, three of which can be dropped when 3.13 & 3.14 support is removed:

  • abi3_abi3t_universal-0.2-cp313-cp313t-win_amd64.whl (for 3.13 FT)
  • abi3_abi3t_universal-0.2-cp314-cp314t-win_amd64.whl (for 3.14 FT)
  • abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl (for 3.13 GIL & 3.14 GIL)
  • abi3_abi3t_universal-0.2-cp315-abi3.abi3t-win_amd64.whl (3.15+)

(The first two can be merged into cp313.cp314-cp313t.cp314t but I'd be a bit worried about tool support for such a tag.)

Licence

All my contributions are marked CC0 1.0, see LICENCE.CC0.

The file ft_compat.h copies/adapts definitions from CPython headers, as necessary for compatibility. I'm pretty sure that's fair use, but I'm not a lawyer. Follow the PSF licence to be safe.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

abi3_abi3t_universal-0.2-cp313-abi3t-win_amd64.whl (11.4 kB view details)

Uploaded CPython 3.13Windows x86-64

abi3_abi3t_universal-0.2-cp313-abi3.abi3t-manylinux1_x86_64.manylinux_2_5_x86_64.whl (14.0 kB view details)

Uploaded CPython 3.13CPython 3.13+manylinux: glibc 2.5+ x86-64

abi3_abi3t_universal-0.2-cp313-abi3.abi3t-macosx_10_15_universal2.whl (10.8 kB view details)

Uploaded CPython 3.13CPython 3.13+macOS 10.15+ universal2 (ARM64, x86-64)

abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl (11.4 kB view details)

Uploaded CPython 3.13+Windows x86-64

File details

Details for the file abi3_abi3t_universal-0.2-cp313-abi3t-win_amd64.whl.

File metadata

File hashes

Hashes for abi3_abi3t_universal-0.2-cp313-abi3t-win_amd64.whl
Algorithm Hash digest
SHA256 613cb2cdc8b44ac962150a82b1f4508cb56ad37f02234e7ba0965d7c129d712e
MD5 6358a2588aaaf41345c70458db1e5a3a
BLAKE2b-256 9369e79d6bc92581cf266ede96cfe374bbfd85deae33299bd2e5770434f4f91c

See more details on using hashes here.

Provenance

The following attestation bundles were made for abi3_abi3t_universal-0.2-cp313-abi3t-win_amd64.whl:

Publisher: workflow.yml on encukou/abi3-abi3t-universal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file abi3_abi3t_universal-0.2-cp313-abi3.abi3t-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for abi3_abi3t_universal-0.2-cp313-abi3.abi3t-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9156ea7a9c144193f2456bd7663fafa7d8b44e5ba75f39aa069feff3b4b07dec
MD5 057af7eed183685cff9e4df2a29e4cce
BLAKE2b-256 bc111413e559c5164d1299786977c41db640100d47e2b0d96aab13d7eb6c0cbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for abi3_abi3t_universal-0.2-cp313-abi3.abi3t-manylinux1_x86_64.manylinux_2_5_x86_64.whl:

Publisher: workflow.yml on encukou/abi3-abi3t-universal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file abi3_abi3t_universal-0.2-cp313-abi3.abi3t-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for abi3_abi3t_universal-0.2-cp313-abi3.abi3t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 84ecaca439eb99db8d071fb926047ad6e460e2c42671cee653839c134f1c6a31
MD5 887bc3a5300c9a16ed784c410743d0a4
BLAKE2b-256 867bbd6a19d275524e9635b1fa336547da7665a0a36d483d01cbf611051b9075

See more details on using hashes here.

Provenance

The following attestation bundles were made for abi3_abi3t_universal-0.2-cp313-abi3.abi3t-macosx_10_15_universal2.whl:

Publisher: workflow.yml on encukou/abi3-abi3t-universal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b27fc30b3d85e69b080b55deb87027755f3fce3a0a8a96bd6aecae53fced2347
MD5 fa54254932d828fbaec163e40dca82dc
BLAKE2b-256 ba7479bc37a63ae0c1b7bf16a7b4a058f7561f2fdde1931c1249fa7e8f689bd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for abi3_abi3t_universal-0.2-cp313-abi3-win_amd64.whl:

Publisher: workflow.yml on encukou/abi3-abi3t-universal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page