Воведен е Pyston-lite, JIT компајлер за акции Python

Разработчики проекта Pyston, предлагающего высокопроизводительную реализацию языка Python, использующую современные технологии JIT-компиляции, представили расширение Pyston-lite с реализацией JIT-компилятора для CPython. Если Pyston является ответвлением от кодовой базы CPython и развивается обособленно, то Pyston-lite оформлен в виде универсального расширения, предназначенного для подключения к штатному интерпретатору Python (CPython).

Pyston-lite ви овозможува да ги користите основните технологии на Pyston без да го менувате толкувачот, со инсталирање дополнителна екстензија користејќи го менаџерот на пакети PIP или Conda. Pyston-lite е веќе хостиран во складиштата PyPI и Conda и за да го инсталирате, само извршете ја командата „pip install pyston_lite_autoload“ или „conda install pyston_lite_autoload -c pyston“. Се нудат два пакети: pyston_lite (директно JIT) и pyston_lite_autoload (врши автоматска замена на JIT кога започнува Python процесот). Исто така, можно е програмски да се контролира вклучувањето на JIT од апликацијата без да се инсталира модулот за автоматско вчитување, користејќи ја функцијата pyston_lite.enable().

Несмотря на то, что Pyston-lite не охватывает все доступные в Pyston оптимизации, его использование позволяет повысить производительность примерно 10-25% по сравнению с обычным Python 3.8. В дальнейшем планируется перенос в Pyston-lite большинства оптимизаций, присутствующих в Pyston, а также расширение поддерживаемых версий CPython (первый выпуск поддерживает только Python 3.8). Из более глобальных планов отмечается совместная работа с командой CPython по реализации новых API для JIT, позволяющих более полно контролировать работу Python. Обсуждается включение предложенных изменений в ветку Python 3.12. В идеале рассматривается возможность переноса всей функциональности из Pyston в расширение, что позволит уйти от поддержания собственного форка CPython.

Кроме Pyston-lite проектом также выпущено обновление полноценного пакета Pyston 2.3.4, в котором предложены новые оптимизации. В тесте pyperformance версия 2.3.4 быстрее выпуска 2.3.3 примерно на 6%. Общий выигрыш производительности по сравнению с CPython оценивается в 66%.

Дополнительно можно отметить развиваемые в рамках цикла разработки CPython 3.11 оптимизации в основном проекте, которые в некоторых тестах позволили поднять производительность на 25%. Например, в CPython 3.11 повышена эффективность кэширования состояния байткода базовых модулей, что на 10-15% ускорит запуск скриптов. Значительно ускорен вызов функций и добавлены специализированные быстрые интерпретаторы типовых операций. Также ведётся работа по переносу некоторых оптимизации, подготовленных проектами Cinder и HotPy.

Дополнительно в рамках проекта nogil ведётся работа над экспериментальным режимом сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock), не допускающей параллельное обращение к разделяемым объектам из разных потоков, что мешает распараллеливанию операций на многоядерных системах. В качестве другого варианта решения проблемы с GIL развивается возможность привязки отдельного GIL к каждому интерпретатору, выполняемому внутри процесса (в одном процессе может выполняться несколько интерпретаторов, но эффективность их параллельного выполнения упирается в GIL).

Извор: opennet.ru

Додадете коментар