<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Developer Tooling Handbook – Python</title>
    <link>https://pydevtools.com/tags/python/</link>
    <description>The Python Developer Tooling Handbook is a comprehensive guide to Python development tools including uv, ruff, pytest, mypy, ty, and more.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 11 May 2026 09:00:00 -0400</lastBuildDate>
    
	  <atom:link href="https://pydevtools.com/tags/python/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Python 3.14.5 rolls back the incremental garbage collector</title>
      <link>https://pydevtools.com/blog/python-3145-rolls-back-the-incremental-garbage-collector/</link>
      <pubDate>Mon, 11 May 2026 09:00:00 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/blog/python-3145-rolls-back-the-incremental-garbage-collector/</guid>
      <description>&lt;p&gt;Python 3.14.5 &lt;a href=&#34;https://blog.python.org/2026/05/python-3145-is-out/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;landed on 10 May 2026&lt;/a&gt;, pulled the incremental garbage collector that shipped in 3.14.0 through 3.14.4, and put the 3.13 generational collector back. Patch releases almost never reverse a major implementation change. The &lt;a href=&#34;https://docs.python.org/3.14/whatsnew/3.14.html#garbage-collection&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;What&amp;rsquo;s New page&lt;/a&gt; names the cause: &amp;ldquo;due to a number of reports of significant memory pressure in production environments, it has been reverted back to the generational GC from 3.13.&amp;rdquo;&lt;/p&gt;
&lt;h2&gt;Recap what the incremental collector promised&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;recap-what-the-incremental-collector-promised&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#recap-what-the-incremental-collector-promised&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-python/&#34;&gt;CPython&lt;/a&gt; collects cyclic garbage with a tracing collector that runs alongside refcounting. Up through 3.13, that collector was generational with three generations. Objects that survived a collection moved up a generation, and the collector visited older generations less often. A full collection of the oldest generation traced every object the program kept alive, which on long-running processes produced multi-hundred-millisecond pauses.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
