LINUX.ORG.RU

Вышел Nuitka 1.1 — компилятор Python в исполняемые файлы

 


0

3

16 октября вышла стабильная версия компилятора Nuitka 1.1, предназначенного для сборки скриптовых приложений на Python в исполняемый файл через трансляцию в C.

В новом релизе много изменений, включая баг-фиксы, оптимизацию, тесты и прочее. Среди основных нововведений можно выделить следующие:

  • Python3.10: Добавлена поддержка альтернативы match в виде |.
  • Совместимость:
    • Добавлен загрузчик на основе метапутей Nuitka с помощью pkg_resources таким образом, чтобы проверка наличия ресурса с помощью has_resource оставалась работоспособной. Это также должно добавить поддержку использования jinja2.PackageLoader ( ранее работал только jinja2.FileSystemLoader).
    • Функцию __defaults__ теперь можно сделать изменяемой по размеру атрибута. Долгое время это было относительно большой проблемой для некоторых пакетов, но теперь это также поддерживается.
    • Добавлена поддержка функций:
      • importlib.metadata.distribution;
      • importlib_metadata.distribution;
      • importlib.metadata.metadata;
      • importlib_metadata.metadata.
  • Добавлена поддержка включения других двоичных файлов, кроме основного исполняемого файла. До сих пор в не-Windows создавался только основной двоичный исполняемый файл, жестко закодированный, и ничего больше. Но некоторые вещи, например, QtWebEngine, требуют использования двоичных файлов, и теперь у них больше нет проблемы с отсутствием x-bit в macOS и Linux.
  • Автономность: разрешен путь к исполняемому файлу при вызове по символической ссылке.
  • Python3.9+: Добавлена поддержка importlib.resources.files со скомпилированными модулями.
  • UI: Добавлен метод интерфейса для указания шаблонов имен файлов с опцией включения данных пакета, что позволяет использовать --include-package-data во многих случаях, выбирая только нужные файлы или типы файлов. Теперь можно использовать --include-package-data=package_name=*.txt и выбрать только подмножество файлов данных пакета. До этого он включал в себя все, и приходилось использовать --noinclude-data-files.
  • Добавлено последоваельное разрешение условия when для всех элементов конфигурации пакета, например, для библиотек DLL.
  • В macOS добавлена подпись рантайма в качестве экспериментальной опции.
  • Плагины:
    • Добавлен метод перегрузки специально для работы с автономным двоичным файлом. Это упрощает изменение только этого конкретного двоичного файла.
    • Добавлена поддержка регулярных выражений в заменах с anti-bloat-защитой и новым методом replacements_re.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Ответ на: комментарий от slepoy_pew

ждем когда пейтон добавят в ядро, а может быть сразу джве версии

Syncro ★★★★★
()

Ну и зачем это нужно ?

Питон хорош именно как интерпретируемый скриптовый язык, т.е. скачанную программу на нем, при необходимости можно изменять на лету и тут же перезапускать без дополнительного геморроя (например пути поменять, часто такое видел).

Ну а компилировать в бинарник можно и bash, только зачем )

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Ну и зачем это нужно ? Питон хорош именно как интерпретируемый скриптовый язык,

Ну например, затем что можно написать что-то простое, и скинуть пользователю [винды] бинарь, без объяснений, как этот самый питон ставить в систему и запускать скрипт.

skyman ★★★
()
Ответ на: комментарий от windows10

Ну и зачем это нужно ?

На опенете написано:

«По сравнению с CPython скомпилированные скрипты демонстрируют в тестах pystone повышение производительности на 335%.»

Мелочь, а приятно.

MichIs
()
Ответ на: комментарий от windows10

Чтобы выложить на сайт один файл. Для в них линуксов с завистью только от глибс вестимо.

AVL2 ★★★★★
()
Ответ на: комментарий от MichIs

Это не мелочь а чушь. Там ускорение только на запуске.

AVL2 ★★★★★
()
Ответ на: комментарий от windows10

Одно другого не отменяет. Есть бинарь а есть исходники, которые прекрасно запускаются по старому

AVL2 ★★★★★
()

C PyInstaller можно набыдлоколить поделие быстро-быстро, подключить туда всякие matplot/skimage/PIL и оно, запускалось в виде exe на виндовсе заказчика. Бинарь получался от 200 Мб примерно, тормозил примерно так же как и скрипт. С нуиткой получше должнобыть.

nionio35
()
Последнее исправление: nionio35 (всего исправлений: 1)
Ответ на: комментарий от windows10

Для запуска в Энтерпрайза, без того что бы светить всем код например…

torm7
()
print("hello world!")
dron@gnu:~/Рабочий-стол/test$ du -h ./test.build/*
0	./test.build/__bytecode.const
8,0K	./test.build/__constants.c
4,0K	./test.build/__constants.const
8,0K	./test.build/__constants.h
4,0K	./test.build/__helpers.c
4,0K	./test.build/__helpers.h
4,0K	./test.build/__loader.c
20K	./test.build/module.__main__.c
4,0K	./test.build/module.__main__.const
dron@gnu:~/Рабочий-стол/test$ du -h test.bin
5,7M	test.bin
LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от rumgot

Нет, конечно.

Все они просто берут питон в виде либы, расширения, питоновый проект пользователя, пакуют в один файл и снабжаю небольшой программой, которая умеет это все запустить.

Никто там ничего не транслирует дальше формата *.pyc, это просто упаковка и запускалка питона с расширениями и скриптом пользователя из одного екзешника.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Так ведь в шапке темы:

предназначенного для сборки скриптовых приложений на Python в исполняемый файл через трансляцию в C

rumgot ★★★★★
()
Ответ на: комментарий от Fafhrd

Насколько я понимаю, py2exe просто пакует питоновский интерпретатор и обычный питоновский байткод в exe. Тут же именно компилляция в нативный код, что даёт некоторый прирост производительности. (Насчёт cxfreeze не знаю)

CrX ★★★
()
Ответ на: комментарий от windows10

Ну и зачем это нужно ?

Потому что всё люто-бешено тормозит. О чём я говорил, все это стали понимать и больше не могут закрывать глаза. Пытаются сделать из *0вна шоколадку, хотя можно выкинуть этот питон и юзать сразу C++.

xwicked ★★☆
()
Ответ на: комментарий от rumgot

Очень сомнительно.

Питон тем и хорош, что работает динамически. Каждый объект имеет словарь методов, переменные можно объявлять по мере необходимости, добавлять методы в классы, можно брать имя переменной из строки и использовать ее в коде.

Так что одно из двух, или это будет обертка полноценного интерпретатора, можно с jit или это будет бледное подобие питона.

AVL2 ★★★★★
()
Ответ на: комментарий от xwicked

выкинуть этот питон и юзать сразу C++

Паскаль же.

saahriktu ★★★★★
()
Ответ на: комментарий от xwicked

Потому что всё люто-бешено тормозит. О чём я говорил, все это стали понимать и больше не могут закрывать глаза. Пытаются сделать из *0вна шоколадку, хотя можно выкинуть этот питон и юзать сразу C++.

Что ты такое делаешь, что у тебя настолько тормозит питон, что дешевле написать на С++?

dicos ★★
()
Ответ на: комментарий от dicos

Что ты такое делаешь, что у тебя настолько тормозит питон, что дешевле написать на С++?

*this:

xwicked ★★ (18.10.22 00:02:25) «ментальная защита» или «казачий спас», «энергопотоки и эфир», плоскозём

thunar ★★★★★
()
Ответ на: комментарий от dicos

Что ты такое делаешь, что у тебя настолько тормозит питон, что дешевле написать на С++?

Ты ещё скажи, что и JS не тормозит... теоретик.

xwicked ★★☆
()
Ответ на: комментарий от thunar

xwicked ★★ (18.10.22 00:02:25) «ментальная защита» или «казачий спас», «энергопотоки и эфир», плоскозём

Показываешь всем, как ты мне завидуешь, не имея всего этого?.. ну-ну, не плачь, родной...

xwicked ★★☆
()
Ответ на: комментарий от xwicked

Что ты такое делаешь, что у тебя настолько тормозит питон, что дешевле написать на С++?

Ты ещё скажи, что и JS не тормозит… теоретик.

Но это реально быстрый специализированный язык программирования.

dicos ★★
()
Ответ на: комментарий от dicos

Но это реально быстрый специализированный язык программирования.

Относительно триппера? Возможно... :D

xwicked ★★☆
()
Ответ на: комментарий от mydibyje

кажется тут только если гвидона петух какой-нибудь клюнет;)

Syncro ★★★★★
()

в исполняемый файл через трансляцию в C

Сначала подумал, что изобрели очередной вариант py2exe, а тут вон оно как.

Radjah ★★★★★
()
Ответ на: комментарий от AVL2

технически это может быть буквально пересборка CPython(который и есть по факту с-ядро и питон-обьекты с которыми возятся через указатели и прочие прелести с-бытия) и py2c-отранслированного py-кода прикладного программиста с той или иной степенью предварительной степени компиляции - опять же зависит от того py-макака-кода - чем он более «поверхностен» тем больший бурст такое чудо -компиляции даст -

ваще при нынешних нанатехнологиях победил Self все реальные языки джитятся для возможностей которые были обозначены ещ> перволиспом

qulinxao3
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.