Перейти к содержимому

Nuitka python 3 как пользоваться

  • автор:

Nuitka — описание свойств EXE файла

Как с помощью Nuitka можно задать описание свойств EXE? В pyinstaller есть для этого ключ —version-file и потом указываешь путь к файлу где все данные прописаны об EXE (Кто сделал ПО, как версия и т.д) Код файла Version ПО:

# UTF-8 # # For more details about fixed file info 'ffi' see: # http://msdn.microsoft.com/en-us/library/ms646997.aspx VSVersionInfo( ffi=FixedFileInfo( # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4) # Set not needed items to zero 0. filevers=(1, 2, 5, 30920), prodvers=(1, 2, 5, 30920), # Contains a bitmask that specifies the valid bits 'flags'r mask=0x3f, # Contains a bitmask that specifies the Boolean attributes of the file. flags=0x0, # The operating system for which this file was designed. # 0x4 - NT and there is no need to change it. OS=0x4, # The general type of file. # 0x1 - the file is an application. fileType=0x1, # The function of the file. # 0x0 - the function is not defined for this fileType subtype=0x0, # Creation date and time stamp. date=(0, 0) ), kids=[ StringFileInfo( [ StringTable( u'040904B0', [StringStruct(u'CompanyName', u'2021 WINDOWS CORP'), StringStruct(u'FileDescription', u'Downloading'), StringStruct(u'FileVersion', u'1.2.5'), StringStruct(u'InternalName', u'Downloading'), StringStruct(u'LegalCopyright', u'Copyright (c) 2021 WINDOWS CORP'), StringStruct(u'OriginalFilename', u'Downloading.exe'), StringStruct(u'ProductName', u'Downloading'), StringStruct(u'ProductVersion', u'1.2.5')]) ]), VarFileInfo([VarStruct(u'Translation', [1049, 1200])]) ] ) 

А вот какой ключ отвечает за данное действие в Nuitka не совсем понятно и как это можно в принципе сделать?

Отслеживать

48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков

задан 18 авг 2021 в 19:24

67 7 7 бронзовых знаков

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

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 .
      • Добавлен метод перегрузки специально для работы с автономным двоичным файлом. Это упрощает изменение только этого конкретного двоичного файла.
      • Добавлена поддержка регулярных выражений в заменах с anti-bloat -защитой и новым методом replacements_re .

      Zhbert ★★★★★
      17.10.22 11:17:33 MSK
      Проверено: hobbit ( 17.10.22 11:27:14 MSK )

      в Си код не ломается из-за отступов

      Syncro ★★★★★
      ( 17.10.22 12:12:07 MSK )
      Ответ на: комментарий от Syncro 17.10.22 12:12:07 MSK

      Зато ломается во всех остальных случаях��

      slepoy_pew ★
      ( 17.10.22 12:38:30 MSK )
      Ответ на: комментарий от slepoy_pew 17.10.22 12:38:30 MSK

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

      Syncro ★★★★★
      ( 17.10.22 12:43:45 MSK )

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

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

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

      windows10 ★★★★
      ( 17.10.22 13:03:32 MSK )
      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

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

      skyman ★★★
      ( 17.10.22 13:07:10 MSK )
      Ответ на: комментарий от skyman 17.10.22 13:07:10 MSK

      Одним бинарем не отделаешься. Либы тоже нужно. Есть вероятность, что питон действительно проще поставить.

      rumgot ★★★★★
      ( 17.10.22 13:20:27 MSK )
      Последнее исправление: rumgot 17.10.22 13:22:11 MSK (всего исправлений: 2)

      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

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

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

      MichIs
      ( 17.10.22 13:30:39 MSK )
      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

      AVL2 ★★★★★
      ( 17.10.22 13:56:51 MSK )
      Ответ на: комментарий от MichIs 17.10.22 13:30:39 MSK

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

      AVL2 ★★★★★
      ( 17.10.22 13:57:33 MSK )
      Ответ на: комментарий от rumgot 17.10.22 13:20:27 MSK

      А как ты думаешь работают компилятор питона?

      AVL2 ★★★★★
      ( 17.10.22 13:58:12 MSK )
      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

      AVL2 ★★★★★
      ( 17.10.22 13:59:26 MSK )

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

      nionio35 ★
      ( 17.10.22 14:09:12 MSK )
      Последнее исправление: nionio35 17.10.22 14:10:30 MSK (всего исправлений: 1)

      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

      torm7 ★
      ( 17.10.22 15:45:28 MSK )
      Ответ на: комментарий от AVL2 17.10.22 13:58:12 MSK

      Ну переводит в C, компилирует его, линкуется с либами python. Не?

      rumgot ★★★★★
      ( 17.10.22 19:07:39 MSK )

      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 ★★★★★
      ( 17.10.22 19:24:11 MSK )
      Ответ на: комментарий от rumgot 17.10.22 19:07:39 MSK

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

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

      AVL2 ★★★★★
      ( 17.10.22 19:50:06 MSK )
      Ответ на: комментарий от AVL2 17.10.22 19:50:06 MSK

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

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

      rumgot ★★★★★
      ( 17.10.22 20:14:02 MSK )

      а чем оно от py2exe и cxfreeze отличается?

      Fafhrd ★
      ( 17.10.22 20:54:02 MSK )
      Ответ на: комментарий от Fafhrd 17.10.22 20:54:02 MSK

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

      CrX ★★★
      ( 17.10.22 22:14:24 MSK )
      Ответ на: комментарий от CrX 17.10.22 22:14:24 MSK

      о, тогда может быть полезно =)

      Fafhrd ★
      ( 17.10.22 22:28:05 MSK )
      Ответ на: комментарий от windows10 17.10.22 13:03:32 MSK

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

      xwicked ★★☆
      ( 18.10.22 00:02:25 MSK )
      Ответ на: комментарий от rumgot 17.10.22 20:14:02 MSK

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

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

      AVL2 ★★★★★
      ( 18.10.22 00:08:38 MSK )
      Ответ на: комментарий от AVL2 18.10.22 00:08:38 MSK

      Nuitka translates the Python modules into a C level program that then uses libpython and static C files of its own to execute in the same way as CPython does.

      AVL2 ★★★★★
      ( 18.10.22 00:50:04 MSK )
      Ответ на: комментарий от xwicked 18.10.22 00:02:25 MSK

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

      saahriktu ★★★★★
      ( 18.10.22 02:42:12 MSK )
      Ответ на: комментарий от xwicked 18.10.22 00:02:25 MSK

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

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

      dicos ★★
      ( 18.10.22 07:33:08 MSK )
      Ответ на: комментарий от dicos 18.10.22 07:33:08 MSK

      Пишел «хеллоу ворд», очевидно

      Aswed ★★★★★
      ( 18.10.22 09:26:11 MSK )
      Ответ на: комментарий от dicos 18.10.22 07:33:08 MSK

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

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

      thunar ★★★★★
      ( 18.10.22 09:50:07 MSK )

      Хорошая штука, надо бы заценить…

      VenturiTube
      ( 18.10.22 10:01:44 MSK )
      Ответ на: комментарий от dicos 18.10.22 07:33:08 MSK

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

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

      xwicked ★★☆
      ( 18.10.22 10:49:10 MSK )
      Ответ на: комментарий от thunar 18.10.22 09:50:07 MSK

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

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

      xwicked ★★☆
      ( 18.10.22 10:53:36 MSK )
      mittorn ★★★★★
      ( 18.10.22 14:06:58 MSK )
      Ответ на: комментарий от xwicked 18.10.22 10:49:10 MSK

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

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

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

      dicos ★★
      ( 18.10.22 16:19:39 MSK )
      Ответ на: комментарий от dicos 18.10.22 16:19:39 MSK

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

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

      xwicked ★★☆
      ( 18.10.22 16:25:32 MSK )
      Ответ на: комментарий от Syncro 17.10.22 12:12:07 MSK

      В Питоне тоже, если использовать

      from __future__ import braces 

      mydibyje ★★★
      ( 25.10.22 19:43:32 MSK )
      Ответ на: комментарий от mydibyje 25.10.22 19:43:32 MSK

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

      Syncro ★★★★★
      ( 26.10.22 05:17:17 MSK )

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

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

      Radjah ★★★★★
      ( 26.10.22 07:57:57 MSK )
      Ответ на: комментарий от skyman 17.10.22 13:07:10 MSK

      youtube-dl/yt-dlp как-то делают же.

      Radjah ★★★★★
      ( 26.10.22 08:01:12 MSK )
      Ответ на: комментарий от AVL2 18.10.22 00:08:38 MSK

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

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

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

      Похожие темы

      • Новости Релиз компилятора Python — Nuitka 0.4.2 (2013)
      • Форум Кто собирал python приложения с помощью nuitka? (2017)
      • Новости Релиз Nuitka 0.5.17 (2015)
      • Новости Оптимизирующий компилятор для Python (2006)
      • Форум Полезность применения Python в компиляторах (2019)
      • Новости CLIP 1.1 — Clipper/xBase совместимый компилятор (2003)
      • Новости Pymothoa — новый JIT-компилятор для Python (2012)
      • Форум Компилятор из C# в Python (2014)
      • Форум исполняемый файл (2010)
      • Форум исполняемый файл (2024)

      Ускоряем Python — 4 быстрых компилирующих транслятора для Python

      Python — достаточно быстрый язык, однако он не такой быстрый, как языки, которые порождают скомпилированные программы. Это потому, что при использовании CPython, стандартной реализации языка, программа интерпретируется. Более точно, ваш код Python компилируется в байтовый код, который затем интерпретируется. Это хорошо подходит для изучения языка и случаев, когда производительность не так важна, поскольку вы можете сразу запускать программу без этапа компиляции.

      Однако, по мере того, как язык набирает популярность, разработчики хотят создавать и быстро работающие программы на Python, поэтому за последние годы появилось несколько компиляторов Python, включая IronPython и Jython.

      От переводчика: Python широко используется как для создания традиционных приложений, например, веб-сервисов, так и для приложений машинного обучения и обработки больших данных, которые используют язык только для управления потоком обработки, при этом сама обработка происходит в рамках расширений, которые реализованы на C. Однако, даже в случае последнего сценария использования, часть кода, которая выполняется в рамках Python может существенно замедлить все приложение, в связи с чем появились дополнительные способы расширения языка, например, Numba.

      Высокая производительность — не единственная причина для компиляции; возможно, самый большой недостаток языков, таких как Python, заключается в том, что вы не имеете возможность не предоставлять свой исходный код, что является существенной преградой для реализации в языке алгоритмов и решений, являющихся коммерческой тайной.

      Я хотел сравнить несколько компиляторов Python на одной платформе, особенно те, которые поддерживают Python 3.x. В итоге я выбрал четыре, все они работают на Ubuntu Linux: Nuitka, PyPy, Cython и cx_Freeze.

      Сравнение трансляторов Python

      В качестве бенчмарка будет использоваться пакет PyStone, адаптация C-программы, которую сделал Гвидо ван Россум, создатель Python (сама C-программа была переводом Ада-программы). Я нашел версию бенчмарка от Кристофера Арндта, которая способна тестировать Python 3. Чтобы получить представление о базовой производительности, оценим производительность CPython (то есть стандартного Python) с PyStone.

      Все бенчмарки при переводе были выполнены заново на CPU Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz

      $ python2 pystone.py 1000000 Pystone(1.1.1) time for 1000000 passes = 3.61152 This machine benchmarks at 276892 pystones/second $ python3 pystone.py 1000000 Pystone(1.1.1) time for 1000000 passes = 4.07254 This machine benchmarks at 245547 pystones/second

      Как видите, между производительностью теста в Python 2 и 3 есть существенная разница (чем больше Pystones в секунду, тем лучше). В следующих разбивках все компиляторы используют Python 3.

      Nuitka

      В Ubuntu 18.04 установить Nuitka возможно с помощью APT:

      $ sudo apt update $ sudo apt install nuitka clang

      Результат выполнения бенчмарка для компилятора Nuitka:

      # Сборка для GCC $ nuitka pystone.py $ ./pystone.exe 1000000 Pystone(1.1.1) time for 1000000 passes = 2.67537 This machine benchmarks at 373780 pystones/second # Сборка для Clang $ nuitka pystone.py --clang $ ./pystone.exe 1000000 Pystone(1.1.1) time for 1000000 passes = 2.64646 This machine benchmarks at 377863 pystones/second # Использование GCC с оптимизацией $ nuitka pystone.py --lto $ ./pystone.exe 1000000 Pystone(1.1.1) time for 1000000 passes = 2.6195 This machine benchmarks at 381753 pystones/second

      Как можно видеть, Nuitka позволила получить увеличение производительности на 50%, по сравнению со стандартной реализацией Python 3.

      PyPy

      Гидо ван Россум однажды сказал: «Если вы хотите, чтобы ваш код работал быстрее, вам, вероятно, следует просто использовать PyPy». Я загрузил переносимые двоичные файлы в папку, а в папке bin скопировал pystone.py. Затем я запустил это так: Мы просто установили PyPy 3 с помощью Ubuntu Snap:

      $ sudo snap install pypy3 --classic
      $ pypy3 pystone.py 1000000 Pystone(1.1.1) time for 1000000 passes = 0.359845 This machine benchmarks at 2.77897e+06 pystones/second $ pypy3 pystone.py 1000000 Pystone(1.1.1) time for 1000000 passes = 0.26776 This machine benchmarks at 3.73469e+06 pystones/second $ pypy3 pystone.py 1000000 Pystone(1.1.1) time for 1000000 passes = 0.147859 This machine benchmarks at 6.7632e+06 pystones/second

      Для данного теста результаты выполнения до «разгона» показывают более 10 кратное, а после «разгона» более чем 26 кратное ускорение производительности.

      Создание исполняемого файла требует больше работы. Вы должны написать свой Python в подмножестве RPython.

      Cython

      Cython — это не просто компилятор для Python; это языковое надмножество языка Python, который поддерживает взаимодействие с C/C ++. CPython написан на C, поэтому это язык, который обычно хорошо сочетается с Python:

      $ sudo apt install cython3 pkg-config

      Сборка программы с помощью Cython немного сложна. Это не похоже на Nuitka, которая просто работает из коробки:

      $ cython3 pystone.py --embed $ gcc $(python3-config --includes) pystone.c -lpython3.6m -o pystone.exe $ ./pystone.exe 1000000 Pystone(1.1.1) time for 1000000 passes = 4.8549 This machine benchmarks at 205978 pystones/second

      Производительность оказалась весьма низкой, гораздо ниже, чем у стандартного CPython. Однако, Cython требует, чтобы вы проделали дополнительную работу, указав типы переменных. Python — это динамический язык, поэтому типы не указываются; Cython использует статическую компиляцию, а использование переменных с типом Си позволяет создавать гораздо более оптимизированный код — документация довольно обширна и требует глубокого изучения.

      Cx_Freeze

      Cx_freeze — это набор скриптов и модулей для «замораживания» скриптов Python в исполняемые файлы. Установить cx_Freeze можно с помощью PIP3:

      sudo pip3 install cx_Freeze --upgrade
      $ cxfreeze pystone.py -O -s --target-dir dist Missing modules: ? __main__ imported from bdb, pdb ? _dummy_threading imported from dummy_threading ? _frozen_importlib imported from importlib, importlib.abc ? _frozen_importlib_external imported from importlib, importlib._bootstrap, importlib.abc ? _winapi imported from subprocess ? _winreg imported from platform ? java.lang imported from platform ? msvcrt imported from subprocess ? nt imported from ntpath, os, shutil ? org.python.core imported from copy, pickle ? os.path imported from os, pkgutil, py_compile, tracemalloc, unittest, unittest.util ? vms_lib imported from platform ? winreg imported from mimetypes, platform This is not necessarily a problem - the modules may not be needed on this platform. Copying data from package collections. Copying data from package email. Copying data from package encodings. Copying data from package html. Copying data from package http. Copying data from package importlib. Copying data from package logging. Copying data from package pydoc_data. Copying data from package unittest. Copying data from package urllib. Copying data from package xml. $ dist/pystone 1000000 Pystone(1.1.1) time for 1000000 passes = 5.35072 This machine benchmarks at 186891 pystones/second

      Как можно видеть, производительность даже ниже, чем у стандартного интерпретатора CPython. Данное решение разумно использовать только для упаковки всего Python-окружения в независимый исполняемый пакет. Стоит отметить, что для этой цели можно использовать и Pyinstaller.

      Заключение

      Я в восторге от производительности PyPy. Компиляция была очень быстрой, и приложение работало в десятки раз быстрее аналогов и оригинального кода CPython. Если вы хотите распространять бинарный файл, выбирайте Nuitka — решение дает как ускорение, так и позволяет выполнить упаковку кода.

      От переводчика: в статье рассмотрено использование решений PyPy, Nuitka, Cython и Cx_Freeze для очень простого кода, который без проблем собирается данными трансляторами. Код, используемый в реальных приложениях, может быть затруднительно скомпилировать или его производительность может стать еще хуже, чем у стандартного Python. Необходимо производить бенчмарки на том коде, который вы собираетесь распространять, поскольку синтетические бенчмарки, как в этой статье не дают представления о реальном варианте использования, который будет в вашем случае.

      Python-блог

      На данный момент Nuitka – хорошая замена интерпретатору Python, способная скомпилировать всё, что предлагает CPython 2.6 и 2.7. Она переводит Python в программу С++, которая потом использует “libpython” для выполнения так же, как и CPython, делая это совместимым образом.

      Более того, иногда она оказывается быстрее чем CPython, хотя ещё и не всё до конца оптимизированно. 258% на pystone – неплохо для начала (версия 0.3.11).

      Будущее

      В будущем Nuitka сможет сама определять типы, анализируя программу целиком и используя результат этого анализа для ускорения вычислений. Причём это будет делаться по возможности не через libpython а непосредственно с родными типами данных для С++.

      Кроме того, будет возможно интегрировать связи на основе ctypes (ctypes based bindings) без потери скорости (скомпилированная программа будет вызывать библиотеку С++ напрямую в С++)

      И, наконец, Вы сможете использовать модуль hints для того, чтобы указать Nuitka те типы данных, о которых она не может догадаться сама.

      Теперь и Потом или План

      Вот наш путь с вехами:

      1: Функциональный паритет с Python, понимание всех конструкций языка и полностью совместимое поведение.
      2: Создание наиболее эффективного родного кода для этого. То есть быстро обрабатывать базовые объекты Python.
      3: Постоянное усовершенствование – определение того, что может быть скомпилированно и создание более эффективного кода.
      4: Автоматическое определение типов данных и работа с ними.
      5: Добавить интерфейс для кода на C, так что Nuitka сможет работать с “ctypes” binding как и со связями, написанными на C.
      6: Добавить модуль hints, который научит компилятор определять типы данных, используемые программистом.

      Где мы сейчас?

      Пункт 1 достигнут для Python 2.6 и 2.7, хотя, конечно, ещё остаётся 3.x. Для меня лично 3.x не стоит в числе приоритетов, но всё же надо сделать, чтобы Nuitka работала и на нём. Так что добровольцы приветсвуются!

      Со вторым пунктом мы почти закончили, что делает Nuitka почти в два раза быстрее. Хотя вряд ли мы добёмся тут больших успехов, тем не менее наша задача сделать её настолько быстрой, насколько это возможно.

      Пункт 3 – работа идёт, что-то улучшается, но мы ещё в начале пути. Так что тут можно многого ещё достичь при правильном определении типов.

      Пункт 4 – были предприняты первые шаги. Результаты обнадёживают, но требуется ещё много работы.

      Пункты 5 и 6 ещё только стоят в планах.

      Самую последнюю версию можно найти тут

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *