Udviklerne af projektet Pyston, der tilbyder en højtydende implementering af Python-sproget ved hjælp af moderne JIT-kompileringsteknologier, har introduceret udvidelsen Pyston-lite med en JIT-kompilatorimplementation til CPython. Mens Pyston er en forgrening af CPython-kodebasen og udvikles uafhængigt, er Pyston-lite udformet som en universel udvidelse, der er beregnet til at blive tilsluttet den almindelige Python-fortolker (CPython).
Pyston-lite gør det muligt at bruge grundlæggende Pyston-teknologier uden at erstatte fortolkeren, ved at installere en ekstra udvidelse via pakkeadministratorerne PIP eller Conda. Pyston-lite er allerede tilgængelig i PyPI- og Conda-repositorierne, og for at installere det skal man blot køre kommandoen «pip install pyston_lite_autoload» eller «conda install pyston_lite_autoload -c pyston». Der tilbydes to pakker: pyston_lite (selv JIT) og pyston_lite_autoload (som udfører automatisk JIT-indsættelse ved opstart af Python-processen). Det er også muligt at programmere JIT-aktivering fra en applikation uden at installere autoload-modulet ved hjælp af funktionen pyston_lite.enable().
Selvom Pyston-lite ikke dækker alle de optimeringer, der er tilgængelige i Pyston, gør dets brug det muligt at øge ydeevnen med cirka 10-25% i forhold til almindelig Python 3.8. I fremtiden planlægges det at overføre størstedelen af de optimeringer, der findes i Pyston, til Pyston-lite, samt at udvide de understøttede versioner af CPython (den første udgave understøtter kun Python 3.8). Blandt de mere overordnede planer er samarbejdet med CPython-teamet om at implementere nye API'er til JIT, der gør det muligt at kontrolere Python-arbejdet mere fuldstændigt. Inkluderingen af de foreslåede ændringer i Python 3.12-grenen drøftes. Ideelt set overvejes det at flytte al funktionalitet fra Pyston til en udvidelse, hvilket vil muliggøre at undgå at vedligeholde en egen fork af CPython.
Ud over Pyston-lite har projektet også udgivet en opdatering af den fulde Pyston-pakke 2.3.4, der tilbyder nye optimeringer. I pyperformance-testen er version 2.3.4 hurtigere end version 2.3.3 med cirka 6%. Den samlede præstationsgevinst sammenlignet med CPython vurderes til 66%.
Yderligere kan nævnes de optimeringer, der udvikles inden for udviklingscyklussen for CPython 3.11, som i nogle tests har givet en præstationsforøgelse på 25%. For eksempel er effektiviteten af caching af bytecode-status for grundlæggende moduler i CPython 3.11 øget, hvilket vil fremskynde scriptstart med 10-15%. Funktionsopkald er blevet betydeligt hurtigere, og der er tilføjet specialiserede hurtige tolke til standardoperationer. Der arbejdes desuden på at overføre nogle af de optimeringer, der er forberedt af projekterne Cinder og HotPy.
Der arbejdes desuden inden for projektet nogil på en eksperimentel samlingsmetode for CPython uden den globale lås på tolken (GIL, Global Interpreter Lock), som forhindrer parallel adgang til delte objekter fra forskellige tråde og hindrer parallelisering af operationer på multicore-systemer. Som en alternativ løsning på GIL-problemet udvikles muligheden for at knytte en separat GIL til hver interpreter, der kører inden for en proces (i én proces kan flere interpreters køre, men effektiviteten af deres parallelle kørsel er begrænset af GIL).
Kilde: opennet.ru
