Python 3.15 Beta 1: Stable Free-Threaded ABI, Lazy Imports, a 1MHz Profiler, and 12% JIT Gains on Apple Silicon
Beta 1 landed May 5 with the first stable ABI for GIL-free C extensions, zero-overhead production profiling via Tachyon, and measurable JIT improvements across all major platforms.
Python 3.15 entered beta on May 5, 2026 with feature freeze locked — what’s in beta 1 is what ships on October 1. The headline features are not cosmetic. Each one addresses a real pain point that has been open for years.
Stable Free-Threaded ABI
Python 3.13 removed the GIL experimentally. Python 3.14 stabilized the free-threaded runtime. Python 3.15 solves the ecosystem problem.
C extensions can now be compiled once for the free-threaded ABI and run across multiple CPython minor releases without recompilation. Before this, library authors had to ship separate binaries per Python minor version for both the GIL and GIL-free runtimes. That combinatorial overhead made free-threaded adoption impractical for the PyPI ecosystem — most packages stayed on the GIL build because maintaining two binary matrices was too costly.
The stable ABI removes that excuse. Expect free-threaded wheels to proliferate on PyPI over the 3.15 lifecycle.
Lazy Imports
Modules are deferred until first access. For applications that import large dependency trees — Django, FastAPI, data science stacks — this cuts cold-start time without any code changes required. The implementation is explicit by default (no automatic opt-in), which avoids subtle import-order bugs that plagued earlier experiments with lazy loading in other ecosystems.
The practical impact is most visible in CLI tools and Lambda functions where cold-start time directly affects user experience or billing.
Tachyon Profiler
The new built-in profiler captures stack traces from live processes at up to 1,000,000 Hz with zero reported overhead. The implementation uses perf_event_open on Linux and equivalent kernel-level mechanisms on macOS and Windows, sampling from outside the interpreter loop rather than instrumenting bytecode execution.
Running a profiler in production has historically meant choosing between observability and performance. Tachyon makes that a false dichotomy. It is enabled by default, available to any Python process without restarting or recompiling.
JIT Improvements
The JIT compiler delivers 8–9% mean speed improvement on x86-64 Linux and 12–13% on Apple Silicon macOS compared to the base CPython interpreter. Numbers come from the pyperformance benchmark suite.
These are not transformative in isolation, but compound gains across 3.13, 3.14, and now 3.15 add up. CPython is meaningfully faster than it was three years ago without requiring a single change to user code. For workloads that run Python at scale, the cumulative improvement is worth re-benchmarking.
UTF-8 Everywhere
Text encoding now defaults to UTF-8 in all contexts across all platforms. This closes the last significant Windows exception where locale-dependent codecs produced different output from the same Python code. Cross-platform string handling just became simpler — one fewer class of “works on my machine” bugs.
Timeline
| Milestone | Date |
|---|---|
| Beta 1 (feature freeze) | May 5, 2026 |
| Beta 2 | June 2, 2026 |
| RC 1 | August 5, 2026 |
| Final release | October 1, 2026 |
Full schedule in PEP 790. Beta 1 is suitable for library authors who need to test free-threaded ABI compatibility. Production workloads should wait for RC 1.