The OpenNET Project / Index page

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

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

12.06.2023 11:52

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

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

  • Обеспечена полная совместимость с веткой Python 3.11.
  • Переработан инструментарий для тестирования, в котором обеспечен повторно воспроизводимый вывод ошибок компиляции.
  • Добавлена опция "--include-distribution-metadata" для включения метаданных дистрибутива.
  • Для систем отличных от Windows предоставлена возможность включения в обособленный вариант поставки (standalone distribution) символических ссылок, если эти ссылки указывают на внутренние файлы проекта.
  • Расширены возможности плагина anti-bloat, который теперь может применяться для уменьшения числа пакетов при использовании библиотек huggingface_hub, tokenizers, torch, triton и networkx (в основном исключена привязка к pytest и IPython).
  • Проведена оптимизация производительности и масштабируемости. Продолжена работа по реализации оптимизаций тела классов.
  • Улучшено определение зависимостей на платформе macOS.
  • Добавлен параметр "--report-diffable", обеспечивающий генерацию XML-отчётов, в форме, пригодной для последующего сравнения на разных системах.
  • Добавлена опция "--report-user-provided" для вставки в отчёты данных, предоставленных пользователем.
  • В тестовом инструментарии реализована утилита nuitka-watch для определения проблемных с выпусками PyPI.


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


Обсуждение (67) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:20, 12/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    На С делаем Python , потом libpython чтобы поддерживать представление на С , полученном с компилятором из Python , чтобы сделать совместимость с CPython - шизофазия .
     
     
  • 2.4, Неуклюжий танцор (?), 12:34, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    На самом деле идея не плохая, хотя бы тем, что доказывает возможность применения автоматического управления жизнью объекта на языках низкого уровня, а вместе с этим таких плюшек как проверка доступа к несуществующему элементу массива, внятный дамп стека при падении и т.п. Хотя конкретно Нуитку использовал когда то у себя, но столкнулся с катастрофическим падением производительности, по сравнению с интерпретатором, и пришлось отказаться от неё, но это было давно и возможно уже не актуально.
     
     
  • 3.6, Аноним (6), 13:09, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Всегда использовал нуитку как способ дистрибуции, а не ускорялку. Никаких супер пупер ускорений не замечал с нуиткой.
     
     
  • 4.13, Аноним (13), 14:17, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Она ощутимо замедляет. Интерпретатор у меня собран с пго и интересными флагами, в итоге в 2 раза быстрее исполняется на ряде задач (6 секунд вместо 12), а сабж мало того что гигабайты блобов в память подгружает, так и исполняет код на скорости дефолтного -O2, если не медленнее. Время запуска каждый раз куда больше, опять же.
     
  • 3.17, Аноним (17), 14:39, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > возможность применения автоматического управления жизнью объекта на языках низкого уровня

    https://v8.dev/blog/oilpan-library

     
  • 3.58, n00by (ok), 09:46, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > доказывает возможность применения
    > автоматического управления жизнью объекта на языках низкого уровня

    Не доказывает, а показывает.
    Си - это не "низкий" уровень, а "высокий" (или "средний").
    "На ассемблере" тоже можно управлять.

     
  • 2.22, Аноним (22), 15:35, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вполне себе такая нормальная шизофрения.
     
  • 2.47, anonymous (??), 20:55, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    libpython нужен не для этого. Такое впечатление, что ты вообще не представляешь, о чём говоришь.
     

  • 1.2, Дмитрий (??), 12:28, 12/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем тогда писать на Python? Пишите уж сразу на Си, а то какой-то TypeScript для Си получился...
     
     
  • 2.3, Аноним (13), 12:30, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На си нет pytorch и остального. Может, ты напишешь?
     
     
  • 3.48, GraiT (?), 21:27, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вообще-то pytorch на C++ написан, а python биндинг...
     
     
  • 4.49, Аноним (13), 21:42, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще тип того, да. Но это обрекать себя на лишнюю боль непонятно ради чего. А если мне надо spacy/thinc? Поверх tensorflow оно не очень работало тоже, когда  я в прошлый раз интересовался, нужен torch. Я, кстати, не слышал, чтобы торч кто-нибудь использовал без питона, там всё больше тензорфлоу. Но это не замена, слишком разные.
     
  • 2.5, Аноним (6), 13:08, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Может ты сделаешь чтобы си работал как интерпретатор? В интерактивном режиме.
     
     
  • 3.10, Аноним (10), 13:57, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    root
     
  • 3.24, Аноним (24), 15:58, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    может сразу на Julia писать?
     
  • 3.41, OpenEcho (?), 19:03, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Может ты сделаешь чтобы си работал как интерпретатор? В интерактивном режиме.

    А почему нет, вполне работает

    #!/usr/local/bin/tcc -run
    #include <stdio.h>
    int main() {
       printf("Hello, AnonimoNet!");
       return 0;
    }

     
     
  • 4.60, Аноним (-), 11:00, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А теперь сделай так, чтобы:
    1. tcc умел вычислять отдельные выражения как gdb.
    2. во время работы программы можно было бы заменять функции.
     
     
  • 5.66, n00by (ok), 15:29, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > 2. во время работы программы можно было бы заменять функции.

    Если так сделать, получится другой язык.

    5.1.1.2 Translation phases

    1 The precedence among the syntax rules of translation is specified by the following phases.

    ...

    8. All external object and function references are resolved. Library components are linked to
    satisfy external references to functions and objects not defined in the current translation. All
    such translator output is collected into a program image which contains information needed
    for execution in its execution environment.

     
  • 5.76, _kp (ok), 11:15, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тогда берем gcc, и задача сводится к предыдущей ----- bin sh tail -n 4 0 ... большой текст свёрнут, показать
     
     
  • 6.88, Анониссимус (?), 17:30, 15/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Настоящий geek-way. Два чая!
     
  • 2.11, Аноним (11), 13:58, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Зачем вообще писать ни C, когда есть ассемблер. Какой-то TypeScript для ассемблера получился..
     
     
  • 3.14, Аноним (1), 14:28, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда-то я делал программы напрямую в машинных кодах в шестнадцатиричных числах. Приходилось высчитывать смещение каждый раз при изменении программы. В ассемблере это делать гораздо удобнее, компилятор высчитывает сам. Си - это невероятная роскошь, позволяющая делать что угодно.
    Пожалуйста, следите за руками: Машинные коды, Ассемблер, Си. Это эволюция.
    Дальше пошли не туда...
     
     
  • 4.30, Аноним (30), 17:05, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как дальше должна была идти эта эволюция? Очень интересно.
     
     
  • 5.37, Аноним (1), 18:35, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то ближе к естественному языку. Например:
    "Прочитать данные из файла/сети, вычислить среднее арифметическое значение, вернуть результат в графическом виде в формате jpg".
     
     
  • 6.42, Аноним (42), 19:26, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот для этого ChatGPT и сделали.
     
     
  • 7.55, n00by (ok), 09:39, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А Дельфи для чего сделали?
     
  • 6.67, rshadow (ok), 17:16, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    perl?
     
  • 6.79, _kp (ok), 11:43, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    да, да. Прочитать файл смогли, а разобрать нет. Как глянешь в питоновский код, так там сплошное преобразование двоичных данных в строки и противоестественное жонглирование ими.  А если надо не среднее, а что то посложнее посчитать, то понеслось..
    Кстати, задачи подобные примеру, решаются экселем, вообще без велосипедостроения на питонах.
     
     
  • 7.83, User (??), 16:16, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Г-ди, спаси нас от автоматизаторов-на-эхеле, а уж с остальным мы как-нибудь сами...
    Видел я последствия этого "невелосипедостроения", причем не однократно - в диапазоне от "прибьем книгу гвоздями к источникам данных на файловом сервере по относительным, а местами и абсолютным путям" до "а давайте мы ехель заэмбеддим в качестве репорт-сервера для нашего ПРОДУХТА и съэкономим на BI!" через "а тут мы подцепим pi-datalink, и нимнощька вижлвасика" - равнофигово получалось, если честно. Сейчас просто рефлекторно бью по рукам автоматизаторам-от-сохи, питонисты (даже датасатанистского-я-МАТЕМАТИК-а-не-порограммист!!111-изводу) по сравнению с эхелизаторами прям Ъ-программисты. ЪЪ-даже.
     
     
  • 8.84, _kp (ok), 16:25, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Смотря что автоматизировать Если одноразово по быстрому посчитать сгенерировать... текст свёрнут, показать
     
     
  • 9.85, User (??), 16:48, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да как бы уже и нет В том же Юпитере делается не сложнее, результат выглядит... текст свёрнут, показать
     
  • 5.53, BeLord (ok), 09:16, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    К решению задач,а не миллионный раз переписывать одно и тоже с нулевым кпд.
     
     
  • 6.56, n00by (ok), 09:45, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Селекция почему-то до сих пор не объявлена лженаукой (если не считать ГМО). При том что окружающая среда за тысячи лет изменилась не столь сильно, как устройства для исполнения кода.
     
     
  • 7.69, Аноним (69), 20:08, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Роль селекции в IT сейчас выполняет маркетинг и хайп, а не технические достоинства продукта. По сути это отрицательный отбор, который останавливает, а кое-где и разворачивает эволюцию.
     
     
  • 8.72, n00by (ok), 05:47, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Из этого следует, что переписывают не в ту сторону Но никак не переписывать ... текст свёрнут, показать
     
  • 3.39, Аноним (39), 18:51, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Писать что Си надо уметь, а на Питоне любая обезьяна уже через неделю может писать.

    И это плюс Питону. А на Си ты и через десять лет будешь память ронять.

     
     
  • 4.54, BeLord (ok), 09:21, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну смотри, есть софт на С, написан в 2010, в реалтайме с 2014, память на месте, ничего не утекло. Интересно почему так, может потому, что проверки везде стоят, а код не на "отвали" написан?-))
     
     
  • 5.57, Прохожий (??), 09:45, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько стоит такой код по сравнению с питонячим? Так отож.
     
     
  • 6.64, BeLord (ok), 13:30, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сколько стоит такой код по сравнению с питонячим? Так отож.

    Если говорить про стоимость владения, то ниже, чем на питоне-))) Если говорить про единовременные вложения, то выше.

     
  • 6.70, YetAnotherOnanym (ok), 21:31, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    "Питонокод - дешёвка". А чо, новое слово в питонорхейте.
     
  • 5.65, User (??), 15:00, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ... ну или по тому, что не тестил никто - работает себе конечный автомат на детерминированном наборе данных и работает - ничего интересного, а стоит два ведра рандома на вход отгрузить - и "ой, штайта?!" 100% покрытие проверками чего-нибудь отличного от хеллоуворлда обычно только на opennet'е и существует - где-то по соседству с "настоящими c-шниками"(ТМ)
     
  • 4.71, Аноним (24), 04:45, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Писать что Си надо уметь, а на Питоне любая обезьяна уже через неделю может писать.

    Чтобы на питоне хоть что-то эффективно работающее написать, надо освоить довольно увесистую документацию по библиотекам. Без знания реализованных для него структур данных ничего путного не получится. А это уже далеко не неделя. Это на C, имея знания об алгоритмах, можно через неделю что угодно писать.

     
     
  • 5.77, User (??), 11:36, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, я предполагаю, что "имение" "знаний об алгоритмах", позволяющее реализовывать на C алгоритмы и структуры данных с эффективностью уровня "стандартной библиотеки python'а" занимает несколько большее время, нежели ознакомление с этой самой библиотекой - но это конечно же не точно, да?
     
  • 3.61, Аноним (-), 11:03, 13/06/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.59, Аноним (59), 09:56, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На C нет классов.
     
     
  • 3.68, Аноним (68), 19:23, 13/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот дорогой аноним, ошибся ты - ООП это парадигма программирования, писать с классами можно и на С, и весьма успешно, просто первый параметр всегда должен быть ссылкой на структуру. На С нет RAII, что было реализовано уже в С++ с его создания. Впрочем RAII реализуется на С макросами - на гитхабе полно и примеров и библиотек.
     
  • 3.73, n00by (ok), 05:57, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    struct это class с открытыми членами.
     
  • 3.80, _kp (ok), 11:46, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну пиши на С++. Какая разница. Более того в одном проекте можно мешать части на си и с++ как угодно и без лишних телодвижений.
     
  • 2.86, randomize (?), 14:41, 15/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Значит, синтаксис питона в разы лучше, раз люди готовы так заморачиваться.
     
     
  • 3.87, randomize (?), 14:46, 15/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее, писать на нем в целом удобнее, а не один лишь синтаксис.
     

  • 1.8, Аноним (8), 13:46, 12/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Кстати, если ограничить типы данных программы, например, использовать только int и float, то транспилятор Python -> С можно написать минут за десять и строк 100-200 кода python, если знать, что и как делать, и для написания boilerplate code использовать ChatGPT. (Необходимо воспользоваться модулем ast для парсинга кода python и ,например, использовать трансформеры из этого модуля.)
     
     
  • 2.9, Аноним (9), 13:55, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А если выкинуть list, dict, tuple, плюнуть полностью на ООП, еще пару таких мелких упрощений и можно вопросить - зачем нужен питон если есть С?
     
     
  • 3.12, Аноним (8), 14:13, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >А если выкинуть list, dict, tuple ...

    1) поддержку list, dict, tuple можно легко добавить. (Необходимость ООП спорный вопрос, при неумелом использовании скорее вред)

    >зачем нужен питон если есть С?

    2) мне, например, нужно держать свою кодовую базу на одном языке и транспилировть по необходимости в C++/JavaScript/... специальные DSL
    3) у питона огромное community и куча кода-библиотек.
    Для меня сейчас особенно актуальны модули для тестирования (pytest, unittest, hypothesis)

     
     
  • 4.28, Аноним (28), 16:28, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Pyston'утый?
     
  • 4.81, YetAnotherOnanym (ok), 13:17, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если "огромное community" само по себе аргумент, то "огромное community" питонохейтеров - очень весомый повод не кодить на питоне.
     
     
  • 5.89, randomize (?), 20:54, 16/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мне как-то высказал свое фи по поводу питона поддатый кодер на пхп. Как бы намекает...
     
     
  • 6.90, randomize (?), 20:56, 16/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле, я считаю, что можно нормально писать и на python, и на PHP, и на js. Достаточно вынуть руки из задницы...
     

  • 1.25, Аноним (25), 16:06, 12/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ты уже написал транслятор со своего языка в Си?
     
     
  • 2.45, Mail (?), 20:03, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Моя гошка и так хороша для моих целей.

    - писать быстро (быстрее чем на питоне)
    - тестировать легко
    - отлаживать без проблем
    - ясно и просто с пакетами
    etc

    а вы и дальше любите языки мамонта.

     
     
  • 3.46, Аноним (46), 20:28, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Go такой же язык мамонта, только выплюнутый в мир попозже
     
  • 3.50, Аноним (50), 21:54, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    дубовость на месте или скоро подвезут всяких скобочек?
     
  • 3.51, Tron is Whistling (?), 22:48, 12/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    - гошка
    - ясно и просто с пакетами
    Понятно, расходимся.
     
  • 3.75, Пряник (?), 09:40, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Писать на Go не быстрее. Python просто завален синтаксическим сахаром. Превращает функцию в генератор одним yield, в одну строку преобразуем кучу списков в один с фильтрацией [list comprehensions], либо в функцию, поменяв лишь скобки на круглые (generator expressions), любую шляпу заворачиваем в декоратор и пихаем везде наглядной строкой @text, превращаем любую функцию в бесконечный поток данных функцией iter, 0b1111, 0o17, 15, 0xF, b'\xde\xad\xbe\xef'.hex() и вообще всё - объект первого порядка и можно пихать в любое место в коде.

    Ваш ответ, Go'шники?

     
     
  • 4.78, User (??), 11:40, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А go'шникам написанное еще и саппортить приходится обычно, а за диабетиками - проще переписать, чем разобраться почему goody-beauty "однострочник на три строки" вывалил стектрейс при попытке запустить его где-то кроме когда-то собранного контейнера. Такое себе.
     
     
  • 5.91, randomize (?), 14:17, 17/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Легко запускается то, что написал сам. А со сторонней прогой не всегда все очевидно. Даже собранный бинарь может дать сегфолт, и иди, разбирайся, что ему не нравится. Как по мне, стектрейс лучше - он хотя бы сразу выводит источник проблемы перед глазами.
     

  • 1.74, Пряник (?), 09:28, 14/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну опять про скорость... Лучше кросскомпиляция под разные системы со всеми зависимостями в одном бинарнике (как в Go).
     
     
  • 2.82, iiiypuk (?), 14:15, 14/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Crystal
     

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



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

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