Разработчиците на проекта 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, в Pyston-lite, както и разширяване на поддържаните версии на 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
