Python core devs are reverting the 3.14 incremental GC due to significant memory pressure in production, falling back to the generational GC from 3.13.
Key Takeaways
The incremental GC shipped in 3.14 without going through the PEP process, which contributed to insufficient pre-release evaluation.
Production memory pressure reports prompted the decision; a patch release (3.14.5) will ship the revert early, ahead of the planned 2026-06-09 date.
3.15 is still in alpha, so the revert is straightforward there; an extra alpha 9 may be released if the fix lands within a week of the announcement.
Reintroducing the incremental GC for 3.16 is possible but must go through the formal PEP process and broader evaluation.
Maintaining two GCs simultaneously in 3.14 was ruled out as too costly and risky from a maintenance perspective.
Hacker News Comment Review
At least one production team confirmed continuous memory growth after upgrading to 3.14, eventually tracing it to reference cycles in aiohttp clients being recreated per request, not a true leak.
The missing PEP process was the sharpest criticism: commenters saw it as the root cause, not the revert itself, and expect stricter enforcement going forward.
Comparison to .NET’s GC iteration drew discussion; the consensus was that Microsoft’s internal dogfooding at scale provides telemetry that Python’s open process currently lacks.
Notable Comments
@simonw: clarifies that free-threading (no-GIL) uses a separate GC and is unrelated to this incremental GC revert.
@nas: httpx creates reference cycles that are a worst-case scenario for the incremental GC; a fix PR exists but is unmerged.
@nodesocket: the revert is being pushed via the python:3.14.5-slim-trixie container image for Docker users.