TL;DR

Python 3.14 and 3.15 have reverted the new incremental garbage collector after reports of memory pressure. The core team decided to restore the previous generational GC for stability, with plans for potential reintroduction in future releases.

Python has reverted the incremental garbage collector introduced in Python 3.14 and 3.15 due to widespread reports of memory pressure in production systems. The core team decided to restore the previous generational GC from Python 3.13, citing stability concerns and the need for more thorough evaluation before reintroduction.

The incremental GC was introduced in Python 3.14 but was rolled back in both 3.14 and 3.15 after developers observed significant memory usage issues during real-world testing. The decision was made following discussions within the core development team and the Steering Council, emphasizing caution and stability over experimental features.

According to the Python steering council, the incremental GC did not go through the formal PEP process, and its implementation was complex, raising concerns about maintenance and potential for bugs. The rollback aligns with a conservative approach, prioritizing reliability for production environments.

Why It Matters

This development is significant because it highlights the challenges of integrating new memory management techniques into a mature language runtime like CPython. The decision to revert underscores the importance of stability in widely used programming language components, especially in production settings where memory issues can cause system failures or degraded performance.

The move also indicates that future attempts to introduce experimental GCs will require more rigorous evaluation, including formal PEP approval and extensive testing, before being deployed in stable releases.

GPU-Accelerated Computing with Python 3 and CUDA: From low-level kernels to real-world applications in scientific computing and machine learning

GPU-Accelerated Computing with Python 3 and CUDA: From low-level kernels to real-world applications in scientific computing and machine learning

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Background

Earlier, Python 3.14 introduced an incremental garbage collector aimed at reducing pause times during memory cleanup. However, reports from users indicated that the new GC caused increased memory pressure, especially under workloads with cyclic references. The issues prompted discussions within the Python community about the complexity and risks associated with the incremental GC, leading to the decision to revert in the upcoming 3.14.5 patch and in 3.15.

Developers had experimented with options to include both GCs simultaneously or toggle between them at startup, but concerns about increased maintenance and code complexity prevailed. The core team emphasized that the old generational GC remains the default, with the incremental version available as an experimental feature in future releases.

“The incremental GC did not go through the formal PEP process and introduced complexity that compromised stability. Reverting ensures a reliable experience for users.”

— Python Steering Council

“Maintaining both GCs would increase long-term overhead, and given the current issues, the safe choice is to revert to the known, stable generational GC.”

— Neil Schemenauer

Amazon

Python garbage collection monitoring

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

What Remains Unclear

It remains unclear when or if the incremental GC will be reintroduced in future Python versions. There is ongoing discussion about making it an opt-in feature, but no formal plan has been announced. The community is awaiting more extensive testing and evaluation, possibly through a new PEP process.

High Performance Python: Practical Performant Programming for Humans

High Performance Python: Practical Performant Programming for Humans

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

What’s Next

The core team plans to monitor feedback from real-world testing of the reverted GC in upcoming patch releases, such as Python 3.14.5. They are also considering a more thorough evaluation process for future reintroduction, including formal PEP approval. Developers and users are encouraged to provide performance and stability reports to guide future decisions.

Advanced Practices For Python Memory Leak Fixes : Practical Solutions for Real-World Projects

Advanced Practices For Python Memory Leak Fixes : Practical Solutions for Real-World Projects

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Key Questions

Why was the incremental GC introduced in Python 3.14?

The incremental GC was introduced to reduce pause times during garbage collection, aiming to improve performance in applications sensitive to latency.

What specific issues led to the rollback?

Users reported significant memory pressure and increased memory usage under workloads with cyclic references, which affected system stability and performance.

Will the incremental GC be available in future Python versions?

It is not yet confirmed. The community is considering making it an opt-in feature in future releases, pending further testing and evaluation.

How will this decision affect Python developers?

Developers will continue to use the stable generational GC by default, but experimental options may be available for testing the incremental GC once it is re-evaluated.

You May Also Like

Reimagining the mouse pointer for the AI era

Google’s Gemini team introduces an AI-enabled pointer that understands context and intent, transforming user interaction across platforms.

Native all the way, until you need text

Developers find native tools insufficient for advanced text features, leading many to adopt web-based solutions for rich text and chat apps.

Google Declaring War on the Web

Google shifts focus from traditional links to AI-generated responses, risking a monopolized, controlled web environment. What this means for users and creators.

Cursor Introduces Composer 2.5

Cursor announces Composer 2.5, featuring enhanced intelligence, targeted reinforcement learning, and larger synthetic training datasets, marking a significant upgrade.