From c468060e622ba5754732fcb1676ceb4bdb9297e1 Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Wed, 22 Apr 2026 15:00:45 -0700 Subject: [PATCH 1/2] build windows arm separately --- .github/workflows/CI.yml | 48 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b03a0d4..9965339 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -110,9 +110,6 @@ jobs: - runner: windows-latest target: x86 python_arch: x86 - - runner: windows-11-arm - target: aarch64 - python_arch: arm64 steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 @@ -141,6 +138,49 @@ jobs: name: wheels-windows-${{ matrix.platform.target }} path: dist + # windows-11-arm is split into two jobs because installing both 3.13 and 3.14t + # into the same runner's hostedtoolcache collides on arm64. + # See https://github.com/actions/setup-python/issues/1241 + windows_arm: + runs-on: windows-11-arm + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 + with: + python-version: 3.13 + architecture: arm64 + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: aarch64 + args: --release --out dist + sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + - name: Upload wheels + uses: actions/upload-artifact@v6 + with: + name: wheels-windows-aarch64 + path: dist + + windows_arm_freethreaded: + runs-on: windows-11-arm + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 + with: + python-version: 3.14t + architecture: arm64 + - name: Build free-threaded wheels + uses: PyO3/maturin-action@v1 + with: + target: aarch64 + args: --release --out dist -i python3.14t + sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + - name: Upload wheels + uses: actions/upload-artifact@v6 + with: + name: wheels-windows-aarch64-freethreaded + path: dist + macos: runs-on: ${{ matrix.platform.runner }} strategy: @@ -195,7 +235,7 @@ jobs: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} - needs: [linux, musllinux, windows, macos, sdist] + needs: [linux, musllinux, windows, windows_arm, windows_arm_freethreaded, macos, sdist] permissions: # Use to sign the release artifacts id-token: write From 0da8512fb4afab848749c7bd3c755e6df913f777 Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Wed, 22 Apr 2026 15:08:46 -0700 Subject: [PATCH 2/2] free threaded on windows is experiencing issues --- .github/workflows/CI.yml | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9965339..a3114c3 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -138,9 +138,10 @@ jobs: name: wheels-windows-${{ matrix.platform.target }} path: dist - # windows-11-arm is split into two jobs because installing both 3.13 and 3.14t - # into the same runner's hostedtoolcache collides on arm64. - # See https://github.com/actions/setup-python/issues/1241 + # Free-threaded 3.14t wheels for windows-11-arm are skipped: the runner image + # ships with Python 3.14 GIL preinstalled, which breaks setup-python's 3.14t + # install. Tracked upstream at + # https://github.com/actions/partner-runner-images/issues/154 windows_arm: runs-on: windows-11-arm steps: @@ -161,26 +162,6 @@ jobs: name: wheels-windows-aarch64 path: dist - windows_arm_freethreaded: - runs-on: windows-11-arm - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 - with: - python-version: 3.14t - architecture: arm64 - - name: Build free-threaded wheels - uses: PyO3/maturin-action@v1 - with: - target: aarch64 - args: --release --out dist -i python3.14t - sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - - name: Upload wheels - uses: actions/upload-artifact@v6 - with: - name: wheels-windows-aarch64-freethreaded - path: dist - macos: runs-on: ${{ matrix.platform.runner }} strategy: @@ -235,7 +216,7 @@ jobs: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} - needs: [linux, musllinux, windows, windows_arm, windows_arm_freethreaded, macos, sdist] + needs: [linux, musllinux, windows, windows_arm, macos, sdist] permissions: # Use to sign the release artifacts id-token: write