ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://www.infoworld.com/article/2338862/python-moves-to-remove-the-gil-and-boost-concurrency.html |
| Last Crawled | 2026-04-08 23:32:47 (11 hours ago) |
| First Indexed | 2024-06-17 01:21:50 (1 year ago) |
| HTTP Status Code | 200 |
| Meta Title | Python moves to remove the GIL and boost concurrency | InfoWorld |
| Meta Description | Formal plans for a Python that supports true parallelism are finally on the table. Here’s how a GIL-free Python will finally come together. |
| Meta Canonical | null |
| Boilerpipe Text | news analysis
Aug 4, 2023
7 mins
After much debate, the Python Steering Council intends to approve a proposal,
PEP 703
, “Making the Global Interpreter Lock Optional in
CPython
.”
This proposal is the culmination of many attempts over the years to
remove Python’s Global Interpreter Lock, or GIL
. Removing the GIL removes a major obstacle to multi-threading, making Python a truly multi-core language and significantly improving its performance for workloads that benefit from parallelism.
With this proposal, first-class support for multi-threading and concurrency in Python is a step closer to becoming reality.
Why remove Python’s GIL?
Python’s memory management system keeps track of object usage by maintaining counts of the number of references to each object. When the reference count for an object falls to zero, the object is slated for removal.
Because
Python
was created at a time when multi-processor systems were a rarity, and multi-core processors were non-existent, this reference count mechanism isn’t thread-safe. Instead, Python achieves thread safety by allowing only one thread to access an object at a time. This is the purpose of the GIL.
Many projects over the years have attempted to remove the GIL. They did enable multi-threaded programs to run faster, but at the cost of degrading the performance of single-threaded programs. Given the vast majority of Python applications are single-threaded, this was a poor trade-off. Although refinements to the GIL have improved its handling of multi-threaded apps, it’s still a serious bottleneck.
Python’s core developers finally decided to remove the GIL from CPython, but only if it could be done without slowing down single-threaded programs.
How a GIL-free Python will work
The current proposals for a no-GIL edition of Python use a mix of techniques to make reference counting thread-safe, and leave the speed of single-threaded programs untouched or impact it only minimally.
Biased reference counting.
Counts for objects accessed by only a single thread would be handled differently (and more quickly) than counts for objects accessed by multiple threads. Since most objects are accessed by only one thread, the impact on single-threaded programs is minimized.
Immortalization.
Some objects, like
None
, never need to be deallocated, so their reference counts do not need to be tracked.
Thread-safe memory allocation.
A new memory allocation system for CPython objects will make it easier to trace objects in the garbage collector, and to allocate memory in a thread-safe way.
Deferred reference counting.
Reference counts for some objects, like top-level functions in a module, can be safely deferred. This saves both time and resources.
A revised garbage collector.
The CPython garbage collector cleans up cyclical object references, where two or more objects hold references to each other. The no-GIL build
makes many changes
to the garbage collector, such as removing the “generations” system for tracking objects.
How a GIL-free Python will be phased in
Implementing PEP 703 is a long-term project that will take place in multiple stages over several years. During this time, the CPython interpreter will transition to make the no-GIL version first optional, then supported, and finally the standard version of CPython.
To accomplish this, CPython’s developers will add an experimental “no-GIL”
build
mode to CPython, so that one can compile a version of CPython with or without the GIL. Eventually, the no-GIL build will become the default.
Here is how the plan to remove the GIL from CPython is set to unfold.
Step 1: No-GIL CPython is optional
The first incarnations of a no-GIL CPython will be experimental, for both CPython developers and the larger Python community. This experimental phase has several goals:
Get the rest of the Python community involved.
Any major change to Python needs buy-in from the wider Python community. The experimental builds give Python users a way to safely experiment with testing their code, and to see how both non-threaded and threaded code will behave.
Give Python distributions the option, not the requirement, to ship a GIL-less Python.
Python distributions like Conda or WinPython need to guarantee compatibility with stock CPython. During the transition phase, they could provide the option to install the regular or GIL-less version of CPython. This would allow Conda or WinPython users to pick the version most compatible with their needs.
Determine whether the no-GIL project is worthwhile.
If the community tries out the GIL-less builds at scale and is unhappy with the results, the core CPython developers reserve the right to back out. Having dual builds means a heavier maintenance burden in the short term, but provides an escape hatch if the no-GIL project proves unworthy.
Step 2: No-GIL CPython is supported
The next stage will be to offer the no-GIL build as a supported alternative build for CPython. A user would have the choice of installing either the no-GIL or GIL build, with either one being a formally supported version of CPython that receives bug fixes, security patches, and updates.
One big goal of this stage is to set a target date for making no-GIL the default. This will likely happen on the same timeline as the deprecation and removal of other Python features—at least two or three versions, meaning at least two or three years.
Step 3: No-GIL CPython is the default
The final stage would be to make the no-GIL version of CPython the default build, and to remove
all
GIL-related code from CPython. “We don’t want to wait too long with this,”
wrote Thomas Wouters
, CPython core developer, “because having two common build modes may be a heavy burden on the community (as, for example, it can double test resources and debugging scenarios), but we can’t rush it either. We think it may take as much as five years to get to this stage.”
The biggest challenges to removing the GIL
The biggest challenges present in this plan aren’t only technical, although the technical challenges are daunting. What looms even larger is how to bring the rest of the Python ecosystem into line with these changes—and make sure a GIL-less Python doesn’t create more problems than it solves.
According to Wouters, “… any changes in third-party code needed to accommodate no-GIL builds should just work in with-GIL builds (although backward compatibility with older Python versions will still need to be addressed).”
The other big challenge, as mentioned above, is “to bring along the rest of the Python community,” said Wouters, “… and make sure the changes we want to make, and the changes we want them to make, are palatable.
“Before we commit to switching entirely to the no-GIL build, we need to see community support for it,” Wouters said. “We can’t just flip the default and expect the community to figure out what work they need to do to support it.”
The Python community experienced huge growing pains when transitioning from Python 2 to Python 3, so any big changes like removing the GIL would have to be thoroughly backwards compatible. As Wouters put it, “We do not want another Python 3 situation.”
Beyond the perils and challenges lies a great reward: A Python that finally supports the parallelism that programmers have come to expect in the 21st century.
Senior Writer
Serdar Yegulalp is a senior writer at
InfoWorld
. A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024
Neal Award
and a 2025
Azbee Award
for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly
Dev with Serdar
videos for programming tips and techniques and close looks at programming libraries and tools.
More from this author |
| Markdown | 1. Topics
2. [Latest](https://www.infoworld.com/news/)
3. [Newsletters](https://www.infoworld.com/newsletters/signup/)
4. [Resources](https://us.resources.infoworld.com/)
5. [Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
## About
- [About Us](https://www.infoworld.com/about-us/)
- [Advertise](https://foundryco.com/our-brands/infoworld/)
- [Contact Us](https://www.infoworld.com/contact-us/)
- [Editorial Ethics Policy](https://www.infoworld.com/editorial-ethics-policy/)
- [Foundry Careers](https://foundryco.com/work-here/)
- [Newsletters](https://www.infoworld.com/newsletters/signup/)
- [Reprints](https://www.infoworld.com/contact-us/#republication-permissions)
- [Add InfoWorld as a Preferred Source in Google Search](https://www.google.com/preferences/source?q=infoworld.com)
## Policies
- [Terms of Service](https://foundryco.com/terms-of-service-agreement/)
- [Privacy Policy](https://foundryco.com/privacy-policy/)
- [Cookie Policy](https://foundryco.com/cookie-policy/)
- [Copyright Notice](https://foundryco.com/copyright-notice/)
- [Member Preferences](https://www.infoworld.com/member-preferences/)
- [About AdChoices](https://foundryco.com/ad-choices/)
- [Your California Privacy Rights](https://foundryco.com/ccpa/)
## Our Network
- [CIO](https://www.cio.com/)
- [Computerworld](https://www.computerworld.com/)
- [CSO](https://www.csoonline.com/)
- [Network World](https://www.networkworld.com/)
## More
- [News](https://www.infoworld.com/news/)
- [Features](https://www.infoworld.com/features/)
- [Blogs](https://www.infoworld.com/blogs/)
- [BrandPosts](https://www.infoworld.com/brandposts/)
- [Events](https://www.infoworld.com/events/)
- [Videos](https://www.infoworld.com/videos/)
- [Enterprise Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
Close
- [Analytics](https://www.infoworld.com/analytics/)
- [Artificial Intelligence](https://www.infoworld.com/artificial-intelligence/)
- [Generative AI](https://www.infoworld.com/generative-ai/)
- [Careers](https://www.infoworld.com/careers/)
- [Cloud Computing](https://www.infoworld.com/cloud-computing/)
- [Data Management](https://www.infoworld.com/data-management/)
- [Databases](https://www.infoworld.com/database/)
- [Emerging Technology](https://www.infoworld.com/emerging-technology/)
- [Technology Industry](https://www.infoworld.com/technology-business/)
- [Security](https://www.infoworld.com/security/)
- [Software Development](https://www.infoworld.com/software-development/)
- [Microsoft .NET](https://www.infoworld.com/microsoft-net/)
- [Development Tools](https://www.infoworld.com/development-tools/)
- [Devops](https://www.infoworld.com/devops/)
- [Open Source](https://www.infoworld.com/open-source/)
- [Programming Languages](https://www.infoworld.com/programming-languages/)
- [Java](https://www.infoworld.com/java/)
- [JavaScript](https://www.infoworld.com/javascript/)
- [Python](https://www.infoworld.com/python/)
- [IT Leadership](https://www.infoworld.com/it-leadership/)
- [Enterprise Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
Back
Close
Back
Close
Popular Topics
- [Artificial Intelligence](https://www.infoworld.com/artificial-intelligence/)
- [Cloud Computing](https://www.infoworld.com/cloud-computing/)
- [Data Management](https://www.infoworld.com/data-management/)
- [Software Development](https://www.infoworld.com/software-development/)
- Search
- Topics
- [Latest](https://www.infoworld.com/news/)
- [Newsletters](https://www.infoworld.com/newsletters/signup/)
- [Resources](https://us.resources.infoworld.com/)
- [Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
- About
- Policies
- Our Network
- More
Back
## Topics
- [Analytics](https://www.infoworld.com/analytics/)
- [Artificial Intelligence](https://www.infoworld.com/artificial-intelligence/)
- [Generative AI](https://www.infoworld.com/generative-ai/)
- [Careers](https://www.infoworld.com/careers/)
- [Cloud Computing](https://www.infoworld.com/cloud-computing/)
- [Data Management](https://www.infoworld.com/data-management/)
- [Databases](https://www.infoworld.com/database/)
- [Emerging Technology](https://www.infoworld.com/emerging-technology/)
- [Technology Industry](https://www.infoworld.com/technology-business/)
- [Security](https://www.infoworld.com/security/)
- [Software Development](https://www.infoworld.com/software-development/)
- [Microsoft .NET](https://www.infoworld.com/microsoft-net/)
- [Development Tools](https://www.infoworld.com/development-tools/)
- [Devops](https://www.infoworld.com/devops/)
- [Open Source](https://www.infoworld.com/open-source/)
- [Programming Languages](https://www.infoworld.com/programming-languages/)
- [Java](https://www.infoworld.com/java/)
- [JavaScript](https://www.infoworld.com/javascript/)
- [Python](https://www.infoworld.com/python/)
- [IT Leadership](https://www.infoworld.com/it-leadership/)
- [Enterprise Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
Back
## About
- [About Us](https://www.infoworld.com/about-us/)
- [Advertise](https://foundryco.com/our-brands/infoworld/)
- [Contact Us](https://www.infoworld.com/contact-us/)
- [Editorial Ethics Policy](https://www.infoworld.com/editorial-ethics-policy/)
- [Foundry Careers](https://foundryco.com/work-here/)
- [Newsletters](https://www.infoworld.com/newsletters/signup/)
- [Reprints](https://www.infoworld.com/contact-us/#republication-permissions)
- [Add InfoWorld as a Preferred Source in Google Search](https://www.google.com/preferences/source?q=infoworld.com)
Back
## Policies
- [Terms of Service](https://foundryco.com/terms-of-service-agreement/)
- [Privacy Policy](https://foundryco.com/privacy-policy/)
- [Cookie Policy](https://foundryco.com/cookie-policy/)
- [Copyright Notice](https://foundryco.com/copyright-notice/)
- [Member Preferences](https://www.infoworld.com/member-preferences/)
- [About AdChoices](https://foundryco.com/ad-choices/)
- [Your California Privacy Rights](https://foundryco.com/ccpa/)
Back
## Our Network
- [CIO](https://www.cio.com/)
- [Computerworld](https://www.computerworld.com/)
- [CSO](https://www.csoonline.com/)
- [Network World](https://www.networkworld.com/)
Back
## More
- [News](https://www.infoworld.com/news/)
- [Features](https://www.infoworld.com/features/)
- [Blogs](https://www.infoworld.com/blogs/)
- [BrandPosts](https://www.infoworld.com/brandposts/)
- [Events](https://www.infoworld.com/events/)
- [Videos](https://www.infoworld.com/videos/)
- [Enterprise Buyer’s Guides](https://www.infoworld.com/enterprise-buyers-guide/)
1. [Home](https://www.infoworld.com/)
2. [Software Development](https://www.infoworld.com/software-development/)
3. [Programming Languages](https://www.infoworld.com/programming-languages/)
4. [Python](https://www.infoworld.com/python/)

by [Serdar Yegulalp](https://www.infoworld.com/profile/serdar-yegulalp/)
Senior Writer
# Python moves to remove the GIL and boost concurrency
news analysis
Aug 4, 20237 mins
## Formal plans for a Python that supports true parallelism are finally on the table. Here’s how a GIL-free Python will finally come together.

Credit: graemenicholson / Getty Images
After much debate, the Python Steering Council intends to approve a proposal, [PEP 703](https://peps.python.org/pep-0703/), “Making the Global Interpreter Lock Optional in [CPython](https://www.infoworld.com/article/2262455/what-is-cython-python-at-the-speed-of-c.html).”
This proposal is the culmination of many attempts over the years to [remove Python’s Global Interpreter Lock, or GIL](https://www.infoworld.com/article/2337804/is-it-finally-time-to-remove-the-python-gil.html). Removing the GIL removes a major obstacle to multi-threading, making Python a truly multi-core language and significantly improving its performance for workloads that benefit from parallelism.
#### \[ [Also on InfoWorld: Is it finally time to remove Python’s GIL?](https://www.infoworld.com/article/2337804/is-it-finally-time-to-remove-the-python-gil.html) \]
With this proposal, first-class support for multi-threading and concurrency in Python is a step closer to becoming reality.
## Why remove Python’s GIL?
Python’s memory management system keeps track of object usage by maintaining counts of the number of references to each object. When the reference count for an object falls to zero, the object is slated for removal.
Because [Python](https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html) was created at a time when multi-processor systems were a rarity, and multi-core processors were non-existent, this reference count mechanism isn’t thread-safe. Instead, Python achieves thread safety by allowing only one thread to access an object at a time. This is the purpose of the GIL.
Many projects over the years have attempted to remove the GIL. They did enable multi-threaded programs to run faster, but at the cost of degrading the performance of single-threaded programs. Given the vast majority of Python applications are single-threaded, this was a poor trade-off. Although refinements to the GIL have improved its handling of multi-threaded apps, it’s still a serious bottleneck.
Python’s core developers finally decided to remove the GIL from CPython, but only if it could be done without slowing down single-threaded programs.
## How a GIL-free Python will work
The current proposals for a no-GIL edition of Python use a mix of techniques to make reference counting thread-safe, and leave the speed of single-threaded programs untouched or impact it only minimally.
- **Biased reference counting.** Counts for objects accessed by only a single thread would be handled differently (and more quickly) than counts for objects accessed by multiple threads. Since most objects are accessed by only one thread, the impact on single-threaded programs is minimized.
- **Immortalization.** Some objects, like `None`, never need to be deallocated, so their reference counts do not need to be tracked.
- **Thread-safe memory allocation.** A new memory allocation system for CPython objects will make it easier to trace objects in the garbage collector, and to allocate memory in a thread-safe way.
- **Deferred reference counting.** Reference counts for some objects, like top-level functions in a module, can be safely deferred. This saves both time and resources.
- **A revised garbage collector.** The CPython garbage collector cleans up cyclical object references, where two or more objects hold references to each other. The no-GIL build [makes many changes](https://peps.python.org/pep-0703/#garbage-collection-cycle-collection) to the garbage collector, such as removing the “generations” system for tracking objects.
## How a GIL-free Python will be phased in
Implementing PEP 703 is a long-term project that will take place in multiple stages over several years. During this time, the CPython interpreter will transition to make the no-GIL version first optional, then supported, and finally the standard version of CPython.
To accomplish this, CPython’s developers will add an experimental “no-GIL” *build* mode to CPython, so that one can compile a version of CPython with or without the GIL. Eventually, the no-GIL build will become the default.
Here is how the plan to remove the GIL from CPython is set to unfold.
### Step 1: No-GIL CPython is optional
The first incarnations of a no-GIL CPython will be experimental, for both CPython developers and the larger Python community. This experimental phase has several goals:
- **Get the rest of the Python community involved.** Any major change to Python needs buy-in from the wider Python community. The experimental builds give Python users a way to safely experiment with testing their code, and to see how both non-threaded and threaded code will behave.
- **Give Python distributions the option, not the requirement, to ship a GIL-less Python.** Python distributions like Conda or WinPython need to guarantee compatibility with stock CPython. During the transition phase, they could provide the option to install the regular or GIL-less version of CPython. This would allow Conda or WinPython users to pick the version most compatible with their needs.
- **Determine whether the no-GIL project is worthwhile.** If the community tries out the GIL-less builds at scale and is unhappy with the results, the core CPython developers reserve the right to back out. Having dual builds means a heavier maintenance burden in the short term, but provides an escape hatch if the no-GIL project proves unworthy.
### Step 2: No-GIL CPython is supported
The next stage will be to offer the no-GIL build as a supported alternative build for CPython. A user would have the choice of installing either the no-GIL or GIL build, with either one being a formally supported version of CPython that receives bug fixes, security patches, and updates.
One big goal of this stage is to set a target date for making no-GIL the default. This will likely happen on the same timeline as the deprecation and removal of other Python features—at least two or three versions, meaning at least two or three years.
### Step 3: No-GIL CPython is the default
The final stage would be to make the no-GIL version of CPython the default build, and to remove *all* GIL-related code from CPython. “We don’t want to wait too long with this,” [wrote Thomas Wouters](https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474), CPython core developer, “because having two common build modes may be a heavy burden on the community (as, for example, it can double test resources and debugging scenarios), but we can’t rush it either. We think it may take as much as five years to get to this stage.”
#### \[ [Tune into Dev with Serdar to get Python coding tips in 5 minutes or less](https://www.infoworld.com/video/series/8675/dev-with-serdar) \]
## The biggest challenges to removing the GIL
The biggest challenges present in this plan aren’t only technical, although the technical challenges are daunting. What looms even larger is how to bring the rest of the Python ecosystem into line with these changes—and make sure a GIL-less Python doesn’t create more problems than it solves.
According to Wouters, “… any changes in third-party code needed to accommodate no-GIL builds should just work in with-GIL builds (although backward compatibility with older Python versions will still need to be addressed).”
The other big challenge, as mentioned above, is “to bring along the rest of the Python community,” said Wouters, “… and make sure the changes we want to make, and the changes we want them to make, are palatable.
“Before we commit to switching entirely to the no-GIL build, we need to see community support for it,” Wouters said. “We can’t just flip the default and expect the community to figure out what work they need to do to support it.”
The Python community experienced huge growing pains when transitioning from Python 2 to Python 3, so any big changes like removing the GIL would have to be thoroughly backwards compatible. As Wouters put it, “We do not want another Python 3 situation.”
Beyond the perils and challenges lies a great reward: A Python that finally supports the parallelism that programmers have come to expect in the 21st century.
[Python](https://www.infoworld.com/python/)[Programming Languages](https://www.infoworld.com/programming-languages/)[Software Development](https://www.infoworld.com/software-development/)
## Related content
[news Z.ai unveils GLM-5.1, enabling AI coding agents to run autonomously for hours By Prasanth Aby Thomas Apr 8, 2026 4 mins Artificial Intelligence Development Tools Open Source](https://www.infoworld.com/article/4155622/z-ai-unveils-glm-5-1-enabling-ai-coding-agents-to-run-autonomously-for-hours-2.html)
[news Microsoft’s new Agent Governance Toolkit targets top OWASP risks for AI agents By Anirban Ghoshal Apr 8, 2026 3 mins Artificial Intelligence Development Tools Security](https://www.infoworld.com/article/4155591/microsofts-new-agent-governance-toolkit-targets-top-owasp-risks-for-ai-agents.html)
[feature Get started with Python’s new frozendict type By Serdar Yegulalp Apr 8, 2026 5 mins Programming Languages Python Software Development](https://www.infoworld.com/article/4152654/get-started-with-pythons-new-frozendict-type.html)
[opinion The winners and losers of AI coding By Nick Hodges Apr 8, 2026 4 mins Developer Generative AI Roles](https://www.infoworld.com/article/4155139/the-winners-and-losers-of-ai-coding.html)
## Other Sections
- [Resources](https://us.resources.infoworld.com/)
- [Videos](https://www.infoworld.com/videos/)

by [Serdar Yegulalp](https://www.infoworld.com/profile/serdar-yegulalp/)
Senior Writer
1. [Follow Serdar Yegulalp on X](https://www.twitter.com/syegulalp)
Serdar Yegulalp is a senior writer at [InfoWorld](https://www.infoworld.com/). A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024 [Neal Award](https://siia.net/neals/) and a 2025 [Azbee Award](https://siia.net/neals/) for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly [Dev with Serdar](https://www.youtube.com/playlist?list=PLYaGSokOr0MNgQlbnq_qY7BJs9-TOAxHA) videos for programming tips and techniques and close looks at programming libraries and tools.
## More from this author
- [featurePEP 816: How Python is getting serious about Wasm Apr 1, 2026 7 mins](https://www.infoworld.com/article/4150052/how-python-is-getting-serious-about-wasm.html)
- [analysisOn the pleasures and dangers of open source Python Mar 27, 2026 3 mins](https://www.infoworld.com/article/4150170/on-the-pleasures-and-dangers-of-open-source-python.html)
- [how-toSpeed boost your Python programs with new lazy imports Mar 25, 2026 6 mins](https://www.infoworld.com/article/4145854/speed-boost-your-python-programs-with-new-lazy-imports.html)
- [featureI ran Qwen3.5 locally instead of Claude Code. Here’s what happened. Mar 18, 2026 9 mins](https://www.infoworld.com/article/4144487/i-ran-qwen3-5-locally-instead-of-claude-code-heres-what-happened.html)
- [analysisMigrating Python to Rust with Claude: What could go wrong? Mar 13, 2026 3 mins](https://www.infoworld.com/article/4143158/migrating-python-to-rust-with-claude-what-could-go-wrong.html)
- [featureFirst look: Electrobun for TypeScript-powered desktop apps Mar 11, 2026 7 mins](https://www.infoworld.com/article/4137964/first-look-electrobun-for-typescript-powered-desktop-apps.html)
- [featureWhat I learned using Claude Sonnet to migrate Python to Rust Mar 4, 2026 11 mins](https://www.infoworld.com/article/4135218/what-i-learned-using-claude-sonnet-to-migrate-python-to-rust.html)
- [featureThe best new features in MariaDB Feb 25, 2026 7 mins](https://www.infoworld.com/article/4131626/the-best-new-features-in-mariadb.html)
## Show me more
Popular
Articles
Videos
[news GitHub Copilot CLI adds Rubber Duck review agent By Paul Krill Apr 7, 20263 mins Artificial IntelligenceDevelopment ToolsGenerative AI ](https://www.infoworld.com/article/4155289/github-copilot-cli-adds-rubber-duck-review-agent.html)
[opinion The Terraform scaling problem: When infrastructure-as-code becomes infrastructure-as-complexity By Neel Shah Apr 7, 202614 mins Cloud ManagementDevelopment ToolsDevops ](https://www.infoworld.com/article/4154543/the-terraform-scaling-problem-when-infrastructure-as-code-becomes-infrastructure-as-complexity.html)
[news Nvidia’s SchedMD acquisition puts open-source AI scheduling under scrutiny By Gyana Swain Apr 7, 20265 mins Artificial IntelligenceOpen SourceSoftware Development ](https://www.infoworld.com/article/4154989/nvidias-schedmd-acquisition-puts-open-source-ai-scheduling-under-scrutiny.html)
[video Python's new frozendict type Apr 2, 20264 mins Python ](https://www.infoworld.com/video/4153873/pythons-new-frozendict-type.html)
[video How to boost app performance with Python 3.15's lazy import Mar 31, 20266 mins Python ](https://www.infoworld.com/video/4152630/how-to-boost-app-performance-with-python-3-15s-lazy-import.html)
[video How to run your own little local Claude Code (sort of!) Mar 26, 20267 mins Python ](https://www.infoworld.com/video/4150783/how-to-run-your-own-little-local-claude-code-sort-of.html)
About
- [About Us](https://www.infoworld.com/about-us/)
- [Advertise](https://foundryco.com/our-brands/infoworld/)
- [Contact Us](https://www.infoworld.com/contact-us/)
- [Editorial Ethics Policy](https://www.infoworld.com/editorial-ethics-policy/)
- [Foundry Careers](https://foundryco.com/work-here/)
- [Reprints](https://www.infoworld.com/contact-us/#republication-permissions)
- [Newsletters](https://www.infoworld.com/newsletters/signup/)
- [BrandPosts](https://www.infoworld.com/brandposts/)
- [Add InfoWorld as a Preferred Source in Google Search](https://www.google.com/preferences/source?q=infoworld.com)
Policies
- [Terms of Service](https://foundryco.com/terms-of-service-agreement/)
- [Privacy Policy](https://foundryco.com/privacy-policy/)
- [Cookie Policy](https://foundryco.com/cookie-policy/)
- [Copyright Notice](https://foundryco.com/copyright-notice/)
- [Member Preferences](https://www.infoworld.com/member-preferences/)
- [About AdChoices](https://foundryco.com/ad-choices/)
- [Your California Privacy Rights](https://foundryco.com/ccpa/)
- [Privacy Settings]()
Our Network
- [CIO](https://www.cio.com/)
- [Computerworld](https://www.computerworld.com/)
- [CSO](https://www.csoonline.com/)
- [Network World](https://www.networkworld.com/)
- [Facebook](https://www.facebook.com/InfoWorld)
- [X](https://twitter.com/infoworld)
- [YouTube](https://www.youtube.com/@InfoWorld)
- [Google News](https://news.google.com/publications/CAAqIggKIhxDQkFTRHdvSkwyMHZNRFY1ZEhaNUVnSmxiaWdBUAE)
- [LinkedIn](https://www.linkedin.com/company/164364)
[© 2026 FoundryCo, Inc. All Rights Reserved.](https://foundryco.com/terms-of-service-agreement/) |
| Readable Markdown | news analysis
Aug 4, 20237 mins
After much debate, the Python Steering Council intends to approve a proposal, [PEP 703](https://peps.python.org/pep-0703/), “Making the Global Interpreter Lock Optional in [CPython](https://www.infoworld.com/article/2262455/what-is-cython-python-at-the-speed-of-c.html).”
This proposal is the culmination of many attempts over the years to [remove Python’s Global Interpreter Lock, or GIL](https://www.infoworld.com/article/2337804/is-it-finally-time-to-remove-the-python-gil.html). Removing the GIL removes a major obstacle to multi-threading, making Python a truly multi-core language and significantly improving its performance for workloads that benefit from parallelism.
With this proposal, first-class support for multi-threading and concurrency in Python is a step closer to becoming reality.
## Why remove Python’s GIL?
Python’s memory management system keeps track of object usage by maintaining counts of the number of references to each object. When the reference count for an object falls to zero, the object is slated for removal.
Because [Python](https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html) was created at a time when multi-processor systems were a rarity, and multi-core processors were non-existent, this reference count mechanism isn’t thread-safe. Instead, Python achieves thread safety by allowing only one thread to access an object at a time. This is the purpose of the GIL.
Many projects over the years have attempted to remove the GIL. They did enable multi-threaded programs to run faster, but at the cost of degrading the performance of single-threaded programs. Given the vast majority of Python applications are single-threaded, this was a poor trade-off. Although refinements to the GIL have improved its handling of multi-threaded apps, it’s still a serious bottleneck.
Python’s core developers finally decided to remove the GIL from CPython, but only if it could be done without slowing down single-threaded programs.
## How a GIL-free Python will work
The current proposals for a no-GIL edition of Python use a mix of techniques to make reference counting thread-safe, and leave the speed of single-threaded programs untouched or impact it only minimally.
- **Biased reference counting.** Counts for objects accessed by only a single thread would be handled differently (and more quickly) than counts for objects accessed by multiple threads. Since most objects are accessed by only one thread, the impact on single-threaded programs is minimized.
- **Immortalization.** Some objects, like `None`, never need to be deallocated, so their reference counts do not need to be tracked.
- **Thread-safe memory allocation.** A new memory allocation system for CPython objects will make it easier to trace objects in the garbage collector, and to allocate memory in a thread-safe way.
- **Deferred reference counting.** Reference counts for some objects, like top-level functions in a module, can be safely deferred. This saves both time and resources.
- **A revised garbage collector.** The CPython garbage collector cleans up cyclical object references, where two or more objects hold references to each other. The no-GIL build [makes many changes](https://peps.python.org/pep-0703/#garbage-collection-cycle-collection) to the garbage collector, such as removing the “generations” system for tracking objects.
## How a GIL-free Python will be phased in
Implementing PEP 703 is a long-term project that will take place in multiple stages over several years. During this time, the CPython interpreter will transition to make the no-GIL version first optional, then supported, and finally the standard version of CPython.
To accomplish this, CPython’s developers will add an experimental “no-GIL” *build* mode to CPython, so that one can compile a version of CPython with or without the GIL. Eventually, the no-GIL build will become the default.
Here is how the plan to remove the GIL from CPython is set to unfold.
### Step 1: No-GIL CPython is optional
The first incarnations of a no-GIL CPython will be experimental, for both CPython developers and the larger Python community. This experimental phase has several goals:
- **Get the rest of the Python community involved.** Any major change to Python needs buy-in from the wider Python community. The experimental builds give Python users a way to safely experiment with testing their code, and to see how both non-threaded and threaded code will behave.
- **Give Python distributions the option, not the requirement, to ship a GIL-less Python.** Python distributions like Conda or WinPython need to guarantee compatibility with stock CPython. During the transition phase, they could provide the option to install the regular or GIL-less version of CPython. This would allow Conda or WinPython users to pick the version most compatible with their needs.
- **Determine whether the no-GIL project is worthwhile.** If the community tries out the GIL-less builds at scale and is unhappy with the results, the core CPython developers reserve the right to back out. Having dual builds means a heavier maintenance burden in the short term, but provides an escape hatch if the no-GIL project proves unworthy.
### Step 2: No-GIL CPython is supported
The next stage will be to offer the no-GIL build as a supported alternative build for CPython. A user would have the choice of installing either the no-GIL or GIL build, with either one being a formally supported version of CPython that receives bug fixes, security patches, and updates.
One big goal of this stage is to set a target date for making no-GIL the default. This will likely happen on the same timeline as the deprecation and removal of other Python features—at least two or three versions, meaning at least two or three years.
### Step 3: No-GIL CPython is the default
The final stage would be to make the no-GIL version of CPython the default build, and to remove *all* GIL-related code from CPython. “We don’t want to wait too long with this,” [wrote Thomas Wouters](https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474), CPython core developer, “because having two common build modes may be a heavy burden on the community (as, for example, it can double test resources and debugging scenarios), but we can’t rush it either. We think it may take as much as five years to get to this stage.”
## The biggest challenges to removing the GIL
The biggest challenges present in this plan aren’t only technical, although the technical challenges are daunting. What looms even larger is how to bring the rest of the Python ecosystem into line with these changes—and make sure a GIL-less Python doesn’t create more problems than it solves.
According to Wouters, “… any changes in third-party code needed to accommodate no-GIL builds should just work in with-GIL builds (although backward compatibility with older Python versions will still need to be addressed).”
The other big challenge, as mentioned above, is “to bring along the rest of the Python community,” said Wouters, “… and make sure the changes we want to make, and the changes we want them to make, are palatable.
“Before we commit to switching entirely to the no-GIL build, we need to see community support for it,” Wouters said. “We can’t just flip the default and expect the community to figure out what work they need to do to support it.”
The Python community experienced huge growing pains when transitioning from Python 2 to Python 3, so any big changes like removing the GIL would have to be thoroughly backwards compatible. As Wouters put it, “We do not want another Python 3 situation.”
Beyond the perils and challenges lies a great reward: A Python that finally supports the parallelism that programmers have come to expect in the 21st century.

Senior Writer
Serdar Yegulalp is a senior writer at [InfoWorld](https://www.infoworld.com/). A veteran technology journalist, Serdar has been writing about computers, operating systems, databases, programming, and other information technology topics for 30 years. Before joining InfoWorld in 2013, Serdar wrote for Windows Magazine, InformationWeek, Byte, and a slew of other publications. At InfoWorld, Serdar has covered software development, devops, containerization, machine learning, and artificial intelligence, winning several B2B journalism awards including a 2024 [Neal Award](https://siia.net/neals/) and a 2025 [Azbee Award](https://siia.net/neals/) for best instructional content and best how-to article, respectively. He currently focuses on software development tools and technologies and major programming languages including Python, Rust, Go, Zig, and Wasm. Tune into his weekly [Dev with Serdar](https://www.youtube.com/playlist?list=PLYaGSokOr0MNgQlbnq_qY7BJs9-TOAxHA) videos for programming tips and techniques and close looks at programming libraries and tools.
More from this author |
| Shard | 178 (laksa) |
| Root Hash | 11067585635464083778 |
| Unparsed URL | com,infoworld!www,/article/2338862/python-moves-to-remove-the-gil-and-boost-concurrency.html s443 |