9494 - { runner: ubuntu-24.04-arm, toolkit: "CUDA-12.8", test_backends: "cu126 cu130" }
9595 - { runner: macos-latest, toolkit: "Metal" }
9696 python-version :
97- # Wheels are built with Python 3.8 Limited API, they should work with all Python >= 3.8.
98- # Only build wheels against Python 3.8 Limited API to save CI resources.
97+ # Build wheels for different Python ABIs
9998 - " 3.9"
99+ # - "3.14t" # let user to build from source for now
100+ # TODO: Add cp315-abi3.abi3t after PEP 803
101+ include :
102+ # map build version to test version
103+ # Python 3.9 implicitly restrict torch version (e.g. on arm64).
104+ # This test rely on torch to provide libnvrtc, so we need a rather new torch.
105+ - { python-version: "3.9", test-python-version: "3.12" }
106+ # - { python-version: "3.14t", test-python-version: "3.14t" }
100107 fail-fast : false
101108 timeout-minutes : 120
102109 runs-on : ${{ matrix.target.runner }}
@@ -118,13 +125,11 @@ jobs:
118125 create-symlink : true
119126 evict-old-files : " 7d"
120127 append-timestamp : false
121- key : wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.target.toolkit }}-${{ hashFiles('**/*.cc') }}
128+ key : wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}-${{ hashFiles('**/*.cc') }}
122129 restore-keys : |
123- wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.target.toolkit }}-${{ hashFiles('**/*.cc') }}
124- wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.target.toolkit }}
130+ wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}-${{ hashFiles('**/*.cc') }}
131+ wheel-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}
125132 wheel-${{ runner.os }}-${{ runner.arch }}
126- ${{ runner.os }}-${{ runner.arch }}-${{ matrix.target.toolkit }}
127- ${{ runner.os }}-${{ runner.arch }}
128133
129134 - name : Set CIBW_BUILD
130135 run : |
@@ -166,9 +171,12 @@ jobs:
166171 run : |
167172 for WHEEL in wheelhouse/*.whl; do
168173 echo "Testing wheel: ${WHEEL}"
174+ if [[ "${WHEEL}" == *"abi3"* ]]; then
175+ uvx abi3audit --verbose --strict "${WHEEL}"
176+ fi
169177 (
170178 set -e
171- uv venv --python=3.12 test-venv
179+ uv venv test-venv
172180 source test-venv/bin/activate
173181 uv pip install -v "${WHEEL}"
174182 (
0 commit comments