Nach einem Jahr Entwicklungszeit wurde die bedeutende Version der Programmiersprache Python 3.13 veröffentlicht. Der neue Zweig wird eineinhalb Jahre lang unterstĂŒtzt, danach werden fĂŒr weitere dreieinhalb Jahre Fixes zur Beseitigung von Schwachstellen generiert.
Zu den neuen ErgÀnzungen zu Python 3.13 gehören:
- Eine experimentelle Implementierung des JIT-Compilers wurde hinzugefĂŒgt, was erhebliche Leistungsverbesserungen ermöglicht. Um JIT in CPython zu aktivieren, wurde eine Build-Option â-enable-experimental-jitâ hinzugefĂŒgt, deren Verwendung 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 mithilfe von LLVM eine Objektdatei im ELF-Format zusammengestellt wird, die Daten zu Bytecode-Anweisungen und Informationen zum erforderlichen Datenaustausch enthĂ€lt. JIT ersetzt die bei der Programminterpretation generierten Bytecode-Anweisungen durch ihre Darstellungen im Maschinencode und ersetzt gleichzeitig die fĂŒr Berechnungen erforderlichen Daten (JIT kopiert vorgefertigte Vorlagen bereits kompilierter Funktionen und ersetzt diese durch die erforderlichen Werte wie Argumente und Konstanten).
- Es wurde ein experimenteller Modus zum Erstellen von CPython ohne globale Interpretersperre (GIL) hinzugefĂŒgt, der mit der Option â--without-gilâ aktiviert wird und es Ihnen ermöglicht, das dadurch verursachte Problem mit der Parallelisierung von VorgĂ€ngen auf Mehrkernsystemen zu beseitigen Die globale Sperre erlaubt keinen parallelen Zugriff auf gemeinsam genutzte Objekte aus verschiedenen Threads. Das Deaktivieren der GIL fĂŒhrt zu zusĂ€tzlichem Overhead, der durch Ănderungen am Garbage Collector, dem Speicherverwaltungssystem und den Sperrprimitiven verursacht wird. Aufgrund der Verwendung der ReferenzzĂ€hlung zur Thread-Isolierung kommt es beispielsweise bei Single-Thread-Skripts zu einem Leistungseinbruch von etwa 10 %. DarĂŒber hinaus können diese Gemeinkosten durch die Parallelisierung von AblĂ€ufen ausgeglichen werden.
- Es wird ein neuer und verbesserter interaktiver Interpreter vorgeschlagen, der auf den Entwicklungen des PyPy-Projekts basiert und Funktionen wie mehrzeiliges Bearbeiten, Speichern und Anzeigen des Verlaufs, Farbdesign von Abfragen und Ablaufverfolgungen sowie die Verwendung von REPL-Ă€hnlichen Befehlen (Hilfe, Beenden, Beenden usw.) ohne Einbeziehung von Funktionen, Online-Hilfe, Modus zum EinfĂŒgen groĂer Codeblöcke.
- Die Semantik der integrierten Funktion locals(), die alle lokalen Variablen und ihre Werte im aktuellen Bereich zurĂŒckgibt, wurde fĂŒr optimierte Bereiche wie Funktionen, Generatoren und Coroutinen geĂ€ndert, fĂŒr die unabhĂ€ngige Snapshots aktuell verfĂŒgbarer lokaler Variablen erstellt werden und nicht-lokale Variablen werden jetzt in AbschlĂŒssen zurĂŒckgegeben.
- Das Standardpaket enthÀlt eine modifizierte Version der mimalloc-Bibliothek mit dem offenen Speicherzuweisungssystem von Microsoft, die eine sehr hohe Leistung aufweist. Die Bibliothek wird beim Erstellen ohne GIL verwendet.
- Der Compiler löscht fĂŒhrende Leerzeichen aus jeder Dokumentzeichenfolge (Docstring), was den Speicherverbrauch reduziert und die GröĂe des Bytecode-Cache (.pyc-Dateien) verringert.
- Das dbm-Modul implementiert das dbm.sqlite3-Backend, das SQLite verwendet und standardmĂ€Ăig beim Erstellen neuer Dateien verwendet wird.
- UnterstĂŒtzung fĂŒr die Angabe von Standardwerten in Typparametern (typing.TypeVar, typing.ParamSpec und typing.TypeVarTuple) implementiert. Beispiel: 'T = TypeVar("T", default=int)'.
- Es wurde eine neue typing.TypeIs-Anmerkung hinzugefĂŒgt, um Typen zu verdeutlichen, die intuitiver ist als typing.TypeGuard.
- Es wurde die Möglichkeit hinzugefĂŒgt, die Annotation typing.ReadOnly zu verwenden, um TypeDicts als schreibgeschĂŒtzt zu markieren.
- Eine neue Annotation warnings.deprecated() hinzugefĂŒgt, um veraltete Elemente im Typsystem zu markieren.
- Die zuvor veralteten Module aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, Pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib und lib2to3 wurden aus dem Standard entfernt Bibliothek.
- Die Funktion copy.replace() wurde dem Kopiermodul hinzugefĂŒgt.
- Dem OS-Modul wurden Funktionen fĂŒr die Arbeit mit dem Timer ĂŒber timerfd-Deskriptoren hinzugefĂŒgt.
- FĂŒr das Zufallsmodul wurde eine Kommandozeilenschnittstelle implementiert.
- Die UnterstĂŒtzung fĂŒr diese Version wurde eingestellt. macOS vom 10.9. bis zum 10.12.
- UnterstĂŒtzung fĂŒr die mobilen Plattformen iOS und Android wird bereitgestellt. Android, die der dritten Ebene (Tier 3) zugeordnet ist, wo eine zuverlĂ€ssige Montage und Plattformwartung durch mindestens einen Hauptentwickler gewĂ€hrleistet sind, plattformbezogene AusfĂ€lle jedoch die Veröffentlichung nicht blockieren und nicht von der SLA-UnterstĂŒtzung abgedeckt sind.
- Die UnterstĂŒtzung fĂŒr die Plattform wasm32-wasi (WebAssembly System Interface) wurde auf die zweite Ebene verschoben, wo Fehler die Veröffentlichung blockieren und die Ănderungen, die sie verursachen, innerhalb von 24 Stunden korrigiert oder zurĂŒckgesetzt werden. Der offizielle Support fĂŒr die wasm32-emscripten-Plattform wurde eingestellt.
In den kommenden Stunden beginnt der Alpha-Test des Python 3.14-Zweigs, der sich sieben Monate lang in der Alpha-Release-Phase befindet, in der neue Funktionen hinzugefĂŒgt und Fehler behoben werden (gemÀà dem neuen Entwicklungsplan wird an der neuen gearbeitet). Der Zweig beginnt fĂŒnf Monate vor der Veröffentlichung des vorherigen Zweigs und erreicht zum Zeitpunkt der nĂ€chsten Veröffentlichung die Alpha-Testphase. Danach werden die Betaversionen drei Monate lang getestet. WĂ€hrend dieser Zeit ist das HinzufĂŒgen neuer Funktionen verboten und die gesamte Aufmerksamkeit wird auf die Behebung von Fehlern gerichtet. In den letzten zwei Monaten vor der Veröffentlichung befindet sich der Zweig im Release Candidate-Stadium, in dem die endgĂŒltige Stabilisierung durchgefĂŒhrt wird.
Source: opennet.ru
