🕷️ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 178 (from laksa053)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

đź“„
INDEXABLE
âś…
CRAWLED
11 hours ago
🤖
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://www.infoworld.com/article/2338862/python-moves-to-remove-the-gil-and-boost-concurrency.html
Last Crawled2026-04-08 23:32:47 (11 hours ago)
First Indexed2024-06-17 01:21:50 (1 year ago)
HTTP Status Code200
Meta TitlePython moves to remove the GIL and boost concurrency | InfoWorld
Meta DescriptionFormal 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 Canonicalnull
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/) ![Serdar Yegulalp](https://www.infoworld.com/wp-content/uploads/2026/04/2817-0-77746700-1775638957-serdaryegulalp2_crop-100796854-orig.jpg?quality=50&strip=all&w=150) 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. ![women spinning plates asynchronous programming synchrony multi tasking by graemenicholson getty ima](https://www.infoworld.com/wp-content/uploads/2025/01/2338862-0-42021800-1736999842-women-spinning-plates_asynchronous-programming_synchrony_multi-tasking_by-graemenicholson-getty-images-2400x1600-100818018-orig.jpg?quality=50&strip=all&w=1024) 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/) ![Serdar Yegulalp](https://www.infoworld.com/wp-content/uploads/2026/04/2817-0-77746700-1775638957-serdaryegulalp2_crop-100796854-orig.jpg?quality=50&strip=all&w=250) 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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/04/4155289-0-95390000-1775604595-shutterstock_2288028173-100941497-orig.jpg?quality=50&strip=all&w=444)](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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/04/4154543-0-98448200-1775565715-infrastructure-as-code.jpg?quality=50&strip=all&w=444)](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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/04/4154989-0-56929100-1775564027-Jensen-Huang-Nvidia.jpg?quality=50&strip=all&w=375)](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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/04/4153873-0-51930400-1775143797-youtube-thumbnail-CD_8mAIdH9M_ddd0a5.jpg?quality=50&strip=all&w=444)](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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/03/4152630-0-43887000-1774980243-youtube-thumbnail-XMHBeBs64cg_fd88a0.jpg?quality=50&strip=all&w=444)](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 ![Image](https://www.infoworld.com/wp-content/uploads/2026/03/4150783-0-18851500-1774547343-youtube-thumbnail-XzxM0hdIxLE_ee4769.jpg?quality=50&strip=all&w=444)](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. ![Serdar Yegulalp](https://www.infoworld.com/wp-content/uploads/2026/04/2817-0-77746700-1775638957-serdaryegulalp2_crop-100796854-orig.jpg?quality=50&strip=all&w=250) 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
Shard178 (laksa)
Root Hash11067585635464083778
Unparsed URLcom,infoworld!www,/article/2338862/python-moves-to-remove-the-gil-and-boost-concurrency.html s443