crossbario / crossbario/autobahn-python

[FEATURE] Publish free-threaded (no-GIL) CPython 3.14 wheels (cp314t)

Open
#1,903 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

CI-CD enhancement
Dominant language
Python
Stars
2.5k
Forks
768
PR merge metrics
No merged PRs in 30d

Description

Follow-up to #1875 (Part 2). #1875 fixed the GIL cp314 wheel (the aarch64 slot was
accidentally shipping cp314t), added a reserved cpy314t env spec (cpython-3.14t), a
create-recipe PATH fix, and a build-time ABI guard (_check-venv-abi). This issue
tracks intentionally building and publishing free-threaded cp314t wheels as a
deliberate, supported variant.

Scope

Publish cp314-cp314t wheels alongside the GIL cp314 wheels on all platforms
(Linux x86_64 / aarch64 manylinux, macOS arm64, Windows amd64).

Prerequisite: free-threading safety (do NOT skip)

Building a cp314t wheel merely declares free-threading support; it does not make the
extension safe. Before publishing cp314t as supported:

  • Assess the NVX CFFI extensions (_utf8validator, _xormasker) for free-threading
    (no-GIL) safety — shared/global state, any implicit GIL assumptions, re-entrancy.
  • Add the free-threaded module declaration so the interpreter does not silently re-enable
    the GIL on import (CPython's Py_mod_gil / the CFFI equivalent). Confirm
    sys._is_gil_enabled() stays False after import autobahn.nvx….
  • Decide and document the support level (experimental vs supported).
Tasks
  • Add cpy314t to the build matrix (ENVS / the wheels workflows). The _get-spec
    mapping cpy314t -> cpython-3.14t is already in place from #1875, and _check-venv-abi
    already validates the ABI (expects free-threaded for *t envs).
  • Build cp314t on all four platforms; publish alongside cp314.
  • Add cpy314t-<platform>-<arch> targets to the check-release-fileset targets in
    release.yml (the shared action supports the 314t token via wamp-cicd #11).
  • Update docs/releases.rst wheel matrix and note the free-threading support level.
Related
  • #1875 (GIL fix + reserved cpy314t spec + _check-venv-abi guard + PATH fix).
  • wamp-cicd #11 (exact ABI-tag matching, so cp314 and cp314t slots are distinct).
  • zlmdb # (the mirror for zlmdb; LMDB/CFFI free-threading assessment).

Note: This work was drafted with AI assistance (Claude Code). Initiated and reviewed by me.

Checklist

  • I have searched existing issues to avoid duplicates
  • I have described the problem clearly
  • I have provided use cases
  • I have considered alternatives
  • I have assessed impact and breaking changes

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ENVS and wheels workflows, then inspect the NVX CFFI extensions _utf8validator and _xormasker for free-threading safety and module declarations. Update release.yml targets and docs/releases.rst after confirming sys._is_gil_enabled() remains False on import. Done means cp314t wheels are built and published for all four platforms, with the support level documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.