A New Python Packaging Council and Other News for May 2026
April gave Python developers a new governing body. PEP 772 was accepted on April 16, creating a dedicated Python Packaging Council that will make binding decisions about packaging standards and tools. After years of informal coordination through the Python Packaging Authority (PyPA), the packaging community now has its own elected five-member council with authority comparable to the Steering Council.
On the release side, Python 3.15.0 alpha 8 dropped with a refreshed JIT delivering 6–7 percent speedups on x86-64 Linux and 12–13 percent on AArch64 macOS. The core team also decided to revert 3.14’s incremental garbage collector after production reports of runaway memory use, with the fix landing in the upcoming 3.14.5 patch release. The next pre-release is the first beta, scheduled for May 5, which marks the feature freeze for Python 3.15.
Elsewhere, Google released the open-weights Gemma 4 family, Starlette 1.0 shipped for FastAPI’s foundation, and the broader Python ecosystem absorbed the news that OpenAI acquired Astral, the company behind uv, Ruff, and ty. Get ready to dig into the biggest Python news from the past month!
Join Now: Click here to join the Real Python Newsletter and you’ll never miss another Python tutorial, course, or news update.
Python Releases and PEP Highlights
April pushed Python 3.15 to its final alpha before the beta freeze, walked back the incremental garbage collector introduced in 3.14, and gave the Steering Council a busy month of PEP decisions. The packaging community even got its own elected governing body for the first time. Plenty to unpack on the language and process side of the ecosystem.
Python 3.15.0 Alpha 8: Final Alpha Before Beta Freeze
Python 3.15.0a8 landed on April 7, released alongside maintenance updates 3.14.4 and 3.13.13. Release manager Hugo van Kemenade confirmed that a8 is the final alpha before the beta phase begins. If you maintain a library, this is the last alpha where you can file an issue against an unreleased feature and reasonably expect it to land before the freeze.
Alpha 8 consolidates a long list of PEPs you’ve been hearing about in earlier alphas:
- PEP 810: Explicit lazy imports, which we covered last month
- PEP 814:
frozendictas a built-in type - PEP 799: Statistical sampling profiler
- PEP 798: Unpacking in comprehensions
- PEP 686: UTF-8 as the default encoding
- PEP 728: TypedDict enhancements
The headline number is the JIT performance jump. On x86-64 Linux, the alpha reports a 6–7 percent geometric mean improvement over the standard interpreter. On AArch64 macOS, the gain is 12–13 percent over the tail-calling interpreter introduced in 3.14. Those aren’t microbenchmark curiosities. They’re cumulative gains across a broad suite of workloads.
Note: If you haven’t tried the alpha yet, installing it in an isolated environment is a good idea. Running uv python install 3.15.0a8 pulls the binary, and pyenv handles alpha builds too. The next pre-release, 3.15.0 beta 1, is scheduled for May 5, which marks the feature freeze. After that, no new PEPs land in 3.15.
Incremental GC Reverted in 3.14.5 and 3.15
On April 16, release manager Hugo van Kemenade proposed reverting the incremental garbage collector that debuted in Python 3.14, and the core team agreed. The revert will ship in Python 3.14.5 and also make it into 3.15 before feature freeze.
The reasoning is practical. Neil Schemenauer’s testing on production workloads showed that the incremental collector cut maximum pause times from 26 ms down to 1.3 ms, which looks great on paper. But peak memory usage climbed to as much as 5x the generational baseline in the worst case, and total runtime went up, not down, because of the extra bookkeeping.
For most Python programs, like web apps, data pipelines, and batch jobs, reducing long pauses isn’t the win that matters. Memory pressure is.
The unusual part is doing this in a patch release. The working assumption during 3.14’s release cycle was that the incremental GC had earned its place. Rolling it back in 3.14.5 is a reminder that “passed the benchmark suite” and “works in production” aren’t the same thing. If you noticed your 3.14 deployments using noticeably more memory than 3.13, this is almost certainly why, and 3.14.5 should give you the old behavior back.
Note: The incremental approach isn’t dead. The core team noted that it could return in Python 3.16 through a proper PEP review process, which the original implementation had skipped. If you were on the fence about the switch, waiting for the formal design round is probably the right call.
PEP 772 Accepted: Python Gets a Packaging Council
On April 16, the Python Software Foundation (PSF) and the Steering Council accepted PEP 772, which creates a five-member Packaging Council with broad authority over packaging standards, tools, and implementations. It’s one of the biggest governance changes the ecosystem has seen since the Steering Council itself was established back in 2019.
Council members will be elected by PSF voting members who opt into the election. The council runs on staggered two-year terms, with two seats and three seats rotating in different cycles to preserve institutional continuity. Decision-making emphasizes consensus over voting, following the same pattern that has worked for the Steering Council.
The practical impact is that a formal, elected body now owns decisions about tools like pip, setuptools, and PyPI, replacing the ambiguous delegation model defined in PEP 609.
If you’ve ever wondered why packaging decisions in Python sometimes feel stuck in committee, PEP 772 is the structural answer to that complaint. It also sets the stage for the council to weigh in on LLM-era packaging concerns, which are popping up faster than the PyPA’s informal coordination could address them.
PEP 803 Accepted: Stable ABI Goes Free-Threaded
PEP 803 was accepted on March 30 and targets Python 3.15. It defines abi3t, a new variant of the stable ABI that works with free-threaded builds. When the Steering Council accepted PEP 779 last year, it promised free-threading would get a proper stable ABI story for 3.15. PEP 803 is that follow-through.
Read the full article at https://realpython.com/python-news-may-2026/ »
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]