Нуйтка - Nuitka

Нуитка
Разработчики) Кей Хайен и другие
Стабильный выпуск
0.6.14.6 / 4 мая 2021 г . ; 3 дня назад  ( 2021-05-04 )
Предварительный выпуск
0.6.15rc5
Репозиторий github .com / Nuitka / Nuitka
Написано в C , Python
Доступно в английский
Тип компилятор исходного кода
Лицензия Лицензия Apache 2.0
Веб-сайт https://nuitka.net/

Nuitka - это компилятор от исходного кода к исходному, который компилирует код Python в исходный код C , применяя некоторые оптимизации во время компиляции в процессе, такие как сворачивание и распространение констант, встроенное прогнозирование вызовов, вывод типов и выполнение условных операторов. Первоначально Nuitka была разработана для создания кода C ++, но текущие версии создают исходный код C, используя только те функции C11 , которые используются в C ++ 03 , что позволяет выполнять дальнейшую компиляцию в двоичный исполняемый формат современными компиляторами C и C ++, включая gcc , clang , MinGW или Microsoft Visual C ++ . Он принимает код Python, совместимый с несколькими различными версиями Python (в настоящее время поддерживая версии 2.6, 2.7 и 3.3–3.9), и дополнительно позволяет создавать автономные программы, для которых не требуется установка Python на целевой компьютер.

Nuitka обсуждалась на конференции EuroPython 2012 года, и в конце того же года началась серьезная разработка. Теперь он поддерживает практически все функции языка Python. В будущих выпусках запланированы дополнительные оптимизации времени компиляции, в том числе отказ от использования объектов Python для дополнительных переменных, тип которых может быть определен во время компиляции, особенно при использовании итераторов, что, как ожидается, приведет к значительному увеличению производительности.

Ограничения

В настоящее время невозможно кросс-компилировать двоичные файлы (например, создать исполняемый файл в Windows и отправить его в Mac OS X).

Автономные двоичные файлы, созданные с использованием параметра --standalone командной строки, включают встроенный интерпретатор CPython для обработки аспектов языка, которые не определяются при компиляции программы и должны интерпретироваться во время выполнения, например утиная типизация , обработка исключений и выполнение динамического кода ( eval функция и exec функция или оператор) вместе с теми Python и собственными библиотеками, которые необходимы для выполнения, что приводит к довольно большим размерам файлов.

Дизайн Nuitka сильно зависит от внутреннего устройства интерпретатора CPython, и в результате другие реализации языка Python, такие как PyPy , Jython и IronPython, не могут использоваться вместо CPython для интерпретатора и библиотеки времени выполнения.

Применение

Nuitka можно установить из репозиториев многих дистрибутивов Linux. Также его можно установить через pip и pip3 , соответственно. Компиляция выполняется с nuitka program.py помощью самого Python или с его помощью ( python -m nuitka program.py ).

Внешние ссылки

Источники

  1. ^ a b Хайен, Кей (2012-06-21). «Руководство пользователя» . Нуйтка Дом . Проверено 14 мая 2020 .
  2. ^ Yegulalp, Сердар (2018-10-02). «Компилятор Nuitka Python-to-C дает большой прирост производительности» . InfoWorld . Проверено 14 мая 2020 .
  3. ^ Yegulalp, Сердар (2014-12-19). «Компилятор Python в C ++ обещает более быстрое выполнение» . InfoWorld . Проверено 14 мая 2020 .
  4. ^ "Nuitka Changelog" . GitHub . 2020-05-10 . Проверено 14 мая 2020 .