Veröffentlichung der Programmiersprache Python 3.13.

Nach einem Jahr intensiver Entwicklung wurde die bedeutende Veröffentlichung der Programmiersprache Python 3.13 vorgestellt. Diese neue Version wird eineinhalb Jahre lang unterstützt, gefolgt von weiteren dreieinhalb Jahren, in denen Sicherheitskorrekturen bereitgestellt werden.

Zu den neuen Funktionen in Python 3.13 gehören:

  • Eine experimentelle Implementierung eines JIT-Compilers wurde hinzugefügt, die eine deutliche Steigerung der Leistung ermöglicht. Um JIT in CPython zu aktivieren, wurde die Build-Option „—enable-experimental-jit“ hinzugefügt, deren Nutzung die Installation von LLVM als zusätzliche Abhängigkeit erfordert. Der Prozess der Übersetzung von Maschinencode in JIT basiert auf der „Copy-and-Patch“-Architektur, bei der mit LLVM eine Objektdatei im ELF-Format erstellt wird, die Informationen über die Bytecode-Instruktionen und die erforderlichen Datenersetzungen enthält. JIT ersetzt die während der Programmausführung generierten Bytecode-Instruktionen durch deren Entsprechungen im Maschinencode und fügt dabei die für Berechnungen notwendigen Daten ein (JIT kopiert fertige Vorlagen bereits kompilierten Funktionen und fügt Werte wie Argumente und Konstanten ein).
  • Ein experimenteller Build-Modus für CPython ohne die globale Interpreter-Sperre (GIL, Global Interpreter Lock) wurde hinzugefügt. Dieser Modus wird durch die Option „—without-gil“ aktiviert und ermöglicht es, das Problem der Parallelisierung von Operationen auf Mehrkernsystemen zu umgehen, das durch die globale Sperre verursacht wird, die den gleichzeitigen Zugriff auf gemeinsame Objekte aus verschiedenen Threads nicht zulässt. Das Deaktivieren des GIL führt zu zusätzlichen Overheads, die durch Änderungen im Garbage Collector, im Speichermanagementsystem und bei den Synchronisationsprimitive verursacht werden. Beispielsweise wird aufgrund der Verwendung der Referenzzählung zur Isolation von Threads eine Leistungsreduktion von etwa 10 % in einsträngigen Szenarien beobachtet. Diese zusätzlichen Kosten können jedoch durch die Parallelisierung von Operationen ausgeglichen werden.
  • Es wurde ein neuer, verbesserter interaktiver Interpreter vorgestellt, der auf den Entwicklungen des PyPy-Projekts basiert. Er unterstützt Funktionen wie mehrzeiliges Editieren, Speichern und Anzeigen des Verlaufs, farbige Formatierung von Eingaben und Traces sowie die Verwendung von REPL-ähnlichen Befehlen (help, exit, quit usw.) ohne den Einsatz von Funktionen, interaktive Hilfe und den Modus zum Einfügen großer Codeblöcke.
  • Die Semantik der integrierten Funktion locals(), die alle lokalen Variablen und deren Werte im aktuellen Gültigkeitsbereich zurückgibt, wurde für optimierte Gültigkeitsbereiche wie Funktionen, Generatoren und Korroutinen geändert. Nun werden unabhängige Snapshots der aktuellen lokalen Variablen und der nicht-lokalen Variablen, die in Closures reflektiert werden, zurückgegeben.
  • Standardmäßig ist eine modifizierte Version der Bibliothek mimalloc enthalten, die von Microsoft stammt und eine Hochleistungs-Speicherverteilung demonstriert. Die Bibliothek wird beim Build ohne GIL verwendet.
  • Der Compiler entfernt nun führende Leerzeichen aus jeder Dokumentationszeile (Docstring), was den Speicherverbrauch reduziert und die Größe des Bytecode-Caches (.pyc-Dateien) verringert.
  • Im Modul dbm wurde das Backend dbm.sqlite3 implementiert, das SQLite nutzt und standardmäßig beim Erstellen neuer Dateien verwendet wird.
  • Die Unterstützung für Standardwerte in Typ-Parametern (typing.TypeVar, typing.ParamSpec und typing.TypeVarTuple) wurde hinzugefügt. Beispielsweise: ‘T = TypeVar("T", default=int)’.
  • Eine neue Annotationsfunktion typing.TypeIs wurde hinzugefügt, die typischerweise verständlicher ist als typing.TypeGuard.
  • Die Annotationsfunktion typing.ReadOnly wurde hinzugefügt, um Elemente von TypeDicts, die nur lesbar sind, zu kennzeichnen.
  • Eine neue Annotationsfunktion warnings.deprecated() wurde hinzugefügt, um veraltete Elemente im Typsystem zu kennzeichnen.
  • Die Module aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib und lib2to3, die zuvor als veraltet deklariert wurden, wurden aus der Standardbibliothek entfernt.
  • Im Modul copy wurde die Funktion copy.replace() hinzugefügt.
  • Im Modul os wurden Funktionen zur Timerbearbeitung über Timerfd-Deskriptoren hinzugefügt.
  • Für das Modul random wurde eine Befehlszeilenoberfläche implementiert.
  • Die Unterstützung für macOS-Versionen von 10.9 bis 10.12 wurde eingestellt.
  • Die Unterstützung für mobile Plattformen iOS und Android wurde auf die dritte Stufe (Tier 3) angehoben, bei der eine zuverlässige Entwicklung und Wartung der Plattform durch mindestens einen leitenden Entwickler gewährleistet ist. Störungen, die mit der Plattform verbunden sind, blockieren jedoch nicht den Release und sind nicht durch den SLA-Support abgedeckt.
  • Die Unterstützung für die Plattform wasm32-wasi (WebAssembly System Interface) wurde auf die zweite Stufe hochgestuft, bei der Fehler den Release blockieren können und die Änderungen, die zu diesen Fehlern führen, innerhalb von 24 Stunden behoben oder zurückgenommen werden. Die offizielle Unterstützung für die Plattform wasm32-emscripten wurde eingestellt.

In den nächsten Stunden beginnt die Alpha-Testphase für den Branch Python 3.14, die für sieben Monate in der Alpha-Version bleiben wird. Während dieser Zeit werden neue Funktionen hinzugefügt und Fehler behoben. (Gemäß dem neuen Entwicklungszeitplan beginnt die Arbeit an diesem Branch fünf Monate vor der Veröffentlichung des vorherigen Branches und erreicht zum Zeitpunkt der nächsten Veröffentlichung den Status des Alpha-Tests.) Danach wird es über drei Monate Beta-Tests geben, während denen neue Funktionen nicht hinzugefügt werden dürfen und der Fokus auf der Fehlerbehebung liegt. Die letzten zwei Monate vor der Veröffentlichung wird der Branch den Status des Release Candidates erreichen, in dem die finale Stabilisierung vorgenommen wird.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster