Am 1. September 2026 hat Python 3.15 seine letzte Etappe vor der Veröffentlichung genommen: den Release Candidate 3.15.0rc2, der nun in den Funktionen eingefroren ist. Die finale Version wird für den 1. Oktober erwartet. Drei Änderungen stechen für Web-Back-ends heraus: explizite Lazy Imports, UTF-8 als Standardkodierung und ein deutlich überarbeiteter JIT-Compiler.
Ein bereits eingefrorener Release Candidate
rc2 schließt die Entwicklungsphase ab: Es kommen keine Funktionen mehr hinzu, und die ABI bleibt bis zur finalen Version stabil. Er bündelt rund 144 Korrekturen, die seit rc1 gemeldet wurden — ein Zyklus, der sich nun auf Stabilisierung konzentriert.
| Meilenstein | Datum | Umfang |
|---|---|---|
| 3.15.0rc1 | August 2026 | Feature-Freeze |
| 3.15.0rc2 | 1. September 2026 | Letzter RC, ABI eingefroren, ~144 Korrekturen |
| 3.15.0 final | 1. Oktober 2026 | Produktionsversion |
Für Teams, die Python-Dienste in Produktion betreiben, schließt sich das Testfenster: Jetzt gilt es, die Abhängigkeiten gegen den RC zu prüfen — mit derselben Produktionsdisziplin (ein per systemd verwalteter Dienst, ein Reverse Proxy) wie bei jedem anderen Back-end.
PEP 810: Lazy Imports, aber explizit
Die sichtbarste Änderung ist ein neues kontextabhängiges Schlüsselwort, lazy. Ein als lazy markiertes Modul wird erst beim ersten Zugriff auf eines seiner Attribute geladen, was die Startlatenz und den Speicherbedarf von Anwendungen senkt, die viel importieren, ohne alles zu nutzen.
lazy import json
lazy from pathlib import Path
print("...") # json et pathlib pas encore charges
data = json.loads('{"cle": "valeur"}') # json est charge ici
racine = Path(".") # pathlib est charge iciEin Kompatibilitätsmodus existiert über die Variable __lazy_modules__, praktisch, um Imports lazy zu machen, ohne jede Zeile umzuschreiben. Der Gewinn ist am deutlichsten bei Kommandozeilenprogrammen, deren Startzeit bei jedem Aufruf zu Buche schlägt — vertrautes Terrain für CLI-Werkzeuge.
Der Haken steckt im Wort „explizit“: Anders als ein automatischer Mechanismus überlässt PEP 810 dem Entwickler die Entscheidung, Import für Import. Nebenwirkungen, die beim Import ausgelöst werden — Registrierung von Plugins, Öffnen von Verbindungen — dürfen keinesfalls ohne Analyse lazy gemacht werden.
UTF-8 als Standard: das Ende einer stillen Fehlerquelle
Mit PEP 686 verwendet Python nun UTF-8 als Standardkodierung, unabhängig von der Systemumgebung. Ein Aufruf wie open('daten.txt') liest ohne Konfiguration in UTF-8 und beendet die Verhaltensunterschiede zwischen einem Entwicklungsrechner und einem Server mit abweichender Locale.
Das bisherige Verhalten bleibt verfügbar: PYTHONUTF8=0 oder die Option -X utf8=0 stellen die locale-abhängige Kodierung wieder her, solange die wenigen darauf angewiesenen Skripte migriert werden.
Eine ohne Angabe der Kodierung geöffnete Datei wird nun als UTF-8 gelesen, egal auf welchem Server: Die Hauptursache für Umgebungsabweichungen verschwindet.
Ein überarbeiteter JIT und zwei neue native Typen
Der JIT-Compiler, in früheren Versionen experimentell, wurde laut den Release Notes „deutlich verbessert“, die je nach Plattform Zugewinne in der Größenordnung von 8 bis 13 % nennen. Die 64-Bit-Windows-Binaries übernehmen zudem den Tail-Calling-Interpreter. Wie andere Ökosysteme, die auf Ausführungsgeschwindigkeit setzen, versucht Python, die Kosten der Interpretation zu senken.
Bei den Typen kommen zwei Ergänzungen in builtins: frozendict, ein unveränderliches und hashbares Dictionary (PEP 814), und sentinel, zum Erzeugen eindeutiger Sentinel-Werte mit lesbarer Darstellung (PEP 661).
>>> config = frozendict(hote="db.interne", port=5432)
>>> config["port"]
5432
>>> config["port"] = 5433
TypeError: 'frozendict' object does not support item assignmentAchtung. Lazy Imports verlagern die Ladekosten auf den ersten Zugriff: Eine Import-Ausnahme tritt nicht mehr beim Start auf, sondern mitten in der Ausführung. Bei einem Webdienst kann ein Konfigurationsfehler, der bisher beim Boot auffiel, so zu einem Produktionsvorfall werden. Nur für schwere Module ohne Nebenwirkungen einsetzen.
Was bleibt
- Python 3.15 ist seit dem rc2 vom 1. September eingefroren; die finale Version erscheint am 1. Oktober 2026.
- PEP 810 bringt explizite Lazy Imports (
lazy import), wirksam beim Start von Werkzeugen und Anwendungen. - PEP 686 macht UTF-8 zum Standard, reversibel über
PYTHONUTF8=0. - Der JIT wird schneller, und
frozendict/sentinelkommen zu den nativen Typen hinzu.
Lazy Imports sind die Funktion, auf die ich am meisten gewartet habe, aber auch die, die die meiste Disziplin verlangt. Auf meinen eigenen Diensten aktiviere ich sie nur bei schweren Modulen, die nachweislich keine Nebenwirkungen haben: Ein Import, der mitten in einer Anfrage statt beim Start fehlschlägt, ist die Art Überraschung, die man an einem Freitagabend teuer bezahlt. — Simon Janvier
Primärquelle: „What’s New In Python 3.15″, die offizielle Dokumentation, sowie die Notes des Release Candidate 3.15.0rc2.
