Выпуск Nuitka 4.0, компилятора для языка Python. Прогресс развития JIT в CPython

Доступен выпуск проекта Nuitka 4.0, развивающего компилятор для трансляции скриптов на языке Python в представление на языке C, которое затем можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). Обеспечена полная совместимость с актуальными выпусками Python 2.6, 2.7, 3.4 — 3.13. По сравнению с CPython скомпилированные скрипты демонстрируют в тестах pystone повышение производительности на 335%. Код проекта распространяется под лицензией Apache.

В новой версии:

  • Внесены изменения для улучшения совместимости с Python 3.12, 3.13 и 3.14, например, добавлена поддержка отложенной обработки аннотаций и нового синтаксиса аннотирования типов для обобщённых классов и функций.
  • Добавлена экспериментальная возможность использования компилятора Zig (zig cc) в качестве бэкенда Си-компилятора в Nuitka.
  • Добавлена предварительная поддержка LTO-оптимизаций при использовании компилятора Clang.
  • Предложен декоратор »@nuitka_ignore» для исключения компиляции функций.

  • Реализованы опции:»--project» для сборки с использованием настроек из файла pyproject.toml,»--devel-profile-compilation» для профилирования на этапе сборки,»--debug-self-forking» для отладки форк-бомб,»--include-windows-runtime-dlls» для управление включением C runtime DLL в Windows,»--qt-debug-plugins» для диагностики загрузки Qt-плагинов.
  • Добавлена поддержка актуальных версий пакетов oracledb, win32ctypes, dask, dataparser, puremagic, pygments.lexers, tomli, av, sentry_sdk, jedi, parso, line_profiler и pandas.




Дополнительно можно отметить отчёт о прогрессе развития JIT-компилятора в CPython. Разработчики поставили перед собой цель поднять производительность JIT к выпуску CPython 3.15 на 5%, а к выпуску 3.16 повысить производительность на 10% и реализовать возможность использования JIT в режиме Free-threading (без глобальной блокировки). В текущем состоянии использование JIT в альфа-сборках CPython 3.15 уже демонстрирует в среднем ускорение на 11–12% на платформе macOS AArch64 и на 5–6% на платформе x86_64 Linux по сравнению со стандартным интерпретатором. При этом в отдельных тестах при включении JIT изменение производительности варьируется от ускорения на более чем 100%, до замедления на 20%.

CFD0C5CECEC5D4_1776929195.png



Источник: http://www.opennet.ru/opennews/art.shtml? num=65271

© OpenNet