Skip to content

[Decided] Free-threaded CPython 3.15t is the only build; make every repo correct on it #158

Open

Description

@b-re-w

Decision needed (asked 2026-10-04). Background: AGENTS §12.8 (parallelism from free-threaded CPython), ROADMAP §9, SPEC T-1/T-2, docs/design/threading-and-abi.md.

Why the default stays GIL today: no free-threaded prebuilt for Android or iOS (checked 2026-08-12), so switching splits the threading, lifetime and thread-state design across platforms; free-threaded wheel coverage of C extensions is thin; our own code is not ready (PyType.getInstance cache race, GIL release after init not enabled (C-4), ROADMAP 9.1 open).

Recommendation:

  1. Keep pythonFreeThreaded=false as the default.
  2. Make every thisisthepy repo free-threaded-ready: no reliance on GIL atomicity; a required CI job on desktop 3.14t for python-multiplatform, TypedPython and pythonx-*; native extensions declare Py_MOD_GIL_NOT_USED only once proven thread-safe.
  3. TypedPython free-threaded support as its own stage (see linked issue).
  4. Binder issues: PyType cache race, GIL release after init, withGIL on JVM virtual threads.
  5. Investigate building free-threaded CPython for Android and iOS ourselves.

Options: (a) the above; (b) switch desktop default to 3.14t now and accept the platform split; (c) do nothing until upstream mobile prebuilts exist.

Activity

  1. b-re-w commented on Oct 3, 2026

    @b-re-w
    MemberAuthor

    Decided by the maintainer, 2026-10-04:

  2. changed the title [-][Decision] Free-threaded readiness: keep GIL as default, make every repo correct on 3.14t[/-] [+][Decided] Free-threaded CPython 3.15t is the only build; make every repo correct on it[/+] on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions