Utvecklarna av projektet Pyston, som erbjuder en högpresterande implementation av sprÄket Python som anvÀnder moderna JIT-kompileringstekniker, har presenterat Pyston-lite, en implementation av JIT-kompilatorn för CPython. Medan Pyston Àr en avknoppning frÄn kÀllkoden av CPython och utvecklas separat, Àr Pyston-lite utformat som en universell tillÀgg som Àr avsett att kopplas till den vanliga Python-tolkaren (CPython).
Pyston-lite gör det möjligt att anvÀnda grundlÀggande Pyston-teknologier utan att byta ut tolken, genom att installera ett ytterligare tillÀgg via paketadministratören PIP eller Conda. Pyston-lite finns redan i PyPI- och Conda-repositories, och för att installera det rÀcker det att köra kommandot "pip install pyston_lite_autoload" eller "conda install pyston_lite_autoload -c pyston". TvÄ paket har erbjudits: pyston_lite (sjÀlva JIT) och pyston_lite_autoload (som automatiskt aktiverar JIT vid start av Python-processen). Det Àr ocksÄ möjligt att programatiskt styra aktiveringen av JIT frÄn applikationen utan att installera autoload-modulen, genom att anvÀnda funktionen pyston_lite.enable().
Ăven om Pyston-lite inte omfattar alla tillgĂ€ngliga optimeringar i Pyston, möjliggör dess anvĂ€ndning en prestandaförbĂ€ttring pĂ„ cirka 10-25% jĂ€mfört med vanlig Python 3.8. Framöver planeras det att överföra de flesta av optimeringarna frĂ„n Pyston till Pyston-lite samt att utöka de stödda versionerna av CPython (den första utgĂ„van stöder endast Python 3.8). Bland mer globala planer nĂ€mns ett samarbete med CPython-teamet för att implementera nya API:er för JIT, som möjliggör en mer fullstĂ€ndig kontroll över hur Python fungerar. Förslagen Ă€ndringar diskuteras för att inkluderas i Python 3.12. I idealfallet övervĂ€gs möjligheten att överföra all funktionalitet frĂ„n Pyston till tillĂ€gget, vilket skulle eliminera behovet av att upprĂ€tthĂ„lla en egen forkerad version av CPython.
Förutom Pyston-lite har projektet ocksÄ slÀppt en uppdatering av den kompletta paketversionen Pyston 2.3.4, dÀr nya optimeringar erbjuds. I testet pyperformance Àr version 2.3.4 snabbare Àn version 2.3.3 med cirka 6%. Den totala prestandavinsten jÀmfört med CPython uppskattas till 66%.
Det kan Àven nÀmnas att det i utvecklingscykeln för CPython 3.11 sker optimeringar i huvudprojektet som i vissa tester har kunnat öka prestandan med 25 %. Till exempel har effektiviteten för cachning av bytekodens tillstÄnd i grundmodulerna ökat, vilket kommer att snabba upp skriptstarten med 10-15 %. Funktionsanrop har blivit betydligt snabbare och specialiserade snabba tolkare för typoperationer har lagts till. Dessutom pÄgÄr arbete med att överföra vissa optimeringar som har förberetts av projekten Cinder och HotPy.
Inom ramen för projektet nogil pÄgÄr arbete med ett experimentellt lÀge för att bygga CPython utan den globala tolkningslÄsningen (GIL, Global Interpreter Lock), som hindrar parallellt Ätkomst till delade objekt frÄn olika trÄdar, vilket hindrar parallellisering av operationer pÄ flerkÀrniga system. Som ett annat alternativ för att lösa problemet med GIL utvecklas möjligheten att koppla en separat GIL till varje tolk som körs inom en process (flera tolkar kan köras i en och samma process, men effektiviteten för deras parallella körning begrÀnsas av GIL).
KĂ€lla: opennet.ru
