- Python 3.15.0 is out, and Simon Willison reports that Python 3.10 has now left official support.
- The release adds lazy imports, a built-in sampling profiler and an upgraded experimental JIT, but speed gains depend on the workload.
- Leaders should ask which systems still run 3.10, and test their own workloads before relying on benchmark claims.
Every new Python release gives developers better tools. It also pushes the oldest supported version out of the window. The lesson here is that a release date quietly sets a deadline for everyone on older versions. Volunteers upstream set it, and the cost lands on whoever runs the old code.
What shipped
The Python Software Foundation released Python 3.15.0. It describes the release as 5,643 commits from 1,012 contributors.
The headline features include UTF-8 as the default text encoding (PEP 686) and explicit lazy imports (PEP 810). A new sampling profiler called Tachyon arrives with PEP 799. Frame pointers are now on by default to improve system-level observability (PEP 831). The experimental JIT compiler, which translates code to machine instructions while the program runs, was also upgraded.
The old version has already been left behind
Simon Willison builds open source software meant to run on every supported Python version. In his write-up of the release, he says 3.15 means Python 3.10, from 2021, has left official support. The Foundation's release page excerpt does not say this, so the claim rests on his account.
If he is right, the deadline has already passed. There is no clock still to start. For Willison, the practical result is that he can drop 3.10 and use features from 3.11, such as the built-in tomllib module for reading TOML configuration files.
That is one maintainer's policy, not a rule for the ecosystem. It still shows how the pressure works. Upstream moves on, and each project downstream decides when to follow. Teams still on 3.10 should ask whether the libraries they depend on keep a similar policy.
How the two biggest changes work
Lazy imports fix a startup problem. Python runs an import when execution reaches that statement, which is usually near the top of a file. Developers could already move imports inside functions by hand. Lazy imports make deferral a built-in feature instead. A module then loads the first time its code is used, and programs that never touch it never pay for it.
Willison's llm command-line tool supports plugins. He had to tell plugin authors to defer imports manually. A plugin that pulled in a heavy library such as sentence_transformers could make every launch several seconds slower. Lazy imports target exactly this cost.
Tachyon works differently from older profilers. A sampling profiler takes a snapshot of a running program's call stack at regular intervals. It then counts which functions appear most often. Willison notes that this adds little overhead and needs no changes to the program. Until now, he used outside tools such as py-spy for this. It now ships in the standard library.
Read the speed claims with care
The Foundation says the experimental JIT is now faster. On x86-64 Linux, it puts the average gain at 7-8% against the standard interpreter. That average is a geometric mean, a way of summarising ratios across many benchmarks. On AArch64 macOS, it reports 11-12% against the tail-calling interpreter.
Miguel Grinberg tested the 3.15.0rc3 release candidate and found performance mostly the same as 3.14. The exception was the JIT, which gave a 1.2x boost on a Fibonacci test. Willison reports that this was the first time Grinberg saw a meaningful JIT gain.
These are different tests with different scopes. The JIT is still labelled experimental. Treat none of these figures as a forecast for your own systems.
A caution for Mac fleets
The Foundation also warns about macOS 27.0. An operating system behavior change can make tkinter applications hang when they open a dialog. IDLE, Python's bundled editor, is one example. The Foundation believes this affects all current versions of the Tk toolkit and all current Python versions. It suggests deferring macOS 27.0 or testing your workflow first. This is an operating system issue, not a flaw in 3.15.
Questions to put to your team
Which production systems, build servers and internal tools still run Python 3.10? Who owns each one, and what is the plan to move it?
Do the libraries you rely on test against 3.11 and later? Have teams run their own workloads on 3.15 before trusting any benchmark? Do any staff Macs run Tk-based tools before a macOS 27.0 upgrade?
The new release is mostly a gift to developers. For leaders, it is a prompt to find out what still runs on a version whose support, by Willison's account, has already ended.
Produced by the WebPulse Newsroom with AI assistance from the original reporting credited below, and checked against that source by our editorial review. How we use AI.
Original reporting: Python Software Foundation.





