Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proper free-threaded ABI support blockers #126

Open
3 of 10 tasks
nitzmahone opened this issue Sep 6, 2024 · 0 comments
Open
3 of 10 tasks

Proper free-threaded ABI support blockers #126

nitzmahone opened this issue Sep 6, 2024 · 0 comments

Comments

@nitzmahone
Copy link
Member

nitzmahone commented Sep 6, 2024

Tracking known blockers to actual support of Python's new t free-threaded ABI - add new ones as we discover them.

  • Extensions built with Py_LIMITED_API (default) under t ABI will always segfault. (fixed by Hard disable Py_LIMITED_API under free-threaded build #125)
  • Threaded embedding tests fail under free-threaded build. ([Python bug]
    (Crash in Py_Initialize in non-main thread in free-threading build python/cpython#123022), fixed in 3.13.0rc2)
  • Add non-artifact CI job for 3.13t.
  • Evaluate all type creation/caching code for obvious GIL-incidental locking or deadlock issues sans GIL.
  • Evaluate all manual refcounting, buffer manipulations, marshaling code, etc for obvious concurrency issues.
  • Build a lot more threaded stress tests for the above, measure coverage.
  • Update documentation to describe current state, concerns around GIL-free operation modes.
  • Once we have some confidence in true GIL-free operations, provide a high-level opt-in/out for CFFI-backed extensions to call PyUnstable_Module_SetGIL() during extension init to control the automatic legacy extension GIL re-enable.
  • Remove known dead code from active development branches (ala Remove pre-Python 3.8 C code #124).
  • Work with high-profile CFFI-consuming projects (e.g. cryptography, pynacl, pygame, ?) to ensure any future threaded stress tests are not broken by CFFI issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant