После шести месяцев разработки доступен (http://blog.pyston.org/2015/02/24/pyston-0-3-self-hosting-su.../) третий выпуск проекта Pyston (http://www.pyston.org), в рамках которого компанией Dropbox, в которой работает Гвидо ван Россум, развивается реализация языка Python, созданная с использованием наработок проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код Pyston написан на языке C++ и распространяется (https://github.com/dropbox/pyston) под лицензией Apache.
В отличие от проекта PyPy (http://www.opennet.me/opennews/art.shtml?num=39759), также продвигающего идею применения JIT для ускорения выполнения Python-скриптов, в Pyston используется не трассирующий JIT, базирующийся на компиляции в машинный код часто выполняемых циклов, а применяемый в современных JavaScript-движках JIT на основе трансляции отдельных методов (method-at-a-time), который, по мнению инженеров Dropbox, является более перспективной технологией. Принцип работы Pyston сводится к разбору кода на языке Python и его трансляции в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходит обработку в оптимизаторе LLVM и передаётся для исполнения в JIT-движок LLVM, который преобразует IR-представление в машинный код.
Для получения информации о типах переменных для программ на динамическом языке Python применяется техника вероятностного предсказания типов объектов с последующим уточнением правильности выбора типа в процессе выполнения. Таким образом Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе. Работа может осуществляться в многопоточном режиме, допускающем параллельное выполнение нескольких нитей кода на языке Python и избавленном от глобальной блокировки интерпретатора (GIL, global interpreter lock).При подготовке нового выпуска большое внимание было уделено оптимизиации производительности и избавлению от узких мест, в рамках движения проекта от стадии неоптимизированного прототипа к формированию полноценного продукта. В текущем виде производительность Pyston уже в некоторых тестах (http://speed.pyston.org/comparison/) опережает CPython. В среднем выигрыш в производительности составляет всего 1%, но в отдельных тестах наблюдается рост производительности до двух раз, который сводится на нет отставанием, наблюдаемым при выполнении некоторых ещё не оптимизированных операций. Например, производительность выполнения скомпилированного кода уже достаточно велика, но использование JIT-компиляции приводит к достаточно весомым задержкам при запуске. В Pyston пока используется достаточно медленный интерпретатор AST и генерируется слишком большой код LLVM IR, что замедляет стадию компиляции. Оставляет желать лучшего и система распределения памяти, которая пока отстаёт от CPython. В будущих выпусках будут предприняты меры для устранения данных недостатков.
Вторым важным направлением развития Pyston 0.3 стала работа по улучшению совместимости с CPython. Проект пока ограничен поддержкой Python 2.7 и постепенно расширяется, позволяя запускать всё более крупные и сложные приложения. В конечном счёте разработчики намерены обеспечить возможность запуска с использованием Pyston серверного кода Dropbox. В настоящее время Pyston уже успешно выполняет все вспомогательные внутренние скрипты, используемые для сборки. При тестировании возможности импорта различных компонентов, в Pyston 0.3 удалось успешно импортировать 117 стандартных библиотек и 27 модулей с расширениями. С одной стороны, общее число библиотек и модулей CPython в два раза больше и предстоит проделать большую работу по обеспечению совместимости, но, с другой стороны, при тестировании выпуска Pyston 0.2 результаты были в два раза хуже - удалось загрузить 56 библиотек и 12 модулей.
Прогресс отмечается в поддержке C API, причем не только по загрузке модулей, содержащих код на языке Си, но в плане поддержки внутреннего кода CPython, что позволяет напрямую переносить в Pyston большие блоки кода из CPython. В настоящее время объём кода импортированный из CPython уже приблизился к объёму кода, специально написанного для Pyston. Подобный подход значительно ускоряет разработку, давая возможность сосредоточиться на ключевых особенностях проекта, не тратя много времени на рутинные операции по обеспечению совместимости.
URL: http://blog.pyston.org/2015/02/24/pyston-0-3-self-hosting-su.../
Новость: http://www.opennet.me/opennews/art.shtml?num=41726
Производительность той или иной реализации, в сочетании со скоростью разработки, делают этот язык реально привлекательным.
Надо будет изучить питон. Вижу его зрелость и близость к совершенству: реализацию языка рефакторят и рефакторят, делают кучей способов.
> Вижу его зрелость и близость к совершенствуВ таких терминах скорее про perl ;-) У питона ещё бурное извитие...
Перл? Рефакторят?
perl 6?
Если уж говорить об изучении, то Ruby. Если язык изначально нормально спроектирован, то его не колбасит от версии к версии и криков поклонников разных веток не возникает.
Хмм, в соседней новости: http://www.opennet.me/opennews/art.shtml?num=41716
высказывают другое мнение.
Обычно другое мнение высказывают те, кто с Ruby не работают. Совместимость между версиями у него довольно высокая. Тем более в старших, начиная с 1.9.
> довольно высокаяОбычно так фанаты говорят. "А если вот так посмотреть - то вовсе даже и не кривой!". Вот только это не отменяет того что скрипты на этом работают абы как если их не переписывать и не заморачиваться правильной версией. Заработает ли скрипт - лотерее. Менее хардкорная чем с питоном, но вот уж что называется - "имела жаба гадюку".
> Обычно другое мнение высказывают те, кто с Ruby не работаютПро Ruby в теме про софтину для Python тоже надо полагать не питонисты вспомнили ;)
Бывшие :)
Что ты несёшь, у питона никакая производительность.
мда...прогресс
> нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++Вы сделали мой день.
Что не так?
> Проект пока ограничен поддержкой Python 2.7Ахаха.
Быстрее было бы всех сотрудников обучить С++.
Быстрее было бы подогнать сервреный код дропбокса под PyPy. А для плюсов мозг нужен.
> А для плюсов мозг нужен.безусловно. Именно поэтому лучше выбирать языки, не нагружающие мозг, чтобы сосредоточиться на проекте.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
А не надо писать as cleverly as possible. Надо использовать концепты, которыми удобно проблему выражать и при этом получать адекватную производительность. И иногда это означает шаблоны, иногда - перегрузку операторов, иногда - Duff's Device, иногда - генерированный бизоном парсер, а иногда - вообще ассемблерные вставки. Инструменты надо брать под задачу, а не впадать в религии вроде "нигде и никогда не используем goto" или "функция должна быть не больше 50 строк".
> А не надо писать as cleverly as possible.Ну так некоторым же повыделываться надо. А потом оказывается что только они в своем коде и разбираются. Все бы ничего, но для большого проекта это лютый и верный пи...ц!
Точнее - надо вибирать язык со сложностью, адекватной предметной области.Если у вас тупой CRUD - понятно, что у "не нагружающего мозг" языка будет преимущество. А если, допустим, нетривиальные и большие структуры данных - то желательно иметь возможность выбрать алгоритмическую сложность для нужных вам операций и иметь минимальный оверхед по памяти. Благо на современных плюсах код пишется вполне красивый.
> безусловно. Именно поэтому лучше выбирать языки, не нагружающие мозг, чтобы
> сосредоточиться на проекте.При том проектом лучше всего должно быть что-нибудь не нагружающее мозг. Ну там уборка улиц, например.
> При томМил человек с тремя детскими ошибками в двух коротких фразах, а не хотите засесть за учебники, прежде чем поучать?
Не говори Анониму что делать и Аноним не скажет кто ты такой.
> Мил человек с тремя детскими ошибками в двух коротких фразах, а не
> хотите засесть за учебники, прежде чем поучать?Если я засяду за учебники, у вас станет меньше новостей. Ну и корректоры вроде справляются, объем рихтовки за мной достаточно умеренный все-таки.
Кроме того, зубрить правила - в высшей степени бесполезно. Правила не получится применять в реальном времени. Должно быть "чувство языка". А вот опеннет этому не способствует. Большинство посетителей тут не любят русский язык и пишут крайне неграмотно. Что совсем не способствует улучшению грамотности письма.
p.s. а если придираться - так я у вас или ваших проектов тоже могу найти кучу недостатков в трех соснах, правда мне это чаще всего лениво.
> Если я засяду за учебники, у вас станет меньше новостей.Ой, а это был User294? Совсем не узнал, беда...
Но насчет грамотности - "не в бровь, а в глаз", увы :(.
>А для плюсов мозг нужен.ЦППшники тешат своё ЧСВ, не обращайте внимания
> ЦППшники тешат своё ЧСВ, не обращайте вниманияБатхерт скрипткидиса засчитан, иррелевантно ко всему остальному.
> Быстрее было бы подогнать сервреный код дропбокса под PyPy. А для плюсов мозг нужен.Плюсы — парадоксальный язык. Для того, чтобы их выучить, нужен мозг, а для того, чтобы хотеть их учить — отсутствие оного.
Зависть, понимаю. Бывает. Вообще-то C++11, а тем более 14 - весьма красивая штука. Но для "налабать по-быстрому" не особо пригодны, да.
> Зависть, понимаю. Бывает. Вообще-то C++11, а тем более 14 - весьма
> красивая штука. Но для "налабать по-быстрому" не особо пригодны, да.Всё портит обратная совместимость - язык не запрещает писать в духе "старой школы", разве что можно -Werror заюзать (но это нереально при дописывании какого-нибудь легаси проекта родом из 90-х). Как по мне, для нового проекта лучше сразу взять нормальный язык, не перегруженный обратной совместимостью - тот же rust или хачкель.
> тот же rust или хачкель.При том оба - эталонные сферические фигни в вакууме.
Аноним осилил С++, но при этом ниасилил ни rust, ни haskell? Какая взаимоисключительная личность.
> Аноним осилил С++, но при этом ниасилил ни rust, ни haskell? Какая
> взаимоисключительная личность.Аноним осилил посмотреть сколько софта на чем пишут. И тут вам будет совершенно нечем крыть. При том haskell появился далеко не вчера, но единственное применение которое я видел - макетирование алгоритмов эстетами. При том полученный макет потом даром никому не вперся как правило. А rust - он вообще где? Я знаю на нем целую 1 софтину - некое servo от мозилы. Которое примерно там же где и rust находится. Хотя тоже вроде бы появилось уже не вчера.
> Аноним осилил посмотреть сколько софта на чем пишут.Запорожец лучше мерседеса!
> Запорожец лучше мерседеса!Запорожец на котором можно доехать из пункта А в пункт Б - лучше блестящего макета мерседеса, который выглядит круто, но задачу доставки из пункта А в пункт Б по существующим дорогам не решает.
Лучший аргумент человека, который не может позволить себе мерседес.
> Лучший аргумент человека, который не может позволить себе мерседес.Так, собственно, результат езды вашего мерседеса - не заметно что-то. А купить мерседес и потом ходить пешком - как-то не очень практично, чтоли.
>> Лучший аргумент человека, который не может позволить себе мерседес.
> Так, собственно, результат езды вашего мерседеса - не заметно что-то. А купить
> мерседес и потом ходить пешком - как-то не очень практично, чтоли.Конечно, не заметно. Ты думал, владельцы мерседесов будут ездить в твою глушь, чтобы ты на них любовался?
> Хотя тоже вроде бы появилось уже не вчера.Вообще-то как раз наоборот — еще не появилось. И еще как минимум месяц не появится.
> Вообще-то как раз наоборот — еще не появилось. И еще как минимум
> месяц не появится.Судя по текущим результатам - я не доживу до "появления", это наверное не в данном столетии произойдет. Так что можно не париться.
>> Вообще-то как раз наоборот — еще не появилось. И еще как минимум
>> месяц не появится.
> Судя по текущим результатам - я не доживу до "появления", это наверное
> не в данном столетии произойдет. Так что можно не париться.Судя по тому, что ты не в курсе, что произойдёт это не только в данном столетии, но еще и в этом году, еще и с точно известной датой — 15 мая 2015 года, ты не особо-то и следишь за этим языком. Может, не стоит пытаться судить о вещах, в которых ты не только не разбираешься, но даже не пытаешься хотя бы поверхностно ознакомиться?
> не особо-то и следишь за этим языком.Ясен хрен! Я даже не знаю про который вы из двух. Haskell по жизни используется только сильно утонченными концептуалами для показа "во как я могу!". Эстетам доставляет, но практически значимый выхлоп - на уровне брейнфака. А rust - вообще неведомая муйня, на которой нет ни единой полезной программы. Есть какое-то неведомое серво от мозиллы. Но оно кажется не очень надо даже самой мозилле, не говоря уж про остальных.
> даже не пытаешься хотя бы поверхностно ознакомиться?
А я не сторонник гальванизации трyпов. Поэтому если вы хотите сказать что 15 мая 2015 года мир в одночасье изменится, я хочу сказать: фиг вам. Ничего особенного не произойдет. Подождите немного и сами увидите.
p.s. но бугурт у it-хипстоты зачетный, не отнять.
> Ясен хрен! Я даже не знаю про который вы из двух.Вообще-то знаешь. Про тот, про который сам и говорил:
> > А rust - он вообще где? Я знаю на нем целую 1 софтину - некое servo от мозилы. Которое примерно там же где и rust находится. Хотя тоже вроде бы появилось уже не вчера.Ты бы хоть свои собственные сообщения читал, коли чужих не удосуживаешься.
>для того, чтобы хотеть их учить — отсутствие оного.Qt?
Имеет биндинги для нормальных языков. Только C-шного не хватает.
> Быстрее было бы всех сотрудников обучить С++.всех сотрудников В МИРЕ??? (они же не только для своего дропбокса стараются)
Разумеется только. А если нет - то их надо выгнать на фиг и набрать тех, кто будет делать то, за что им деньги фирма платит - то есть максимизировать её прибыль.То, что открытый код для этого может быть полезен - факт, тем не менее для фирмы открытый код - ВСЕГДА средство. Потому что по определению у фирмы только одна цель - приносить максимальную прибыль.
> всех сотрудников В МИРЕ??? (они же не только для своего дропбокса стараются)А это их старание судя по распостраненности пипи мало кому сдалось. Так что лучше б они выучили плюсы и заканчивали заниматься этим онанизмом. У них создание инструмента для решения задачи занимает намного больше времени чем решение задачи иными методами, что выглядит контрпродуктивно.
Вот интересно, а почему бы не сделать AOT компиляцию?
Потому что динамическая типизация.
Лиспу динамическая типизация не помешала. С чего вдруг питону мешает?
Ну она и питону примерно так же не мешает - где-то на краях Вселенной есть какие-то реализации.
> Вот интересно, а почему бы не сделать AOT компиляцию?Почему бы не вбить вопрос в гугль? Nuitka, gccpy, Cython, ...
https://www.google.ru/search?q=python+AOT
http://stackoverflow.com/questions/18673258/it-is-possible-t...
http://www.phoronix.com/forums/showthread.php?56622-A-Python...
https://news.ycombinator.com/item?id=8774090
nuitka внушает оптимизм, кстати.
Тормозящий JIT? Нафиг такой нужен-то? Вроде же остальные компилируемые питоны в несколько раз CPython опережают.
> В среднем выигрыш в производительности составляет всего 1%ХА ха. Вообще все эти потуги с JITами для питона выглядят как агония умирающего, питон никогда не будет вменяемым по соотношению скорость к геморности. Гвидо сделал абсолютно всё что было в его силах чтобы программы вообще невозможно было хоть как-то за недорого оптимизировать в какие-то промежуточные байткоды.
Питон нужно закапывать и делать ЯП следующего поколения с прицелом на возможности дешёвой оптимизации, в частности должны быть элементы статической типизации, должны быть значительно урезаны возможности метапрограммирования, урезана излишняя динамичность и т.п.
Э... метапрограммирование-то чем не угодило? Хотя в остальном согласен.
Ну так напиши.
> Ну так напиши.А ему это надо?
> Питон нужно закапывать и делать ЯП следующего поколения с прицелом на...обратимые вычисления.