פּיסטאָן-לייט, JIT קאַמפּיילער פֿאַר לאַגער פּיטהאָן באַקענענ

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

פּיסטאָן-לייט אַלאַוז איר צו נוצן די יקערדיק פּיסטאָן טעקנאַלאַדזשיז אָן טשאַנגינג די יבערזעצער, דורך ינסטאָלינג אַן נאָך פאַרלענגערונג מיט די PIP אָדער Conda פּעקל פאַרוואַלטער. פּיסטאָן-לייט איז שוין כאָוסטיד אין די פּיפּי און קאָנדאַ ריפּאַזאַטאָריז, און צו ינסטאַלירן, נאָר לויפן די באַפֿעל "פּיפּ ינסטאַלירן פּיסטאָן_ליטע_אַוטאָלאָאַד" אָדער "קאָנדאַ ינסטאַלירן פּיסטאָן_ליטע_אַוטאָלאָאַד -c פּיסטאָן". צוויי פּאַקאַדזשאַז זענען סאַגדזשעסטיד: pyston_lite (JIT גלייַך) און pyston_lite_autoload (טוט אָטאַמאַטיק דזשיט סאַבסטיטושאַן ווען סטאַרטינג אַ פּיטהאָן פּראָצעס). עס איז אויך מעגלעך צו פּראָגראַממאַטיק קאָנטראָלירן דזשיט פון די אַפּלאַקיישאַן אָן ינסטאָלינג די אַוטאָלאָאַד מאָדולע, ניצן די 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

לייגן אַ באַמערקונג