### Overview: what are the high level deliverables and project aims? Python is provisionally moving in the direction of disabling the GIL by default. See PEP 703 for more details. Upstream python refers to this as a "free-threaded" python build, but most people have been talking about it as a "nogil" python. Python 3.13 will include an early preview mode with the GIL disabled, hidden behind a `--disable-gil` compile-time configuration flag. Just shipping python without a free-threaded mode isn't very useful if none of the libraries in the PyData stack support it. That's where we come in: Meta has contracted Quansight Labs to jumpstart the work of adding support for free-threaded python to libraries in the PyData stack. Our initial goal is to get the libraries at the bottom of the PyData stack working and passing all their test suites with the GIL disabled. Longer term, we'd like to help facilitate a smooth transition to a free-threaded Python shipped by default and used by millions of developers to speed up and scale workflows all without creating disruption like the Python 2 -> 3 transition. ### Current status: what, if any, work has been done? Any initial wins? Current team is Ralf, Lysandros, Edgar, and myself. Ken Jin is working separately on CPython performance improvements. We've created a repository in the Quansight github org to track ecosystem-wide progress and store documentation and notes: https://github.com/Quansight-Labs/free-threaded-compatibility Building on work that was done for the pre-pep nogil CPython port, Cython is already fully working besides a few things like `prange` loops: https://github.com/cython/cython/pull/6137. The NumPy test suite passes and work continues on fixing thread safety issues not captured by the test suite: https://github.com/numpy/numpy/issues/26157 ### Roadmap: what’s planned for the next few months? We are slowly working our way up the PyData stack. We have already started with Cython and NumPy and will likely be looking at scikit-learn and SciPy next. We also plan to look at tools providing CPython C API bindings for other languages like pybind11 and PyO3 on our near-term roadmap. ### Challenges: Current test suites do not necessarily have good test coverage in multithreaded scenarios. Many threading bugs will not be noticed in the initial pass over libraries. ### How can you help? Start auditing libraries you maintain for C/C++/Cython thread safety issues that are currently masked by the GIL. Examples: * Any kind of global state in C code is likely unsafe * Python bindings for thread-unsafe C libraries will need to be guarded by mutexes * CPython C API usages that produce borrowed references are unsafe