Developments

Python 3.15 Is Out: Lazy Imports, UTF-8 by Default and More

Efraim Ray Efraim Ray 0 Comments
Programming News Python

Python 3.15.0 was released on October 9, 2026, after a surprise extra release candidate a week earlier. The big changes are lazy imports for faster startup, UTF-8 as the default text encoding, two new built-in types and a faster experimental JIT compiler. Most code will run as before, but anything that reads or writes files without naming an encoding deserves a quick check.

CategoryProgramming
PublishedOct 17, 2026
Read time6 min
LevelIntermediate
FocusDevelopers, schools

Key takeaways

  • Python 3.15.0 came out on October 9, 2026, built from 5,643 commits by 1,012 contributors.
  • New lazy import syntax delays loading a module until you first use it.
  • UTF-8 is now the default encoding when your code does not specify one.
  • Python 3.10 reaches end of life this month, so plan to move off it.

What Happened

The Python release team announced Python 3.15.0 on the official Python Insider blog on October 9, 2026, calling it the newest major release of the language. It was originally scheduled for October 1, but the team shipped a third release candidate on October 2 to fix two last-minute bugs in the new lazy import feature.

Here are the four changes I think most developers will notice:

Four headline changes in Python 3.15: lazy imports, UTF-8 by default, frozendict and sentinel built-ins, and a faster experimental JIT. Python 3.15 at a glance Lazy imports PEP 810: lazy import json Loads on first use UTF-8 by default PEP 686: open() uses UTF-8 when no encoding is given New built-ins frozendict (PEP 814) and sentinel (PEP 661) Faster JIT 7-8% on x86-64 Linux over the standard interpreter efraimray.com
Illustration: the headline features of Python 3.15, with their PEP numbers.

Lazy imports (PEP 810). Writing lazy import json tells Python to load the module only when your code first touches it. Scripts that import many libraries should start faster. It only works at the top level of a module, not inside functions or try blocks.

UTF-8 by default (PEP 686). A plain open("file.txt") now reads and writes UTF-8, no matter what the computer's regional settings are. That helps with ñ and accented names, but can change older scripts that relied on the system's encoding.

New built-ins. frozendict (PEP 814) is a read-only dictionary that can be used as a key or cached safely, and sentinel (PEP 661) gives a clean way to create unique marker values.

Faster experimental JIT. The release notes report a 7 to 8% average speedup on x86-64 Linux over the standard interpreter, and 11 to 12% on Apple Silicon Macs over the tail-calling interpreter.

5,643Commits since Python 3.14
1,012Contributors to this release
7-8%JIT speedup on x86-64 Linux
~Oct 2031End of security support

Why It Matters

Python runs a lot of local work: Django web apps, spreadsheet scripts, school classes and automation bots. Python 3.15 is supported for a long time, with about two years of bugfix releases and security fixes until roughly October 2031, according to PEP 790. At the same time, Real Python reports that Python 3.10 reaches end of life this October, which means no more security fixes for it.

Python 3.15 timeline: release candidate 3 on October 2, 2026, final release on October 9, 2026, Python 3.10 end of life in October 2026, bugfix support for about two years, and security support until about October 2031. Python 3.15 release and support timeline Oct 2, 2026 Surprise RC3 Oct 9, 2026 3.15.0 final release Oct 2026 Python 3.10 end of life ~2 years Bugfix releases ~Oct 2031 Security support ends efraimray.com
Illustration: Python 3.15 release dates and support window, from PEP 790 and Real Python.
ChangeWho should careWhat to check
UTF-8 by defaultAnyone reading or writing files, CSVs or logsAdd encoding="utf-8" to open() calls
Lazy importsCLI tools, bots, serverless functionsTry it on heavy imports, measure startup
frozendictLibrary authorsCode that checks isinstance(x, dict)
macOS 27.0 issueTeachers using IDLE on MacsDelay the macOS 27.0 upgrade for now

For Philippine businesses

If a freelancer built your inventory script, payroll report or website backend in Python a few years ago, it may still be running on Python 3.10 or older. The UTF-8 change also matters here: customer names with ñ or accented letters in CSV exports are exactly where encoding bugs show up. For schools and computer laboratories, 3.15 is a fine version to teach with, as long as Mac labs avoid the macOS 27.0 IDLE issue.

What to Do Now

  1. Find out what you run. Run python --version on your servers and laptops, and list any app still on Python 3.10 or older.
  2. Test in a separate environment. Install 3.15 next to your current version and create a fresh virtual environment with python -m venv. Do not replace production Python yet.
  3. Make encodings explicit. Search your code for open( calls without an encoding and add encoding="utf-8", or encoding="locale" if you truly need the old behaviour.
  4. Check your libraries. Make sure your key packages install cleanly on 3.15 before you switch.
  5. Upgrade old apps first. Move anything on 3.10 to a supported version, then plan 3.15 for new projects.

My take

Lazy imports are the feature I will use most, because my automation scripts import a lot of libraries just to run one small task. UTF-8 by default is the change that will quietly fix, or quietly break, the most local projects, so I would add explicit encodings everywhere this month. I will start new projects on 3.15 and wait a few weeks before moving client production apps.

Frequently Asked Questions

When was Python 3.15 released?

Python 3.15.0 was released on October 9, 2026. It was planned for October 1, but the release team shipped a surprise third release candidate on October 2 to fix last-minute lazy-import bugs.

What are lazy imports?

A lazy import uses the new lazy keyword, for example lazy import json. Python only loads the module the first time you actually use it, which can make scripts and command-line tools start faster. Lazy imports are only allowed at the top level of a module.

Will UTF-8 by default break my code?

It can affect code that opens files without an encoding argument and relied on the computer's own locale encoding. The fix is to pass the encoding explicitly, such as encoding="utf-8". As a temporary opt-out, the docs list the PYTHONUTF8=0 environment variable or the -X utf8=0 option.

Should our school switch to Python 3.15 now?

It is fine for learning on Windows and Linux. If students use IDLE on Macs, note the release team's warning that IDLE and other tkinter apps may hang on macOS 27.0, so hold off on that macOS upgrade or keep the lab on its current setup until a fix lands.

Can you help me upgrade my Python projects to 3.15?

Yes. I can test your scripts, web apps and automations on Python 3.15, fix encoding and dependency issues, and plan a safe switch from older versions like Python 3.10. Contact me here.

Sources

  1. Python 3.15.0 (final) is here! · Python Insider (Python Software Foundation), October 9, 2026
  2. What's new in Python 3.15 · Python documentation, checked October 17, 2026
  3. PEP 790: Python 3.15 Release Schedule · Python Enhancement Proposals, checked October 17, 2026
  4. Python 3.15 Gets a Surprise RC3 and Other Python News for October 2026 · Real Python, October 5, 2026

Need Help With Your Python Projects?

I build and maintain Python scripts, automations and web apps for Philippine businesses, schools and cooperatives, and I can test and upgrade yours to Python 3.15 safely.

Information current as of October 17, 2026.

Efraim Ray
Written by

Efraim Ray

Software Developer and AI Specialist. BS Information Technology graduate. I pride myself on being conscientious, attentive to detail, and always open to learning — because the best solutions come from listening, taking notes, and exploring what's next.

Comments