Die Entwickler des Pyston-Projekts, das eine hochleistungsfähige Implementierung der Programmiersprache Python unter Verwendung moderner JIT-Compilierungstechnologien bietet, haben die Erweiterung Pyston-lite mit einer JIT-Compiler-Implementierung für CPython vorgestellt. Während Pyston als Abspaltung vom CPython-Code entwickelt wird, ist Pyston-lite als universelle Erweiterung konzipiert, die für die Anbindung an den Standard-Python-Interpreter (CPython) gedacht ist.
Pyston-lite ermöglicht die Nutzung der grundlegenden Pyston-Technologien, ohne den Interpreter zu wechseln, indem es als zusätzliche Erweiterung über die Paketmanager PIP oder Conda installiert wird. Pyston-lite ist bereits in den Repositories von PyPI und Conda verfügbar, und zur Installation genügt der Befehl „pip install pyston_lite_autoload“ oder „conda install pyston_lite_autoload -c pyston“. Es werden zwei Pakete angeboten: pyston_lite (das JIT selbst) und pyston_lite_autoload (führt die automatische JIT-Integration beim Start des Python-Prozesses durch). Zudem ist es möglich, JIT programmgesteuert über die Funktion pyston_lite.enable() zu aktivieren, ohne das autoload-Modul zu installieren.
Obwohl Pyston-lite nicht alle Optimierungen von Pyston umfasst, ermöglicht die Verwendung eine Leistungssteigerung von etwa 10-25 % im Vergleich zu herkömmlichem Python 3.8. In Zukunft ist geplant, die meisten Optimierungen von Pyston in Pyston-lite zu übertragen sowie die unterstützten CPython-Versionen zu erweitern (die erste Version unterstützt nur Python 3.8). Zu den übergeordneten Plänen gehört die Zusammenarbeit mit dem CPython-Team zur Implementierung neuer JIT-APIs, die eine umfassendere Kontrolle von Python ermöglichen. Die Einbeziehung der vorgeschlagenen Änderungen in den Branch Python 3.12 wird diskutiert. Idealerweise wird die Möglichkeit in Betracht gezogen, die gesamte Funktionalität von Pyston in ein Erweiterung zu übertragen, was die Wartung eines eigenen CPython-Forks ermöglichen würde.
Neben Pyston-lite wurde auch ein Update des vollständigen Pyston-Pakets 2.3.4 veröffentlicht, in dem neue Optimierungen angeboten werden. Im pyperformance-Test ist Version 2.3.4 etwa 6 % schneller als die Version 2.3.3. Der Gesamtnutzen an Leistung im Vergleich zu CPython wird auf 66 % geschätzt.
Zusätzlich sind im Rahmen der Entwicklung von CPython 3.11 Optimierungen im Hauptprojekt zu erwähnen, die in einigen Tests die Leistung um 25 % steigern konnten. Beispielsweise wurde in CPython 3.11 die Effizienz des Cache für den Zustand des Bytecodes grundlegender Module erhöht, was den Skripteinstieg um 10-15 % beschleunigt. Der Funktionsaufruf wurde deutlich beschleunigt und spezielle schnelle Interpreter für gängige Operationen hinzugefügt. Außerdem wird an der Übertragung einiger Optimierungen gearbeitet, die von den Projekten Cinder und HotPy vorbereitet wurden.
Im Rahmen des Projekts nogil wird außerdem an einem experimentellen Modus für den Build von CPython ohne die globale Blockierung des Interpreters (GIL, Global Interpreter Lock) gearbeitet, die einen parallelen Zugriff auf gemeinsame Objekte aus verschiedenen Threads verhindert und die Parallelisierung von Operationen in Mehrkernsystemen behindert. Als eine alternative Lösung für das GIL-Problem wird die Möglichkeit entwickelt, ein separates GIL an jeden Interpreter zu binden, der innerhalb eines Prozesses ausgeführt wird (in einem Prozess können mehrere Interpreter laufen, aber die Effizienz ihrer parallelen Ausführung stößt an die Grenzen des GIL).
Quelle: opennet.ru
