Подготовлен (http://nuitka.net/posts/nuitka-release-060.html) выпуск проекта Nuitka 0.6.0 (http://nuitka.net/), в рамках которого развивается компилятор, позволяющий транслировать скрипт на языке Python в представление на C++, которое затем можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). Обеспечена полная совместимость с актуальными выпусками Python 2.x и 3.x. По сравнению с CPython скомпилированные скрипты демонстрируют (http://nuitka.net/pages/overview.html) в тестах pystone повышение производительности на 312%. Код проекта распространяется под лицензией Apache.
В новой версии предложены значительные оптимизации производительности. По сравнению с прошлым выпуском прирост производительности относительно CPython вырос с 258% до 312%. Обеспечена базовая поддержка вывода актуальных Си-типов, включая int и str, а также улучшено взаимодействие с кодом на языке Си. Внесены изменения в интерфейс командной строки и изменены некоторые значения по умолчанию.
URL: http://nuitka.net/posts/nuitka-release-060.html
Новость: https://www.opennet.me/opennews/art.shtml?num=49362
https://shedskin.github.io/
2.4-2.6? 10 лет назад было бы актуально
для ансибла и кучи другого, начатого писаться 10 лет назад до сих пор актуально
А ежели питоновский скрипт использует сторонние либы какиенить? Ну, там, PyQt, или ещё какие, это же не сработает. да?
Всё работает, все импортируемые либы компилируются точно также как и основной скрипт
Тогда это какая-то магия. А какиенить биндинги на опенцыви тоже работают? Надо попробовать.
Я лично проверял pyqt5, opencv, numpy, lxml, всё работает безупречно
Зачем тащить Qt из питона? Пишите сразу на C++В любом случае, питоно-нашлёпки обрубают возможность использование наследования классов Qt.
Для того, чтобы написать простенький скрипт не надо контроллировать выделение и очистку памяти и всю эту сишную галиматью (очень нужную и важную, но не в данном случае). Вот надо мне скрипт, но с мордой. нафиг мне вся эта цэпэпэйшина? Правда, и Нуитка тоже не нужна, мне просто было интересно. Но вместо ответа я получил классику жанра.
> Для того, чтобы написать простенький скрипт не надо контроллировать выделение и очистку памяти и всю эту сишную галиматьюВ современном C++ для простеньких и средненьких скриптов делать этого тоже не надо. C98++ ≠ C++!
Для Питона это. Для Руби - Кристал. А для JS что-то такое есть?
js быстрее пайтона, поэтому разница с нативом не будет настолько значительной, но уровень поддержки существующего кода заметно снизится
Вы делали тесты с pypy ?
> js быстрее пайтона,И мягче, ага. А реализации еще и фиолетовее.
> поэтому разница с нативом не будет настолько значительной,Так вот оно все как на самом деле!
А глупый гугл развивает свой JS-движок V8 (с JIT) уже более десятка лет (обошелся гуглу, скорее всего, совсем не в один десяток миллионов). Как впрочем мозилловцы и МС тоже стараются не сильно отставать (и там тоже совсем не полу-студенческие/академические реализации с соотв. "бюджетом", как у того же PyPy).
Ну так что взять с недалеких корпораций, сами виноваты -- забыли проконсультироваться на опеннете :)
Ээ? Вы вообще поняли, что я не обсираю JS, а наоборот?
Сравниваем как раз скорость возможного натива и существующих JIT (который всё-таки медленнее натива), так что о чем речь вообще?
> Ээ? Вы вообще поняли, что я не обсираю JS, а наоборот?Да, отлично понял. А вы что, решили что я его "защищаю" или нахваливаю? Отнюдь.
> Сравниваем как раз скорость возможного натива и существующих JIT (который всё-таки медленнее
> натива), так что о чем речь вообще?Речь о сравнении теплого с мягким же - спецификаций ЯП, вместо их конкретных реализаций.
Ну и обычном нахваливании ЖСниками предмета своего обожания -- при этом, очень тактично умалчивается, что шустрость появилась только после вбухивания миллионов в реализацию JIT:
https://web.archive.org/web/20080608014619/http://shootout.a...https://web.archive.org/web/20060924085748/http://shootout.a...
1.0 D Digital Mars #2 0.66 13,116 665
1.1 C gcc #2 0.73 12,984 712
1.2 Lisp SBCL 0.83 61,332 815
1.6 C++ g++ #2 1.06 14,464 775
1.7 Pascal Free Pascal #2 1.10 13,032 729
1.7 OCaml 1.15 44,796 524
1.9 Clean 1.28 43,340 818
2.2 C++ g++ 1.45 25,404 555
2.5 BASIC FreeBASIC #3 1.64 13,184 620
2.6 SML MLton 1.74 39,788 821
3.7 C# Mono #2 2.44 24,976 711
4.1 Python #3 2.69 45,528 272
4.1 Eiffel SmartEiffel 2.72 53,144 590
...
52 Erlang HiPE #2 34.37 319,084 436
54 Haskell GHC 35.54 486,224 478
110 JavaScript SpiderMonkey 73.24 152,276 289
1. Сравниваем конкретные реализации: Питон, официальный обыкновенный vs Node.js/V8.
2. При чем тут какое-то умалчивание и какая разница, кто что вбухал, если оно на текущий момент именно такое?
Искренне не понимаю, какая нам сейчас разница, что там было в 2006 или 2008. Или вбухивание денег в технологию ставит на ней крест?
> 1. Сравниваем конкретные реализации: Питон, официальный обыкновенный vs Node.js/V8.Питон - это ЯП. Есть СPython (типа, эталонная реализация), PyPy, Jython, IronPython, Stackless? Какую объявить официальной и на основе чего?
> 2. При чем тут какое-то умалчивание и какая разница, кто что вбухал, если оно на текущий момент именно такое?
При том, что если JS "разгоняется" только за многие тонны бабла, то о каких-то особых преимуществах или "заслугах" самого языка (точнее, его структуры/семантики) в этой области ("быстродействие" ака "скорость") вряд ли можно говорить серьезно?
> Искренне не понимаю, какая нам сейчас разница, что там было в 2006
> или 2008. Или вбухивание денег в технологию ставит на ней крест?С таким подходом можно объявить Теслу первым в мире автомобилем, позволяющим выходить в космос. А еще самым быстрым среди атмосферников -- развивает вторую космическую, как-никак …
> Какую объявить официальной и на основе чего?Странный вопрос. Разумеется, официальная = эталонная, самая распространенная, которая имеет отношение лично к Гвидо. CPython.
> При том, что если JS "разгоняется" только за многие тонны бабла
Скорее за счет конкуренции, которой до прихода Хрома практически не было. Пришел Гугл - зашевелились остальные. Вон JS в Firefox местами обгоняет V8, в который Гугл вложили "тонну бабла".
Плюс появление веб-приложений сподвигло к оптимизациям и улучшениям.
JS сейчас такой какой есть именно благодаря суровой конкурентной буре.> о каких-то особых преимуществах или "заслугах" самого языка (точнее, его структуры/семантики) в этой области ("быстродействие" ака "скорость") вряд ли можно говорить серьезно?
Очень странная претензия к существующей технологии. Типа в Питон ничего никто не вливал и у него ноль спонсоров? На заметку: https://www.python.org/psf/sponsorship/sponsors/
Да и кого это всерьез волнует? Вот есть Нода, есть CPython. Выбираем по тому, что имеется сейчас и что работает как нам надо.> можно объявить Теслу первым в мире автомобилем, позволяющим выходить в космос
Еще более странная аналогия. Тесла в космосе не может ничего кроме как находиться
Сейчас JS - один из быстрейших скриптовых языков. Факт. А всё остальное - словесная чепуха.
вот именно по этому смысла нет. Компилятору будет очень сложно обогнать гугломазиловский jit который они десятилетиями развивают.
А мне интересно, можно ли nginx подключить к такому бинарю web-сервера.
> А мне интересно, можно ли nginx подключить к такому бинарю web-сервера.Идея прикольная, реальная, но бесполезная. Узкое место web-приложения -- БД (проблему усугубляет еб***ная ORM. Сначала мы вводим абстракции, а потом героически выпиливаем) и сокет
> А мне интересно, можно ли nginx подключить к такому бинарю web-сервера.Ну простейший вариант CGI, там пофиг на чём написано, хоть на баше. FCGI наверное тоже можно. Интересно Flask и Django компилятся?
Я как то видел, код админки django обработанную нюткой, но версия старая запускать не пробовал
Судя по бенчмаркам, довольно быстрая штука.
Кстати вы знали что автор либы немец, а его жена русская, и либа звучит как "нютка" и посвящена его жене Анне, которую ласково зовут Анютка, сокращённо это будет нютка, но на английском языке это сложно написать поэтому написано нуитка
> но на английском языке это сложно написать поэтому написано нуиткаNiutka было бы ближе по звучанию.
Логичнее было бы увидеть Niutka.
А ей понравится , что она "ни утка" ?
> А ей понравится , что она "ни утка" ?Главное, что не гусыня.
А что там тредами? Все так же печально как в самом Python? Совместимость жеж)))
> Си-типов, включая int и str
> strШо?
Nuitka предоставляет кучу внутренних типов, которые используются для формирования кода на Си.constant_builtin_types = (
int,
str,
float,
list,
tuple,
set,
dict,
slice,
complex,
xrange,
NoneType,
)
There is a lot of ground to cover, with more C types to come, and all of them needing specialized helpers. But as soon as e.g. int, str are covered, many more programs are going to benefiting from this.
А может проще сразу на C++ написать? Так-то питон гораздо уродливее и костыльнее
Ну кто-то не знает плюсы.
Я, например, не знаю Яву (и не хочу знать), поэтому вынужден писать под Андроид на Qt+C++. Хотя в терминах Андроид это жуткий костыль.
Вот и эта штука для питонистов которым не нужен С++.
так пишите, кто не дает? Только вы ж ничего не напишете, кроме ху%ловрот.а эта хрень для тех, кто переписывать весь мир на c++ не собирается, а конкретное уже написанное глюкало хочется сделать попроворнее.
Вы же не предлагаете писать ТОЛЬКО на C++ или ТОЛЬКО на *любой компилируемый язык*?
Я написал то что написал, фантазии оставьте при себе
Если это не троллинг, то разверни мысль. В каких ситуациях код на C++ красивее и практичнее? Для всякой битовой арифметики я ещё могу согласиться. А в остальном, доказательства или трепло.
Это c++ уродливый. А python cool.
Просто попробуйте Golang и все пройдет.
Для того что бы возненавилить JS или Python, достаточно выучить любой вменяемый компилируемый язык, сделать что-то сложное и поддерживать его несколько лет...
Но тем не менее стоимость таких разработок (как минимум на первом этапе) говорит в пользу этих "недоязыков"...
Так что как не прискорбно, от этого не уйти и приходиться пилить всякие нуитки и джиты ...
В общем респект и уважуха автору)
>Так что как не прискорбно, от этого не уйти и приходиться пилить всякие нуитки и джиты ...Это нужно для матана, где прототипы часто пилятся на Python. Если после этого его не нужно будет перепиливать на какой-нибудь C++ - вообще счастье.