Został wprowadzony Pyston-lite, JIT-kompilator dla standardowego Pythona

Deweloperzy projektu Pyston, oferującego wydajną implementację języka Python wykorzystującą nowoczesne technologie kompilacji JIT, przedstawili rozszerzenie Pyston-lite z implementacją kompilatora JIT dla CPython. Podczas gdy Pyston jest odgałęzieniem kodu źródłowego CPython i rozwija się niezależnie, Pyston-lite jest zaprojektowany jako uniwersalne rozszerzenie, które można podłączyć do standardowego interpretera Python (CPython).

Pyston-lite pozwala na korzystanie z podstawowych technologii Pyston bez konieczności zmiany interpretera, poprzez instalację dodatkowego rozszerzenia za pomocą menedżera pakietów PIP lub Conda. Pyston-lite jest już dostępny w repozytoriach PyPI i Conda, a do instalacji wystarczy wykonać polecenie „pip install pyston_lite_autoload” lub „conda install pyston_lite_autoload -c pyston”. Oferowane są dwa pakiety: pyston_lite (samego JIT) oraz pyston_lite_autoload (automatycznie wprowadza JIT przy uruchamianiu procesu Python). Możliwe jest również programowe włączanie JIT z aplikacji bez instalacji modułu autoload, używając funkcji pyston_lite.enable().

Mimo że Pyston-lite nie obejmuje wszystkich optymalizacji dostępnych w Pyston, jego użycie pozwala na zwiększenie wydajności o około 10-25% w porównaniu z standardowym Pythonem 3.8. W przyszłości planowane jest przeniesienie większości optymalizacji z Pyston do Pyston-lite oraz zwiększenie wspieranych wersji CPython (pierwsza wersja obsługuje tylko Python 3.8). W bardziej globalnych planach uwzględniona jest współpraca z zespołem CPython w celu wprowadzenia nowych API dla JIT, co pozwoli na pełniejszą kontrolę nad działaniem Pythona. Dyskutowane jest włączenie proponowanych zmian do gałęzi Python 3.12. W idealnym przypadku rozważane jest przeniesienie całej funkcjonalności z Pyston do rozszerzenia, co pozwoli na rezygnację z utrzymywania własnego forka CPython.

Oprócz Pyston-lite, projektem wydano również aktualizację pełnoprawnego pakietu Pyston 2.3.4, w którym zaproponowano nowe optymalizacje. W teście pyperformance wersja 2.3.4 jest o około 6% szybsza od wydania 2.3.3. Całkowity zysk wydajności w porównaniu z CPython szacowany jest na 66%.

Dodatkowo warto wspomnieć o optymalizacjach rozwijanych w ramach cyklu rozwoju CPython 3.11, które w niektórych testach pozwoliły na zwiększenie wydajności o 25%. Na przykład w CPython 3.11 zwiększono efektywność buforowania stanu bajtkodu podstawowych modułów, co przyspieszy uruchamianie skryptów o 10-15%. Zdecydowanie przyspieszono wywołania funkcji oraz dodano wyspecjalizowane szybkie interpretatory operacji typowych. Prace nad przeniesieniem niektórych optymalizacji, przygotowanych przez projekty Cinder i HotPy, są również w toku.

Dodatkowo w ramach projektu nogil prowadzone są prace nad eksperymentalnym trybem kompilacji CPython bez globalnej blokady interpretera (GIL, Global Interpreter Lock), która uniemożliwia równoległy dostęp do współdzielonych obiektów z różnych wątków, co utrudnia równoległe wykonywanie operacji na systemach wielordzeniowych. Jako inny wariant rozwiązania problemu z GIL rozwijana jest możliwość przypisania osobnego GIL do każdego interpretera, który jest uruchamiany wewnątrz procesu (w jednym procesie może być uruchomionych kilka interpreterów, ale efektywność ich równoległego wykonywania jest ograniczona przez GIL).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster