Free-Threading Trove Classifier?

There’s an open issue on the trove-classifiers project for this, so I posted the current thread summary there: Free threaded classifier? · Issue #177 · pypa/trove-classifiers · GitHub

I’ve repeated that summary below, but also have a process question: perhaps we should make this a PEP? Defining the trove classifiers is one thing, but we’d also like to see sites like https://py-free-threading.github.io/ updated with guidance on how to set them correctly, and potentially even the SC using them as a data point when deciding whether or not to advance the PEP 703 rollout to phase 2 (as described in PEP 703 (Making the Global Interpreter Lock Optional in CPython) acceptance ).


4 status tiers have been identified so far, different suggested names for some of the tiers are separated by “/”:

  • Experimental/Unstable: For experimentation and feedback only. Any binary extensions provided for free-threaded builds turn the GIL back on by default.
  • Beta: Free threaded usage is supported, but documentation of constraints and limitations may be incomplete. Any binary extensions provided for free-threaded builds leave the GIL disabled.
  • Stable/Limited/Limited Support: Free threaded usage is supported, and associated constraints and limitations are documented. Violating the documented constraints may result in segfaults rather than Python exceptions. Any binary extensions provided for free-threaded builds leave the GIL disabled.
  • Resilient/Supported: Free threaded usage is supported, and associated constraints and limitations are documented. Violating the documented constraints will reliably give Python exceptions rather than segfaults. Any binary extensions provided for free-threaded builds leave the GIL disabled.

Pure Python packages are permitted to use these classifiers (for example, a pure Python package may add cross-thread locking or subinterpreter invocations such that an underlying Experimental or Beta library effectively becomes Stable or Resilient when used via the free threading support layer).

An explicit numeric ordering (along the lines of that used for Development Stage classifiers) is not currently defined, but potentially could be.

The suggested prefix for the above would be Free Threading :: (as per python/steering-council#221 (comment) )

1 Like