Python 3.15 Released: Lazy Imports, frozendict, UTF-8 by Default and a Faster JIT
Python 3.15.0 shipped on 9 October 2026 after a one-week delay. Its headline features include explicit lazy imports, frozendict and sentinel built-ins, UTF-8 as the default encoding, the Tachyon profiler and an upgraded JIT. What to check before upgrading.
Python 3.15.0 was released on 9 October 2026. The final release was originally planned for 1 October, then postponed by a week: the release team found last-minute release blockers in the new lazy-import feature and shipped an extra release candidate, 3.15.0rc3, on 2 October to test the fixes. The final release notes confirm that 3.15.0 is now stable.
The previous stable line, 3.14, received bug-fix release 3.14.8 on 30 September.
What's new
Interpreter and language:
- Explicit lazy imports (PEP 810) — mark imports as lazy so modules load only when first used, for faster startup of CLIs and large apps.
- Built-in
frozendict(PEP 814) — an immutable, hashable dictionary. - Built-in
sentineltype (PEP 661) — proper unique placeholder values instead ofobject(). - Unpacking in comprehensions (PEP 798).
- UTF-8 is the default encoding (PEP 686) —
open()withoutencoding=now uses UTF-8 everywhere, ending a classic Windows bug source. (What Is UTF-8?) - A significantly upgraded experimental JIT and better error messages.
Standard library and tooling:
- The Tachyon sampling profiler and a dedicated profiling package (PEP 799) — profile running programs with low overhead.
- Frame pointers on by default (PEP 831), which makes system profilers work better.
Typing: typed extra items in TypedDict (PEP 728), TypeForm (PEP 747) and disjoint bases (PEP 800).
Free-threading: a stable ABI for free-threaded builds, and official macOS installers include free-threading support by default.
Before you upgrade
- Wait for your dependencies. Packages with compiled extensions need wheels built for 3.15; give the ecosystem a few weeks. (requirements.txt)
- The UTF-8 default can change behaviour if your code read files in a legacy encoding without saying so. Specify
encoding=explicitly where it matters. - macOS 27.0 and tkinter: the release notes warn that IDLE and other Tk apps can hang when opening dialogs, due to a macOS change. Hold off if you depend on Tk apps.
- Use a virtual environment per project, and test in CI on 3.15 before switching production. (Python Virtual Environments)
Add Python 3.15 to your CI matrix early, and check that setup-python has a compatible build for your runner platform. (GitHub Actions Caching)
Source: Python 3.15.0 release notes · Python 3.15.0rc3 release notes · PEP 790 (3.15 schedule)
EasySpawn gives each project a Linux server where Claude Code can set up a Python 3.15 virtual environment alongside your current one and run your tests on both. See how it works or join the waitlist.
Related: What Is Python? · Python vs JavaScript · Python ModuleNotFoundError · Flask vs Django vs FastAPI
Keep reading
TypeScript 7 Is Out: The Go-Native Compiler and What It Means for Your Project
TypeScript 7.0, released on 8 July 2026, replaces the JavaScript-based compiler with a native port written in Go that is roughly 10x faster. Same package name and tsc command, stricter defaults, removed deprecated options — and a programmatic API caveat for tools. How to upgrade and what to watch for.
GitHub Copilot Retires GPT-5.5, GPT-5.4, Gemini 3.7 Flash and Others on 19 October
GitHub will deprecate GPT-5.5, GPT-5.4, GPT-5.4 mini, GPT-5 mini, Gemini 3.7 Flash and Grok 4.5 across all Copilot experiences on 19 October 2026. The suggested replacements, what Business and Enterprise admins need to check, and what to update in workflows that name models.