Представлений 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 із програми без встановлення модуля 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

Додати коментар або відгук