↓Skip to main content

Releasing Python 3.15.0

Prologue #

Like last year, I livetooted the release of Python 3.15.0. Here it is in blogpost form!


Two weeks #

Two weeks until Python 3.15.0 final!

#Python #Python315
Fri, Sep 18, 2026, 00:30 EEST

One week #

One week until Python 3.15.0 final!!

What are you most looking forward to?

#Python #Python315
Tue, Sep 22, 2026, 21:17 EEST

Python 3.15.0 release day! #

First blocker, we’re getting 503s on docs.python.org and buildbot.python.org, the latter of which is needed to check the tier 1 and 2 buildbots are passing, needed for a release.

It’s a certificate issue from an incompatible pyOpenSSL upgrade. We’re waiting for the US to wake up and poke it with a stick.

buildbot.python.org: 503 Service Unavailable. No server is available to handle this request

docs.python.org: 503 Service Unavailable. No server is available to handle this request

#Python #Python315
Thu, Oct 1, 2026, 14:19 EEST

Red #

The US woke up and they’re both back up!

Now, there’s one tier 1 failure to check.

Python Release Status Dashboard: 3.16 is yellow, 3.14-3.11 are green but 3.15 is red and ‘✘ Unreleasable: Tier-1 build failed’

3.15 Tier-1 build failed, Tier-2 build failed (1): AMD64 Fedora Stable Refleaks 3.15)

#Python #Python315 #release
Thu, Oct 1, 2026, 14:22 EEST

Flaky #

RuntimeError: join took too long: <Process name='Process-2107' pid=2290504 parent=2276730 started daemon>

Looks like a flaky test, and python/cpython#157184 has a fix to increase a timeout. Will try restarting for now.

#Python #Python315 #release
Thu, Oct 1, 2026, 14:25 EEST

Green #

That passed, the buildbots are back to green ✅️

Python Release Status Dashboard: 3.16 is yellow, 3.15-3.11 are green: ✔ Releasable

Next, issues/PRs with release-blocker label.

One is a straightforward docs update, I marked as blocker so I don’t forget, to change future tense to present.

Then three last-minute lazy import blockers that need a closer look.

List of GitHub issues and PRs labelled as release-blocker

#Python #Python315 #release
Thu, Oct 1, 2026, 15:11 EEST

Traditional surprise rc3 #

Following recent tradition, I’m going to add a surprise third release candidate!

It makes sense to include the last-minute lazy-import fixes in 3.15.0 final.

It also makes sense to give time to test them properly, so today’s planned 3.15.0 final is postponed, and I’m going to release a 3.15.0rc3 tomorrow, assuming everything is in place.

And then 3.15.0 final will follow about week later. Exact date to be announced.

We’re nearly there! 🤞

#Python #Python315 #release
Fri, Oct 2, 2026, 00:49 EEST

Missing backport #

The three lazy blockers are finally merged into main, two have been backported to 3.15, but wait, the third failed, because it depends on some tests not yet backported.

Okay, backport created, merge conflict fixed, CI is now spinning, and automerge enabled. That’ll merge in about 15 mins, then we can update it into the last blocker PR, that should merge about 30 mins later, and rc3 can begin!

#Python #Python315 #release
Fri, Oct 2, 2026, 20:58 EEST

rc3 #

Get yer rc3 here!

You know the drill: please test and report bugs!

Library maintainers, join the Cool Testers’ Club 😎 and add 3.15 to your test matrix.

Python 3.15.0 final planned for 2026-10-09.

#Python #Python315 #release
Sat, Oct 3, 2026, 00:14 EEST

Python 3.15.0 release day (second attempt)! #

✅️ Release date updated in What’s New in Python 3.15

✅️ No release blockers

✅️ No deferred blockers

✅️ Buildbots all green

Python Release Status Dashboard: 3.16-3.11 all green: ✔ Releasable

#Python #Python315 #release
Fri, Oct 9, 2026, 13:03 EEST

Cooldowns #

Pydantic finally added support for Python 3.15 yesterday, and aiohttp on Monday, so I could use Python 3.15 rc3 to run the release scripts and release Python 3.15.0 final!

But… I’m going to respect our seven-day cooldown, and stick with 3.14.

You also use cooldowns for your dependencies, right?

#Python #Python315 #release
Fri, Oct 9, 2026, 13:12 EEST

blurb bug #

Pushing the big launch button:

.venv/bin/python run_release.py --repository ../cpython --ssh-user hugovk --release 3.15.0

… and immediately ran into a bug with our changelog tool blurb, because we’ve had no new NEWS fragments since rc3 :)

Start of the release script, showing a number of successful checks, before the start of a traceback from blurb
Remainder of blurb traceback, ending with BlurbError: Error in Misc/NEWS.d/3.15.0.rst:8: Invalid gh-issue number: ‘0’ (must be at least 32426)

This needs a fix in blurb, a new PyPI release, and then the docs lockfile regenerated and backported to 3.15.

Fix PR: python/blurb#92

#Python #Python315 #release
Fri, Oct 9, 2026, 13:43 EEST

blurb fix #

OK, merged and released (really easy using Trusted Publishing), lockfile updated and backported.

Restarted the release and that’s better now.

A temporary branch and tag has been pushed to my fork, and I need to verify the release commit does not contain any unexpected changes.

All looks good. Next to start the installer and artifact builds.

#Python #Python315 #release
Fri, Oct 9, 2026, 14:21 EEST

Installers #

The release artifact build failed, need to bump blurb in that lockfile too.

Like this: python/release-tools#451

Now restarted that workflow with the existing CPython tag, no need for retag.

This builds source+docs tarballs and Android+iOS artifacts. Takes ~30 mins.

GitHub Actions building docs, source, iOS and Android artifacts

Ned Deily has started the macOS installer builds. And I’ve started the Windows installer builds, takes ~2 hours.

Azure Pipelines building Windows installers

#Python #Python315 #release
Fri, Oct 9, 2026, 14:56 EEST

SBOM #

In the meantime, the GitHub Actions build has finished, SBOMs created and some things uploaded.

Release script showing download of artifact files, SBOM creation, upload to PSF servers, and waiting for Windows and Mac files

The Windows process has paused a couple of times, awaiting button clicks to approve signing of binaries. The whole release team gets emails about this, so no sneaking out signed releases. 🥷

Azure Pipelines: 1 approval needs your review before this run can continue to Sign binaries

Azure Pipelines: 1 approval needs your review before this run can continue to Pack

#Python #Python315 #release
Fri, Oct 9, 2026, 16:04 EEST

Nearly there #

Windows complete, tags pushed upstream, Sigstore signing done, adding files to python.org… nearly there…

#Python #Python315 #release
Fri, Oct 9, 2026, 17:11 EEST

Out now #

🐍🚀 Out now: Python 3.15.0 final!

💤 Lazy imports!
🧊 frozendict builtin!
💂 sentinel builtin!
📉 Tachyon profiler!
🖼️ Frame pointers everywhere!
🛅 Unpacking in comprehensions!
🗣️ UTF-8 as the default encoding!
🛞 Stable ABI for free-threading!
🆕 Package startup config files!
⌨️ TypedDict & TypeForm!
🐎 Faster JIT!
🎨 More colour!
🚌 & more!

Huge thanks to the Sovereign Tech Agency supporting my work as release manager and enabling another smooth release!

Python 3.15 logo: a purple heart with “3.15” in blue and yellow, flanked by a blue and a yellow snake, with lightning bolts, pink clouds and laurel branches, framed by the release’s headline features

#Python #Python315 #CPython #release
Fri, Oct 9, 2026, 17:23 EEST

It’s not over yet! #

I updated PEP 790, which also updates the PEPs API, which is used to point the docs at /3/ to 3.15, kicked off a docs build: docs.python.org/3/

Unpin one toot and pin another to my profile.

(3.14 might not be the newest, but we can still celebrate with pie!)

And then unlock the 3.15 branch so the core team can start merging 185 PRs that didn’t get in during RC.

#Python #Python315 #release
Fri, Oct 9, 2026, 18:27 EEST

Also #

✅️ update 3.15 label
✅️ rebuild devguide to update: devguide.python.org/versions/
✅️ unlock 3.15 branch

And I think that’s it!

Hey, @savannah, you’re up next with the first 3.16 alpha on Tuesday! 🚀

#Python #Python315 #Python316 #release
Fri, Oct 9, 2026, 18:58 EEST