Python 3.15 ist da, und seine wichtigsten Änderungen gehen gleich zwei der ältesten Ärgernisse der Sprache an, berichtet heise: die Startzeit eines Programms und die Kodierung, die es beim Öffnen einer Datei annimmt.

Das erste sind Lazy Imports — ein Mechanismus, der das Laden eines Moduls aufschiebt, bis zum ersten Mal tatsächlich etwas daraus verwendet wird. Python importierte bisher eifrig: Ein `import` am Dateikopf zieht den gesamten Modulgraphen herein, bevor irgendetwas läuft. Deshalb kann ein kleines Skript, das eine einzelne Funktion aus einer schweren Bibliothek holt, die ersten hundert Millisekunden mit Arbeit verbringen, die es nie braucht. Lazy Imports verschieben diese Kosten an den Ort der Nutzung. Für Kommandozeilenwerkzeuge, Kaltstarts von Servern und große Anwendungen ist der Gewinn real und nicht kosmetisch.

Das zweite ist UTF-8 als Standard. Das ist die lange diskutierte, als PEP 686 formalisierte Änderung, und sie beendet eine Reibung, die in der Windows-Ära wurzelt. Bislang folgte Pythons Standard-Textkodierung dem Locale, sodass derselbe Code eine Datei auf einem Linux-Server als UTF-8 und auf einer Windows-Maschine als etwas anderes lesen konnte — mit Zeichensalat in Dateien, die ihrem Autor einwandfrei erschienen. UTF-8 als Vorgabe beseitigt eine ganze Fehlerklasse, um die herum Entwickler zu arbeiten gelernt haben, statt über sie nachzudenken.

Die dritte Änderung ist eine Reihe neuer Datentypen — je nach Aufnahme könnten sie die langlebigste der drei sein, denn Typen werden zur Schnittstelle: Ist ein Typ in der Standardbibliothek, verbreitet er sich über Bibliotheken, Typ-Stubs und APIs.

Die Veröffentlichung folgt Pythons jährlichem Rhythmus, der den Oktober zu einer festen Größe im Entwicklerkalender gemacht hat, und ist die erste seit dem End of Life von Python 3.10. Diese Überschneidung ist für alle wichtig, die ältere Dienste betreiben: Derselbe Monat, der neue Funktionen brachte, entzog Support für Code, den viele Produktivsysteme noch ausführen.

Für die meisten Teams lautet die praktische Frage nicht, ob sie auf 3.15 wechseln, sondern wann. Lazy Imports und UTF-8 als Vorgabe sind Änderungen, die unsichtbar bleiben, bis sie es nicht mehr sind: Eine große Testsuite ist der sicherste Weg, die Stellen zu finden, an denen eine implizite Kodierungsannahme tragend war. Wie immer steht das vollständige Detail in den Release Notes und im What's-New-Dokument — der maßgeblichen Quelle für Verhaltensänderungen, die Werkzeuge womöglich nicht erkennen.