Hugo van Kemenade: Releasing Python 3.15.0

Wait 5 sec.

Prologue #Like last year, I livetooted the release of Python3.15.0. Here it is in blogpost form!Two weeks #Two weeks until Python 3.15.0 final!#Python#Python315Fri, Sep 18, 2026, 00:30 EESTOne week #One week until Python 3.15.0 final!!What are you most looking forward to?#Python#Python315Tue, Sep 22, 2026, 21:17 EESTPython 3.15.0 release day! #First blocker, we’re getting 503s on docs.python.org andbuildbot.python.org, the latter of which is needed tocheck 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 theUS to wake up and poke it with a stick. #Python#Python315Thu, Oct 1, 2026, 14:19 EESTRed #The US woke up and they’re both back up!Now, there’s one tier 1 failure to check. #Python#Python315#releaseThu, Oct 1, 2026, 14:22 EESTFlaky #RuntimeError: join took too long: Looks like a flaky test, andpython/cpython#157184 has a fix toincrease a timeout. Will tryrestarting for now.#Python#Python315#releaseThu, Oct 1, 2026, 14:25 EESTGreen #That passed, thebuildbots are back to green ✅️ Next, issues/PRs withrelease-blocker label.One is a straightforward docs update, I marked as blocker so I don’t forget, to changefuture tense to present.Then three last-minute lazy import blockers that need a closer look. #Python#Python315#releaseThu, Oct 1, 2026, 15:11 EESTTraditional surprise rc3 #Following recent tradition, I’m going to add asurprise 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 finalis postponed, and I’m going to release a 3.15.0rc3 tomorrow, assuming everything is inplace.And then 3.15.0 final will follow about week later. Exact date to be announced.We’re nearly there! 🤞#Python#Python315#releaseFri, Oct 2, 2026, 00:49 EESTMissing backport #The three lazy blockers are finally merged into main, two have been backported to3.15, but wait, the third failed,because it depends on some tests not yet backported.Okay, backport created, merge conflictfixed, CI is now spinning, and automerge enabled. That’ll merge in about 15 mins, thenwe can update it into the last blocker PR, that should merge about 30 mins later, andrc3 can begin!#Python#Python315#releaseFri, Oct 2, 2026, 20:58 EESTrc3 #Get yerrc3 here!You know the drill: please test and report bugs!Library maintainers, join the Cool Testers’ Club 😎 andadd 3.15 to your test matrix.Python 3.15.0 final planned for 2026-10-09.#Python#Python315#releaseSat, Oct 3, 2026, 00:14 EESTPython 3.15.0 release day (second attempt)! #✅️ Release date updated in What’s Newin Python 3.15✅️ No release blockers✅️ No deferred blockers✅️ Buildbots all green #Python#Python315#releaseFri, Oct 9, 2026, 13:03 EESTCooldowns #Pydantic finally added support for Python 3.15 yesterday, and aiohttp on Monday, so Icould 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 alsouse cooldowns for your dependencies,right?#Python#Python315#releaseFri, Oct 9, 2026, 13:12 EESTblurb 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 nonew NEWS fragments since rc3 :) = {lowest_possible_gh_issue_number})’)" />= {lowest_possible_gh_issue_number})’)" loading="lazy" decoding="async" src="https://hugovk.dev/blog/2026/releasing-python-3-15-0/blurb-traceback2_hu_f68ff75225cec818.png" srcset="https://hugovk.dev/blog/2026/releasing-python-3-15-0/blurb-traceback2_hu_711c82c71e48422e.png 330w,https://hugovk.dev/blog/2026/releasing-python-3-15-0/blurb-traceback2_hu_f68ff75225cec818.png 660w ,https://hugovk.dev/blog/2026/releasing-python-3-15-0/blurb-traceback2_hu_49ce68757382311f.png 1024w ,https://hugovk.dev/blog/2026/releasing-python-3-15-0/blurb-traceback2.png 1300w " sizes="100vw" /> This needs a fix in blurb, a new PyPI release, and then the docs lockfile regeneratedand backported to 3.15.Fix PR: python/blurb#92#Python#Python315#releaseFri, Oct 9, 2026, 13:43 EESTblurb fix #OK, merged and released (really easy usingTrusted Publishing), lockfileupdated andbackported.Restarted the release and that’s better now.A temporary branch and tag has been pushed to my fork, and I need to verify therelease commitdoes not contain any unexpected changes.All looks good. Next to start the installer and artifact builds.#Python#Python315#releaseFri, Oct 9, 2026, 14:21 EESTInstallers #Therelease artifact build failed,need to bump blurb in that lockfile too.Like this: python/release-tools#451Nowrestarted that workflowwith the existing CPython tag, no need for retag.This builds source+docs tarballs and Android+iOS artifacts. Takes ~30 mins. Ned Deily has started the macOS installer builds. And I’ve started theWindows installer builds,takes ~2 hours. #Python#Python315#releaseFri, Oct 9, 2026, 14:56 EESTSBOM #In the meantime, the GitHub Actions build has finished, SBOMs created and some thingsuploaded. The Windows process has paused a couple of times, awaiting button clicks to approvesigning of binaries. The whole release team gets emails about this, so no sneaking outsigned releases. 🥷 #Python#Python315#releaseFri, Oct 9, 2026, 16:04 EESTNearly there #Windows complete, tags pushed upstream, Sigstore signing done, adding files topython.org… nearly there…#Python#Python315#releaseFri, Oct 9, 2026, 17:11 EESTOut now #🐍🚀 Out now:Python 3.15.0 final!💤 Lazy imports! 🧊 frozendict builtin! 💂 sentinel builtin! 📉 Tachyonprofiler! 🖼️ Frame pointers everywhere! 🛅 Unpacking in comprehensions! 🗣️UTF-8 as the default encoding! 🛞 Stable ABI for free-threading! 🆕 Packagestartup config files! ⌨️ TypedDict & TypeForm! 🐎 Faster JIT! 🎨 Morecolour! 🚌 & more!Huge thanks to theSovereign Tech Agency supporting mywork as release manager and enabling another smooth release! #Python#Python315#CPython#releaseFri, Oct 9, 2026, 17:23 EESTIt’s not over yet! #I updated PEP 790, which also updates thePEPs 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 pinanother 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 merging185 PRs that didn’t get in during RC.#Python#Python315#releaseFri, Oct 9, 2026, 18:27 EESTAlso #✅️ update 3.15 label ✅️ rebuild devguideto update: devguide.python.org/versions/ ✅️unlock 3.15 branchAnd I think that’s it!Hey, @savannah, you’re up next with thefirst 3.16 alpha on Tuesday! 🚀#Python#Python315#Python316#releaseFri, Oct 9, 2026, 18:58 EEST