Pyston-lite, JIT-compiler voor voorraad Python geïntroduceerd

De ontwikkelaars van het Pyston-project, dat een krachtige implementatie van de Python-taal biedt met behulp van moderne JIT-compilatietechnologieën, presenteerden de Pyston-lite-extensie met een implementatie van de JIT-compiler voor CPython. Hoewel Pyston een tak is van de CPython-codebase en afzonderlijk is ontwikkeld, is Pyston-lite ontworpen als een universele extensie die is ontworpen om verbinding te maken met de standaard Python-interpreter (CPython).

Met Pyston-lite kunt u de basistechnologieën van Pyston gebruiken zonder de tolk te veranderen, door een extra extensie te installeren met behulp van de PIP- of Conda-pakketbeheerder. Pyston-lite wordt al gehost in de PyPI- en Conda-repository's en om het te installeren, voert u gewoon de opdracht "pip install pyston_lite_autoload" of "conda install pyston_lite_autoload -c pyston" uit. Er worden twee pakketten aangeboden: pyston_lite (direct JIT) en pyston_lite_autoload (voert automatische JIT-vervanging uit wanneer het Python-proces start). Het is ook mogelijk om de opname van JIT programmatisch vanuit de applicatie te beheren zonder de autoload-module te installeren, met behulp van de pyston_lite.enable() functie.

Hoewel Pyston-lite niet alle optimalisaties dekt die beschikbaar zijn in Pyston, kan het gebruik ervan de prestaties met ongeveer 10-25% verbeteren vergeleken met reguliere Python 3.8. In de toekomst is het de bedoeling om de meeste optimalisaties in Pyston over te dragen naar Pyston-lite, en om de ondersteunde versies van CPython uit te breiden (de eerste release ondersteunt alleen Python 3.8). Meer mondiale plannen omvatten samenwerking met het CPython-team om nieuwe API's voor JIT te implementeren, waardoor meer volledige controle over het werk van Python mogelijk wordt. Het opnemen van de voorgestelde wijzigingen in de Python 3.12-tak wordt besproken. Idealiter wordt de mogelijkheid overwogen om alle functionaliteit van Pyston naar de extensie te verplaatsen, waardoor we het onderhoud van onze eigen CPython-vork kunnen vermijden.

Naast Pyston-lite heeft het project ook een update uitgebracht voor het volwaardige Pyston 2.3.4-pakket, dat nieuwe optimalisaties biedt. In de pyperformance-test is versie 2.3.4 ongeveer 2.3.3% sneller dan release 6. De algehele prestatiewinst ten opzichte van CPython wordt geschat op 66%.

Bovendien kunnen we de optimalisaties noteren die zijn ontwikkeld binnen de ontwikkelingscyclus van CPython 3.11 in het hoofdproject, waardoor het in sommige tests mogelijk werd om de prestaties met 25% te verbeteren. In CPython 3.11 is bijvoorbeeld de efficiëntie van het cachen van de bytecodestatus van basismodules verhoogd, wat de lancering van scripts met 10-15% zal versnellen. Functieaanroepen zijn aanzienlijk versneld en er zijn gespecialiseerde snelle tolken van standaardbewerkingen toegevoegd. Er wordt ook gewerkt aan het overbrengen van enkele optimalisaties die zijn voorbereid door de Cinder- en HotPy-projecten.

Bovendien wordt binnen het nogil-project gewerkt aan een experimentele modus voor het bouwen van CPython zonder een global interpreter lock (GIL, Global Interpreter Lock), die geen parallelle toegang tot gedeelde objecten uit verschillende threads toestaat, waardoor parallellisatie van bewerkingen op meerdere threads wordt voorkomen. -kernsystemen. Als een andere oplossing voor het GIL-probleem wordt de mogelijkheid ontwikkeld om een ​​afzonderlijke GIL te koppelen aan elke tolk die binnen een proces draait (meerdere tolken kunnen in één proces draaien, maar de efficiëntie van hun parallelle uitvoering hangt af van de GIL).

Bron: opennet.ru

Voeg een reactie