The No-GIL Python: A Recipe for Disaster?
As the Python community embarks on a quest to improve performance and bring cross-core threading to the CPython runtime, I find myself questioning the wisdom of removing the Global Interpreter Lock (GIL). The proposed changes, outlined in Python Enhancement Proposal (PEP) 703, may bring about unintended consequences that could ultimately harm the Python ecosystem.
Slower Single-Threaded Execution
One of the primary concerns is the potential degradation of single-threaded execution performance. By removing the GIL, Python may sacrifice its ability to efficiently execute single-threaded applications. This could lead to slower execution times, which would be a significant step backward for the language.
Multi-Version Support
Another issue arises from the need to support both GIL and non-GIL distributions. This would put library maintainers in the unenviable position of supporting two distributions simultaneously, leading to added complexity and potential compatibility issues.
Incompatible External Functions
Python’s strength lies in its ability to call functions and procedures in other languages, such as Java and C++. However, these external functions expect to be invoked in a safe, single-threaded manner. If a no-GIL Python is to work, all these external systems must be updated as well, which could be a daunting task.
Stop-the-World Events
Memory management becomes increasingly complex in a multi-threaded environment. To support garbage collection (GC), the no-GIL Python requires two stop-the-world (STW) events to reclaim memory. These events can cause programs to freeze for extended periods, which could be detrimental to user experience.
Mass Exodus to Mojo
The transition to a no-GIL Python is fraught with uncertainty. Platform instability issues are expected, and users will need to rewrite working code to deal with no-GIL changes. Meanwhile, Python-compatible runtimes like Mojo already provide the benefits of a no-GIL Python, making them a more attractive option for developers.
It Won’t Work
The biggest problem with no-GIL Python? It probably won’t work. Even Python creator Guido van Rossum has expressed doubts about the feasibility of removing the GIL. With so many uncertainties and potential pitfalls, I fear that the pursuit of a no-GIL Python runtime may be a giant mistake.
Python’s future hangs in the balance
The complexities of multi-threading
Mojo, the alternative to Python
Guido van Rossum, Python creator