The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск Nuitka 2.0, компилятора для языка Python

06.02.2024 12:01

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

Среди изменений в новой версии:

  • Добавлена возможность использования переменных в конфигурации пакета, позволяющая во время компиляции запрашивать значения из установленных пакетов и использовать эти значения для определения бэкенда. Поддержка переменных в конфигурации позволяет решить штатными способами многие задачи, для которых ранее требовалось подключение плагинов.
  • Добавлена поддержка параметров, задаваемых пользователем для влияния на конфигурацию каждого пакета. Параметры могут быть прочитаны при помощи новой функции get_parameter и использованы для выбора поведения модулей (например, можно выставить параметр для отключения Numba JIT или Torch JIT).
  • Добавлена опция "--include-onefile-external-data" для задания шаблонов файлов с данными, которые определены в конфигурации но должны поставляться отдельно от исполняемого файла при сборке в однофайловом режиме (onefile).
  • Добавлена опция "--cf-protection" для выставления в GCC режима защиты CFI (Control Flow Integrity), блокирующего нарушения нормального порядка выполнения (control flow).
  • Для yaml-файлов плагинов реализована возможность создания контрольных сумм для проверки целостности, которые в будущем планируют использовать для организации верификации во время выполнения.
  • В Actions разрешено указание нескольких опций, разделённых по строкам (новая строка используется как разделитель). Например:
    
       include-data-dir: |
          a=b
          c=d
    
  • Реализован анализ типов циклов, который в будущем будет задействован для реализации выборочных оптимизаций.
  • Добавлены оптимизации для ускорения работы с неразделяемыми и экранированными переменными.
  • Расширены возможности плагина anti-bloat, который теперь может применяться для уменьшения числа пакетов при использовании библиотек streamlit, torch, knetworkx, distributed, skimage, bitsandbytes, tf_keras, pip, networkx и pywt (в основном исключена привязка к pytest, IPython, nose, triton и dask).


  1. Главная ссылка к новости (https://nuitka.net/posts/nuitk...)
  2. OpenNews: Для Python предложен JIT-компилятор, использующий технику copy-and-patch
  3. OpenNews: Выпуск Cython 3.0 и Nuitka 1.7, компиляторов для языка Python
  4. OpenNews: Опубликован Codon, компилятор для языка Python
  5. OpenNews: DeepMind открыл код S6, библиотеки с реализацией JIT-компилятора для CPython
  6. OpenNews: Представлен Pyston-lite, JIT-компилятор для штатного Python
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60558-nuitka
Ключевые слова: nuitka, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 12:09, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    Всё стремится к С.
     
     
  • 2.13, Аноним (13), 13:41, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это чтобы не в Asm. А то asmов много всяких разных. Попробуй их всех поддержи.
     
     
  • 3.18, Аноним (-), 14:54, 06/02/2024 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 2.21, Бочонок (-), 15:48, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Nuitka

    Название какое-то неприятное... даже не знаю, что напоминает, но ассоциируется с чем-то неприличным. :\

     
     
  • 3.39, Аноним (39), 21:09, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для тез кто немного умеет во французский язык то назваие созвучно с уменьшитеьно-ласкательного "ночь" - ночка. Nuit фр. - "ночь"
     
     
  • 4.40, Аноним (40), 21:21, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Французский прононс тут не причем, название читается как "Нютка", от имени Анютка.
     
     
  • 5.50, Аноним (50), 00:57, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Source: https://nuitka.net/doc/Credits.html#nuitka-namesake
     
  • 3.58, kusb (?), 21:49, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мне напоминает что-то приятное. Возможно улитку.
     
  • 2.53, Данные в так называемом поле Name (?), 08:56, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Только C++ смог переступить через ветошь истории и пойти дальше, сметая на своём пути мертворожденных
     

  • 1.7, Аноним на удлёнке (?), 12:35, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что кто пользовал, кто что может сказать по применению? Поддерживается ли numpy? А ИИ теперь можно в итоге в Си скомпилировать? :D
     
     
  • 2.11, anonymous (??), 12:50, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Применяется нормально.

    Numpy поддерживает, программы с pytorch и onnx runner компилирует хорошо.

     
     
  • 3.20, Hck3r (?), 14:59, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А с Mojo не сравнивали?
     

  • 1.10, Аноним (10), 12:49, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Нужно только как форма DRM - ведь для байткода декомпиляторы уже есть.
     
  • 1.12, Пряник (?), 13:09, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Там такйо огромный и страшный код получается...
     
     
  • 2.14, Аноним (13), 13:44, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но, всё равно, же быстрее пашет, чем исполнение файла .py под CPython.
     
     
  • 3.16, Аноним (16), 13:53, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лолнет, кто тебе такое сказал вообще? Только медленнее (и запуск и исполнение), да и память огромные блобы делить не будут. Хочешь быстрее, собирай cpython с pgo/lto и -fno-semantic-interposition -fno-plt.
     
     
  • 4.22, Аноним (13), 16:50, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если бы было так, то зачем затеваться эту Нютку пилить было бы?
     
     
  • 5.23, Аноним (16), 17:29, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А почему бы и нет? Лишь бы автору нравилось, в мире есть более бесполезные проекты.
     
  • 3.44, Такер Карлсон (?), 23:10, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, разница очень мала. Вот pypy даёт ускорение ощутимое.
     
  • 3.52, User (??), 07:33, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В общем, нет - по крайности на моих задачах прям то-на-то выходит. В качестве переносимого формата доставки кода в тех случаях, когда контейнеры почему-то "не айс" - норм (Я так например инсталлятор делал) - а так, чтобы тыр-пыр-дыр-форманс буууст - то ни. Ну или "с осторожностью".
     

  • 1.17, Аноним (17), 14:45, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сишка и плюсы как ядро других языков - неплохо.
     
     
  • 2.19, Аноним (-), 14:55, 06/02/2024 Скрыто ботом-модератором     [к модератору]
  • –4 +/
     
  • 2.57, kusb (?), 21:46, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    KPHP
     

  • 1.25, Аноним (-), 17:37, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Писал Эратосфена на разных языках (от 1 до 4 млрд), запускал на локальной машине. Сравнение:

    * оптимизированный Си: 14-15 сек
    * С++ (vector<bool>): 18-19 сек
    * наивный Си: 30-35 сек
    * Free Pascal (TBits): 58-59 сек
    * C# (BitArray): ≈70 сек
    * оптимизированный Python (bitarray): ≈19 минут
    * чистый Python: 48-55 минут

    Прирост на 335% это покамест негусто)

     
     
  • 2.26, n00by (ok), 18:16, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А потребление памяти заодно не сравнивали?
     
     
  • 3.28, Аноним (-), 18:29, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Писалось с расчетом на битовые операции, а не на bool. Так что расход памяти был у всех 256 МБ на массив + накладные расходы. Ну, у Си, помню, было плюс мегабайт, у других +10...+20.
     
     
  • 4.29, n00by (ok), 18:41, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо. +20 не так уж и мало, почти 10% не понятно на что.
     
  • 2.27, helloworld (?), 18:18, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Надо добавить Fortran и Julia
     
     
  • 3.34, Псевдонимус (?), 19:17, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Надо добавить Fortran и Julia

    Ну сам+то по себе пердон ничего не представляет. Потому можно попытаться и добавить. Пердон он как скриптовый язык говно.

     
  • 2.30, Аноним (13), 18:42, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Народ, прекращайте уже эти секи писать. В соответствие с СИ обозначение единицы времени - 1 с. https://ru.wikipedia.org/wiki/Международная_система_единиц
     
     
  • 3.42, Аноним (-), 22:56, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, СИ - это одно, а грамматика - другое: https://orfogrammka.ru/орфография/общеупотребительные_сокращения/
    Как, кстати, от страницы отличать?
     
     
  • 4.51, Аноним (51), 03:30, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а как отличить грамматику на букву х от знаков препинания?
     
  • 4.60, Аноним (-), 15:26, 08/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.31, Аноним (-), 18:56, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • –10 +/
    >наивный ...
    >оптимизированный ...

    Чувак от тебя прям несёт профессурой, кафедрой, или каким-то институтом. Иди займись реальным делом.

     
     
  • 3.48, Такер Карлсон (?), 23:19, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Чувак от тебя прям несёт профессурой, кафедрой, или каким-то институтом. Иди займись реальным делом.

    Вспомнилось выступление Олега Тинькова в МГУ, после которого ему закрыли в него вход.

     
  • 3.54, Аноним (54), 11:58, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> наивный ...
    >> оптимизированный ...
    > Чувак от тебя прям несёт профессурой, кафедрой, или каким-то институтом. Иди займись реальным делом.

    Понятно: дэушка выехала з деревни, но деревня из нее - нет.

    Для людей, которые соприкасаются с алгоритмами профессионально, в " наивный ... и оптимизированный ..." нет ничего необыкновенного, это просто кальки с английских "naive... и optimized..", которые употребляются там повсеместно.

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

     
  • 2.45, Такер Карлсон (?), 23:12, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А nuitka пробовали? Pypy, pyston?

    До кучи ещё бы го добавить, можно аж сконвертнуть в него с питона.

     
     
  • 3.49, Fafhrd (ok), 00:31, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    cython заодно
     
  • 2.55, Андрей (??), 17:11, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть ссылка на github с исходниками?
    Меня смущают показатели fp :)
     
  • 2.59, randomize (?), 01:54, 08/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Исходники в студию! А то понапишут всякого, а виноват у них питон.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру