Zum Inhalt springen

Python 3.15.0 erscheint mit Lazy Imports und frozendict

Python 3.15.0 erschien am 9. Oktober mit 5.643 Commits von 1.012 Beitragenden: Lazy Imports, ein eingebautes frozendict, UTF-8 als Standard und ein schnellerer JIT.

Von Tech AI Wire Team

4 Min. Lesezeit

XLinkedIn
Screenshot des Python-Insider-Beitrags „Python 3.15.0 (final) is here!“ von Hugo van Kemenade, datiert auf den 9. Oktober 2026, mit dem Release-Artwork von 3.15.

Die Zahlen

commits since Python 3.14
5,643
contributors to the release
1,012
JIT speedup on x86-64 Linux, geometric mean
7-8%
roughly when security updates end, per PEP 602
2031

Python 3.15.0 ist am 9. Oktober 2026 erschienen, das jährliche Feature-Release der Sprache. Es bringt explizite Lazy Imports, einen eingebauten frozendict-Typ und UTF-8 als Standard-Textkodierung. „Python 3.15.0 ist das neueste Major-Release der Programmiersprache Python“, schrieb Release-Manager Hugo van Kemenade auf Python Insider. In das Release flossen 5.643 Commits von 1.012 Beitragenden. Es kommt eine Woche später als ursprünglich geplant, nachdem ein überraschender dritter Release Candidate späte Fehler bei Lazy Imports behoben hatte.

Die wichtigsten Neuerungen

Jede große Änderung stammt aus einem PEP, einem Python Enhancement Proposal, dem Designdokument für eine Funktion. Die Release Notes nennen diese:

PEPNeuerungWas sie bewirkt
810Explizite Lazy ImportsLässt Code das Laden eines Moduls bis zur ersten Nutzung aufschieben, für einen schnelleren Start
814frozendictEin eingebautes Dictionary, das sich nach dem Erzeugen nicht mehr ändern lässt
661Sentinel-TypEin eingebauter Typ für eindeutige Markierungswerte
686UTF-8 als StandardPython liest und schreibt Text als UTF-8, sofern nicht anders angegeben
798Entpacken in ComprehensionsErlaubt Entpacken innerhalb von Comprehensions
829Startdateien für PaketeNeue Startkonfigurationsdateien für Pakete
799Profiling-PaketFügt den Sampling-Profiler Tachyon hinzu
803, 820, 793Stabiles ABI für Free-ThreadingEine kompilierte Erweiterung kann über Free-Threaded-Builds hinweg funktionieren
831Frame PointerStandardmäßig in Builds eingeschaltet

Auch bei der Typisierung gibt es drei Änderungen: die PEPs 728, 747 und 800. Laut der What's-New-Seite wurden außerdem der experimentelle JIT-Compiler, die Fehlermeldungen und die Farben in der Kommandozeile verbessert.

Die Umstellung auf UTF-8 wirkt sich laut Linux Compatible am stärksten unter Windows aus. Code, der sich auf die alte Standardkodierung verlassen hat, kann mit PYTHONUTF8=0 zurückschalten.

Schneller, aber nicht überall

Der JIT, ein Compiler, der häufig ausgeführten Python-Code zur Laufzeit in Maschinencode übersetzt, ist jetzt schneller. Python Insider nennt diese Gewinne im geometrischen Mittel:

PlattformJIT-Gewinn
x86-64 Linux7-8 % gegenüber dem Standard-Interpreter
AArch64 macOS11-12 % gegenüber dem Tail-Calling-Interpreter

Die Ergebnisse schwanken je nach Workload stark. Einzelne Benchmarks reichen laut Linux Compatible von etwa 15 % langsamer bis zu mehr als 100 % schneller.

Auch die offiziellen Installer haben sich geändert. Die 64-Bit-Builds für Windows nutzen jetzt den Tail-Calling-Interpreter, eine schnellere Art, die Hauptschleife von Python auszuführen. Linux Compatible beziffert diesen Gewinn auf 15-20 %, bei kleinen, lang laufenden reinen Python-Skripten auf bis zu 40 %. Die offiziellen macOS-Installer enthalten jetzt standardmäßig Unterstützung für Free-Threading. Mit Free-Threading kann Python Code auf mehreren CPU-Kernen gleichzeitig ausführen, ohne den Global Interpreter Lock.

Bekanntes Problem unter macOS 27

Für Mac-Nutzer gibt es eine Warnung. Unter macOS 27.0 können IDLE und andere tkinter-Apps „hängen bleiben, wenn ein Menübefehl der Anwendung verwendet wird, der einen Dialog öffnet“, schreibt Python Insider. Die App muss dann zwangsweise beendet werden.

Das Python-Team führt das auf eine Änderung im Betriebssystem zurück und geht davon aus, dass alle Versionen von Tk betroffen sind, dem Toolkit, das tkinter nutzt. Das Problem wird als Issue #158053 verfolgt. Die Release-Seite empfiehlt, mit macOS 27.0 zu warten, wenn du auf Tk-Apps angewiesen bist.

Was als veraltet markiert ist

Drei Dinge sind laut den Release Notes und Linux Compatible auf dem Weg nach draußen:

  • Das reine Python-Modul profile ist veraltet und wird in Python 3.17 entfernt. cProfile bleibt.
  • Zeilen in .pth-Dateien, die Code ausführen, sind veraltet, zugunsten der neuen Startdateien aus PEP 829.
  • Die C-Funktionen PyGILState_* sind soft-deprecated, aber nicht entfernt.

Python 3.15 erhält zwei Jahre lang Fehlerkorrekturen und danach bis etwa Oktober 2031 Sicherheitskorrekturen, berichtet Linux Compatible, gemäß dem Zeitplan aus PEP 602.

Was das für Entwickler bedeutet

  • Probiere Lazy Imports bei langsam startenden Tools aus. Kommandozeilen-Tools und Apps mit schweren Importen profitieren am meisten. Teste jedes Modul, das darauf angewiesen ist, dass beim Import Code läuft, denn das Aufschieben des Imports ändert, wann dieser Code läuft.
  • Prüfe die Textverarbeitung unter Windows. UTF-8 ist jetzt der Standard. Lass deine Tests für Dateiein- und -ausgabe unter Windows laufen und nutze PYTHONUTF8=0 nur als Notlösung.
  • Nutze frozendict für feste Einstellungen. Ein unveränderliches Dictionary ist für Konfigurationen sicherer und lässt sich dort einsetzen, wo ein hashbarer Wert nötig ist.
  • Führe Benchmarks durch, bevor du dich auf den JIT verlässt. Die durchschnittlichen Gewinne sind moderat, und manche Workloads werden langsamer. Miss deinen eigenen Code.
  • Warte mit macOS 27.0, wenn du tkinter nutzt. IDLE und Tk-Apps können hängen bleiben, bis der Fehler behoben ist.
  • Steig jetzt von profile um. Es verschwindet in Python 3.17, also wechsle zu cProfile oder zum neuen Profiling-Paket.

Bevor du Produktionssysteme aktualisierst, prüfe, ob deine wichtigsten Abhängigkeiten 3.15 unterstützen.

Quellen

  1. Python 3.15.0 final is here! - Python Insider
  2. Python Release Python 3.15.0 - Python.org
  3. Python 3.15.0 (final) is here! - Discussions on Python.org
  4. What's new in Python 3.15 - Python documentation
  5. Python 3.15.0 Is Out: Lazy Imports, frozendict, and Faster Speeds - Linux Compatible

Ähnliche Artikel