The OpenNET Project / Index page

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

Выпуск Pyston 0.3, реализации языка Python с JIT-компилятором

25.02.2015 09:03

После шести месяцев разработки доступен третий выпуск проекта Pyston, в рамках которого компанией Dropbox, в которой работает Гвидо ван Россум, развивается реализация языка Python, созданная с использованием наработок проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код Pyston написан на языке C++ и распространяется под лицензией Apache.

В отличие от проекта PyPy, также продвигающего идею применения 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 уже в некоторых тестах опережает 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. Подобный подход значительно ускоряет разработку, давая возможность сосредоточиться на ключевых особенностях проекта, не тратя много времени на рутинные операции по обеспечению совместимости.

  1. Главная ссылка к новости (http://blog.pyston.org/2015/02...)
  2. OpenNews: Выпуск Nuitka 0.5.8, компилятора для языка Python
  3. OpenNews: Второй выпуск Pyston, реализации языка Python с JIT-компилятором
  4. OpenNews: Dropbox опубликовал Pyston, реализацию языка Python, базирующуюся на JIT
  5. OpenNews: Выпуск компилятора Cython 0.20
  6. OpenNews: Выпуск PyPy 2.5, реализации Python, написанной на языке Python
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41726-pyston
Ключевые слова: pyston, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (63) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:21, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Производительность той или иной реализации, в сочетании со скоростью разработки, делают этот язык реально привлекательным.
    Надо будет изучить питон. Вижу его зрелость и близость к совершенству: реализацию языка рефакторят и рефакторят, делают кучей способов.
     
     
  • 2.3, Michael Shigorin (ok), 11:49, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Вижу его зрелость и близость к совершенству

    В таких терминах скорее про perl ;-)  У питона ещё бурное извитие...

     
     
  • 3.17, myhand (ok), 16:16, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Перл?  Рефакторят?
     
     
  • 4.22, annualslayer (ok), 18:52, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    perl 6?
     
  • 2.7, Аноним (-), 13:03, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если уж говорить об изучении, то Ruby. Если язык изначально нормально спроектирован, то его не колбасит от версии к версии и криков поклонников разных веток не возникает.
     
     
  • 3.21, Мяут (ok), 18:51, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Хмм, в соседней новости: http://www.opennet.me/opennews/art.shtml?num=41716
    высказывают другое мнение.
     
     
  • 4.33, Аноним (-), 21:58, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Обычно другое мнение высказывают те, кто с Ruby не работают. Совместимость между версиями у него довольно высокая. Тем более в старших, начиная с 1.9.
     
     
  • 5.42, Аноним (-), 23:30, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > довольно высокая

    Обычно так фанаты говорят. "А если вот так посмотреть - то вовсе даже и не кривой!". Вот только это не отменяет того что скрипты на этом работают абы как если их не переписывать и не заморачиваться правильной версией. Заработает ли скрипт - лотерее. Менее хардкорная чем с питоном, но вот уж что называется - "имела жаба гадюку".

     
  • 5.45, Мяут (ok), 23:47, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Обычно другое мнение высказывают те, кто с Ruby не работают

    Про Ruby в теме про софтину для Python тоже надо полагать не питонисты вспомнили ;)

     
     
  • 6.51, Аноним (-), 12:42, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бывшие :)
     
  • 2.32, all_glory_to_the_hypnotoad (ok), 21:50, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Что ты несёшь, у питона никакая производительность.
     

  • 1.2, manster (ok), 11:37, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    мда...

    прогресс

     
  • 1.4, Аноним (-), 11:52, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++

    Вы сделали мой день.

     
     
  • 2.46, Аноним (-), 05:13, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Что не так?
     

  • 1.5, Аноним (-), 12:27, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Проект пока ограничен поддержкой Python 2.7

    Ахаха.

     
  • 1.6, RazrFalcon (ok), 13:02, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Быстрее было бы всех сотрудников обучить С++.
     
     
  • 2.8, Crazy Alex (ok), 13:15, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Быстрее было бы подогнать сервреный код дропбокса под PyPy. А для плюсов мозг нужен.
     
     
  • 3.9, ADMIN (?), 13:26, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > А для плюсов мозг нужен.

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

     
     
  • 4.19, Аноним (-), 17:39, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "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."
     
     
  • 5.25, Crazy Alex (ok), 19:20, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А не надо писать as cleverly as possible. Надо использовать концепты, которыми удобно проблему выражать и при этом получать адекватную производительность. И иногда это означает шаблоны, иногда - перегрузку операторов, иногда - Duff's Device, иногда - генерированный бизоном парсер, а иногда - вообще ассемблерные вставки. Инструменты надо брать под задачу, а не впадать в религии вроде "нигде и никогда не используем goto" или "функция должна быть не больше 50 строк".
     
     
  • 6.44, Аноним (-), 23:32, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А не надо писать as cleverly as possible.

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

     
  • 4.23, Crazy Alex (ok), 19:13, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее - надо вибирать язык со сложностью, адекватной предметной области.

    Если у вас тупой CRUD - понятно, что у "не нагружающего мозг" языка будет преимущество. А если, допустим, нетривиальные и большие структуры данных - то желательно иметь возможность выбрать алгоритмическую сложность для нужных вам операций и иметь минимальный оверхед по памяти. Благо на современных плюсах код пишется вполне красивый.

     
  • 4.37, Аноним (-), 23:11, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > безусловно. Именно поэтому лучше выбирать языки, не нагружающие мозг, чтобы
    > сосредоточиться на проекте.

    При том проектом лучше всего должно быть что-нибудь не нагружающее мозг. Ну там уборка улиц, например.


     
     
  • 5.43, Michael Shigorin (ok), 23:31, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > При том

    Мил человек с тремя детскими ошибками в двух коротких фразах, а не хотите засесть за учебники, прежде чем поучать?

     
     
  • 6.49, Аноним (-), 09:18, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не говори Анониму что делать и Аноним не скажет кто ты такой.
     
  • 6.53, Аноним (-), 20:09, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Мил человек с тремя детскими ошибками в двух коротких фразах, а не
    > хотите засесть за учебники, прежде чем поучать?

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

    Кроме того, зубрить правила - в высшей степени бесполезно. Правила не получится применять в реальном времени. Должно быть "чувство языка". А вот опеннет этому не способствует. Большинство посетителей тут не любят русский язык и пишут крайне неграмотно. Что совсем не способствует улучшению грамотности письма.

    p.s. а если придираться - так я у вас или ваших проектов тоже могу найти кучу недостатков в трех соснах, правда мне это чаще всего лениво.

     
     
  • 7.55, Michael Shigorin (ok), 20:14, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Если я засяду за учебники, у вас станет меньше новостей.

    Ой, а это был User294?  Совсем не узнал, беда...

     
     
  • 8.57, Аноним (-), 20:40, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Но насчет грамотности - не в бровь, а в глаз , увы ... текст свёрнут, показать
     
  • 3.10, Нанобот (ok), 13:32, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >А для плюсов мозг нужен.

    ЦППшники тешат своё ЧСВ, не обращайте внимания

     
     
  • 4.38, Аноним (-), 23:12, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > ЦППшники тешат своё ЧСВ, не обращайте внимания

    Батхерт скрипткидиса засчитан, иррелевантно ко всему остальному.

     
  • 3.14, Аноним (-), 14:46, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > Быстрее было бы подогнать сервреный код дропбокса под PyPy. А для плюсов мозг нужен.

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

     
     
  • 4.27, Crazy Alex (ok), 19:27, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Зависть, понимаю. Бывает. Вообще-то C++11,  а тем более 14 - весьма красивая штука. Но для "налабать по-быстрому" не особо пригодны, да.
     
     
  • 5.48, ADMIN (?), 05:37, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Зависть, понимаю. Бывает. Вообще-то C++11,  а тем более 14 - весьма
    > красивая штука. Но для "налабать по-быстрому" не особо пригодны, да.

    Всё портит обратная совместимость - язык не запрещает писать в духе "старой школы", разве что можно -Werror заюзать (но это нереально при дописывании какого-нибудь легаси проекта родом из 90-х). Как по мне, для нового проекта лучше сразу взять нормальный язык, не перегруженный обратной совместимостью - тот же rust или хачкель.

     
     
  • 6.54, Аноним (-), 20:11, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тот же rust или хачкель.

    При том оба - эталонные сферические фигни в вакууме.

     
     
  • 7.56, Аноним (-), 20:33, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Аноним осилил С++, но при этом ниасилил ни rust, ни haskell? Какая взаимоисключительная личность.
     
     
  • 8.58, Аноним (-), 20:44, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Аноним осилил посмотреть сколько софта на чем пишут И тут вам будет совершенно ... текст свёрнут, показать
     
     
  • 9.59, Аноним (-), 21:06, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Запорожец лучше мерседеса ... текст свёрнут, показать
     
     
  • 10.63, Аноним (-), 21:55, 27/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Запорожец на котором можно доехать из пункта А в пункт Б - лучше блестящего маке... текст свёрнут, показать
     
     
  • 11.65, Аноним (-), 22:38, 27/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Лучший аргумент человека, который не может позволить себе мерседес ... текст свёрнут, показать
     
     
  • 12.67, Аноним (-), 00:19, 28/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так, собственно, результат езды вашего мерседеса - не заметно что-то А купить м... текст свёрнут, показать
     
     
  • 13.70, Аноним (-), 01:13, 28/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно, не заметно Ты думал, владельцы мерседесов будут ездить в твою глушь, ч... текст свёрнут, показать
     
  • 9.60, Аноним (-), 21:51, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то как раз наоборот 8212 еще не появилось И еще как минимум месяц не ... текст свёрнут, показать
     
     
  • 10.64, Аноним (-), 21:56, 27/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Судя по текущим результатам - я не доживу до появления , это наверное не в данн... текст свёрнут, показать
     
     
  • 11.66, Аноним (-), 22:43, 27/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Судя по тому, что ты не в курсе, что произойдёт это не только в данном столетии,... текст свёрнут, показать
     
     
  • 12.68, Аноним (-), 00:28, 28/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ясен хрен Я даже не знаю про который вы из двух Haskell по жизни используется ... текст свёрнут, показать
     
     
  • 13.69, Аноним (-), 01:11, 28/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то знаешь Про тот, про который сам и говорил Ты бы хоть свои собственны... текст свёрнут, показать
     
  • 4.47, Аноним (-), 05:29, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >для того, чтобы хотеть их учить — отсутствие оного.

    Qt?

     
     
  • 5.50, Аноним (-), 10:17, 26/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Имеет биндинги для нормальных языков. Только C-шного не хватает.
     
  • 2.11, Нанобот (ok), 13:33, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Быстрее было бы всех сотрудников обучить С++.

    всех сотрудников В МИРЕ???  (они же не только для своего дропбокса стараются)

     
     
  • 3.26, Crazy Alex (ok), 19:22, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется только. А если нет - то их надо выгнать на фиг и набрать тех, кто будет делать то, за что им деньги фирма платит - то есть максимизировать её прибыль.

    То, что открытый код для этого может быть полезен - факт, тем не менее для фирмы открытый код - ВСЕГДА средство. Потому что по определению у фирмы только одна цель - приносить максимальную прибыль.

     
  • 3.39, Аноним (-), 23:14, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > всех сотрудников В МИРЕ???  (они же не только для своего дропбокса стараются)

    А это их старание судя по распостраненности пипи мало кому сдалось. Так что лучше б они выучили плюсы и заканчивали заниматься этим онанизмом. У них создание инструмента для решения задачи занимает намного больше времени чем решение задачи иными методами, что выглядит контрпродуктивно.

     

  • 1.12, ImG (?), 14:18, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот интересно, а почему бы не сделать AOT компиляцию?
     
     
  • 2.13, Аноним (-), 14:34, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что динамическая типизация.
     
     
  • 3.18, Аноним (-), 16:49, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лиспу динамическая типизация не помешала. С чего вдруг питону мешает?
     
     
  • 4.28, Crazy Alex (ok), 19:29, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну она и питону примерно так же не мешает - где-то на краях Вселенной есть какие-то реализации.
     
  • 2.15, Andrey Mitrofanov (?), 15:25, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вот интересно, а почему бы не сделать AOT компиляцию?

    Почему бы не вбить вопрос в гугль? Nuitka, gccpy, Cython, ...

    https://www.google.ru/search?q=python+AOT
    http://stackoverflow.com/questions/18673258/it-is-possible-to-create-compiler
    http://www.phoronix.com/forums/showthread.php?56622-A-Python-Front-End-To-GCC
    https://news.ycombinator.com/item?id=8774090

     
     
  • 3.20, via (??), 18:29, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    nuitka внушает оптимизм, кстати.
     

  • 1.16, vitalif (ok), 16:13, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Тормозящий JIT? Нафиг такой нужен-то? Вроде же остальные компилируемые питоны в несколько раз CPython опережают.
     
  • 1.30, all_glory_to_the_hypnotoad (ok), 21:43, 25/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > В среднем выигрыш в производительности составляет всего 1%

    ХА ха. Вообще все эти потуги с JITами для питона выглядят как агония умирающего, питон никогда не будет вменяемым по соотношению скорость к геморности. Гвидо сделал абсолютно всё что было в его силах чтобы программы вообще невозможно было хоть как-то за недорого оптимизировать в какие-то промежуточные байткоды.

    Питон нужно закапывать и делать ЯП следующего поколения с прицелом на возможности дешёвой оптимизации, в частности должны быть элементы статической типизации, должны быть значительно урезаны возможности метапрограммирования, урезана излишняя динамичность и т.п.

     
     
  • 2.34, Crazy Alex (ok), 22:01, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Э... метапрограммирование-то чем не угодило? Хотя в остальном согласен.
     
  • 2.36, vitia69 (ok), 22:58, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так напиши.
     
     
  • 3.40, Аноним (-), 23:15, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так напиши.

    А ему это надо?

     
  • 2.41, Michael Shigorin (ok), 23:26, 25/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Питон нужно закапывать и делать ЯП следующего поколения с прицелом на

    ...обратимые вычисления.

     

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



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

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