The OpenNET Project / Index page

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

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

12.09.2014 15:52

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

Отмечается, что проект заметно продвинулся по сравнению с первым экспериментальным выпуском. Новый выпуск ознаменовал переход на стадию альфа-тестирования. Код всё ещё не рекомендован для использования в реальных проектах, но уже успешно проходит многие тесты, обеспечивает совместимость со стандартными библиотеками и позволяет выполнять простые программы. Ключевым новшеством выпуска является поддержка экспериментального многопоточного режима работы без глобальной блокировки интерпретатора (GIL, global interpreter lock), позволяющего обеспечить параллельное выполнение нескольких нитей кода на языке Python. Кроме того, значительно улучшена поддержка языка, в том числе обеспечена поддержка API для написания модулей на языке Си. При подготовке следующего выпуска основное внимание планируется уделить наращиванию производительности. Поддержка языка пока ограничивается Python 2.7.

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

  1. Главная ссылка к новости (http://blog.pyston.org/2014/09...)
  2. OpenNews: Dropbox опубликовал Pyston, реализацию языка Python, базирующуюся на JIT
  3. OpenNews: Выпуск PyPy 2.3, реализации Python, написанной на языке Python
  4. OpenNews: Первый стабильный выпуск PyPy3 с поддержкой Python 3
  5. OpenNews: Стратегия параллельного поддержания веток Python 2 и Python 3 оказалась ошибочной
  6. OpenNews: Первый выпуск PyPy-STM, интерпретатора Python с поддержкой многоядерных систем
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/40571-pyston
Ключевые слова: pyston, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (66) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 16:38, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    вот оно, будущее ветки 2.7
     
     
  • 2.65, Аноним (-), 06:47, 15/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > вот оно, будущее ветки 2.7

    А что делать, раз 3.x никому не нужен? Лично я, поглядев на всю эту катавасию, перешел на Go и доволен как слон. Чего и вам желаю.

     

  • 1.3, Я (??), 16:41, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > развивается реализация языка Python 2.7

    Зачем насиловать труп?

     
     
  • 2.10, Пингвино (ok), 17:42, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да действительно, надо выкинуть весь работающий легаси-код и начать срочно переписывать на 3-м пестоне
     
     
  • 3.14, Анонизм (?), 18:32, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Давно пора. Годы идут, у людей уже дети выросли, а прогрессивное человечество никак не может нормально перейти на третий Питон наконец.
     
     
  • 4.15, Пингвино (ok), 18:35, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Давно пора. Годы идут, у людей уже дети выросли, а прогрессивное человечество
    > никак не может нормально перейти на третий Питон наконец.

    Лучше бы на функциональные языки программирования переходили бы

     
     
  • 5.25, Пиони (?), 22:29, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Чем лучше?
     
     
  • 6.29, Аноним (-), 22:55, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    чем не функциональные
     
     
  • 7.32, grammar_nazi (?), 23:19, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нефункциональные
     
     
  • 8.39, I am (??), 01:37, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Простите, господин нацист, а какой же синоним без не есть для слова нефункцио... текст свёрнут, показать
     
     
  • 9.40, Аноним (-), 02:28, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Бесполезные же ... текст свёрнут, показать
     
  • 9.44, Алексей (??), 09:10, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Императивный ... текст свёрнут, показать
     
     
  • 10.54, Аноним (-), 14:26, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, императивный 8212 противоположность декларативного А противоположность ... текст свёрнут, показать
     
  • 9.53, grammar_nazi (?), 14:09, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В правиле слитного написания не нет рассуждений о наличии отсутствии синонимов... текст свёрнут, показать
     
  • 5.60, Ононимус (?), 12:40, 14/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Напишите что нибудь дельное на Haskell хотя бы и выложите сообществу. Люди ждут.
    А то годы идут а только пшик. Пока что выходит выгода от гибридных языков. Как и в природе - борьба и сосуществование форм.
    Питон развивается и занял свою нишу.
     
     
  • 6.61, Пингвино (ok), 14:00, 14/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Напишите что нибудь дельное на Haskell хотя бы и выложите сообществу. Люди
    > ждут.
    > А то годы идут а только пшик. Пока что выходит выгода от
    > гибридных языков. Как и в природе - борьба и сосуществование форм.
    > Питон развивается и занял свою нишу.

    На Scala и Clojure написано достаточно дельных вещей, многие из которых работают в продакшене.

     
     
  • 7.67, Аноним (-), 10:04, 15/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На Бэйсике и Коболе тоже много чего написано и оно всё ещё работает в продакшене.
     
  • 7.68, Ынаним (?), 10:31, 15/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Это как раз гибридные языки - Scala продвинутая Ява с функциональщиной. Поэтому вам и предложили попробовать Haskell.
     
  • 4.41, бедный буратино (ok), 04:25, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > а прогрессивное человечество никак не может нормально перейти на третий Питон наконец.

    потому что нормальное (противоположность прогрессивному) человечество не может ответить вопрос "а нахрена"?

     
     
  • 5.58, ктото там (?), 22:22, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    На этот вопрос могу ответить я. Логичный подход к кодировкам - уже достаточная для перехода причина.
     
  • 4.42, Led (ok), 05:04, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > у людей уже дети выросли

    Да где ж вы выросли?

     
     
  • 5.45, Аноним (-), 10:04, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да уж, глядя на тебя и не скажешь.
     
  • 3.38, Аноним (-), 00:39, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Да действительно, надо выкинуть весь работающий легаси-код и начать срочно переписывать на 3-м пестоне

    Нет, вы что. Питоний код нужно только выкинуть, переписывать ничего не нужно.

     
     
  • 4.46, Аноним (-), 10:10, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Есть две неадекватные вещи, намеренно разжигаемые на OpenNETe:

    - ненависть к Python;
    - ненависть к Ubuntu.

    Остальное - в высшей степени на высоте.


     
     
  • 5.56, plain5ence (ok), 15:59, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В былые времена разжигали ненависть к пхп и виндовс... Конкуренция усилилась.
     
     
  • 6.62, Rooter (?), 15:10, 14/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    питон и пыхпы - оттенки одного го%%%а
     
  • 2.48, Deepwalker (??), 11:19, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну если рассмотреть внимательно, то труп это python 3.x. Выкидыш, который лучше только большим номером версии.
     
  • 2.57, Я (??), 18:38, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это мой ник!
     

  • 1.5, Аноним рус (?), 16:49, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    хм, пока Гвидо в дропбоксе они пилят вариант Python2.7, как он приходит домой он строчит в твиттер что Python3 это будущее - двуликий Янус.
     
     
  • 2.11, Аноним рус (?), 17:48, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ан нет, посмотрел коммиты, Гвидо не причем, зато прилагали руки к этому пистону сотрудники Гугла, РедХата и кучка непонятных немцев.
     

  • 1.6, playnet (ok), 16:59, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неужели кто-то ещё понимает убогость 3 ветки...
    А вообще, это похожие но разные языки. И 2 ветка ещё долго не умрёт. Ну и 2 проще будет, пилить меньше надо.
     
     
  • 2.12, COBA (?), 17:49, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Убогость как раз осталась во 2 ветке.
    С появлением 3 стало значительно проще отделить кодировку исходных данных от кода, работающего с этими данными. Для тех, кто работает с данными в разных кодировках все стало намного проще!!!
     
     
  • 3.13, Нанобот (ok), 17:53, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Для тех, кто работает с данными в разных кодировках все стало намного проще

    есть мнение, что их не так много и ими можно пожертвовать

     
     
  • 4.19, myhand (ok), 20:53, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ах, если бы дело заканчивалось на кодировках...
     
  • 3.16, Анонизм (?), 18:35, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Убогость как раз осталась во 2 ветке.
    > С появлением 3 стало значительно проще отделить кодировку исходных данных от кода,
    > работающего с этими данными. Для тех, кто работает с данными в
    > разных кодировках все стало намного проще!!!

    Разные кодировки не нужны, есть только одна кодировка - UTF-8. А вот то, как оно работает с UTF-8 - и есть самый главный вопрос, если есть с этим косяки - то в печь.

     
     
  • 4.17, Анонизм (?), 18:37, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя нет, есть один кейс, где нужна поддержка разных кодировок - импорт старых данных для конверсии в нормальную.

     
  • 4.64, Anonym2 (?), 06:18, 15/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Убогость как раз осталась во 2 ветке.
    >> С появлением 3 стало значительно проще отделить кодировку исходных данных от кода,
    >> работающего с этими данными. Для тех, кто работает с данными в
    >> разных кодировках все стало намного проще!!!
    > Разные кодировки не нужны, есть только одна кодировка - UTF-8. А вот
    > то, как оно работает с UTF-8 - и есть самый главный
    > вопрос, если есть с этим косяки - то в печь.

    Данное мнение о нужности кодировок не нужно. Программа нагло и упорно навязывающая UTF более чем не нужна.

     
  • 3.26, bav (ok), 22:29, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > С появлением 3 стало значительно проще отделить кодировку исходных данных от кода, работающего с этими данными.

    Доооо. Скажи это Армину. Третьегвидон пытается сказать, что вокруг мир только из юникода и терпит очевидный фейл — это наглая ложь. ОС — набор байт, и интерпретация этого факта должна быть под контролем разработчика. Что мы имеем в тройке? Веселые костыли (постоянно ломающиеся) в виде суррогатного эскейпинга и плясок вокруг файловых объектов, чтобы достучатся до сырых данных и байтовых строк. Если ты с этим не сталкивался, поздравляю, ты хомяк. Какие плюсы? Хомячки теперь могут не думать что писать, encode или decode. Для серьезных задач 3-я версия мало подходит.

     
     
  • 4.34, COBA (?), 23:24, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то вы похоже все перепутали. Костыли как раз в 2. В 3 сразу получаем все в байтах, а если надо получить как текст - указываем сразу кодировку. Стало намного удобнее. Ничего не ломается. Никаких плясок - все осталось в прошлом. Переход проходил тяжело, но сейчас уже никто не хочет возвращаться на 2.
     
     
  • 5.36, bav (ok), 00:00, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Что-то вы похоже все перепутали.

    Отнюдь, http://lucumr.pocoo.org/2014/5/12/everything-about-unicode/

    > но сейчас уже никто не хочет возвращаться на 2.

    Правильно, потому что все кто работает и так сидят на ней.

     
  • 3.49, Deepwalker (??), 11:21, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А расскажите развернуто, чем стало лучше? Анальным принуждением к некоему внутреннему представлению данных? Хочешь просто прогнать по сети байтики? Не судьба.
     
     
  • 4.59, ктото там (?), 22:42, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > А расскажите развернуто, чем стало лучше?

    Давайте представим, что у вас есть текст, закодированный с помощью deflate. Вы же не станете пытаться работать с ним, как с текстом? Вот и питон теперь не пытается работать с закодированными текстовыми строками, как с текстовыми строками. Если вы знаете (на основании протокола, формата файла), что у вас в буфере deflate(данные) - вы делаете inflate явно. Знаете, что там cp1251(текст) - делаете decode('cp1251'). Нет никаких причин считать, скажем, utf-8 чем-то отличающимся от другого метода кодирования данных.

    > Хочешь просто прогнать по сети байтики? Не судьба.

    Как это не судьба, если ничего другого принять/послать по сети и нельзя в 3 питоне?

     

  • 1.7, Аноним (-), 17:01, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вообще новость преподносится не совсем верно. Это не проект по реализации Python 2.7, а реализация компилятора Python, которая на данный момент поддерживает только 2.7.
    Просто у них приоритеты такие

    >Currently, Pyston targets Python 2.7, only runs on x86_64 platforms, and only has been tested on Ubuntu. Support for more platforms -- along with Python 3 compatibility -- is planned for the future, but this is the initial target due to prioritization constraints.

     
  • 1.8, Аноним (-), 17:02, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    прикольный парень этот ваш гвидо, не бросает 2.7
     
  • 1.9, Аноним (-), 17:03, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    После того, как в этом пистоне всё устаканится, накидать поддержку Py3 будет довольно просто
     
     
  • 2.28, bav (ok), 22:32, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > После того, как в этом пистоне всё устаканится, накидать поддержку Py3 будет
    > довольно просто

    Действительно, аноны с опеннета за вечер накидают.

     
     
  • 3.43, Led (ok), 05:07, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Действительно, аноны с опеннета за вечер накидают.

    Да они постоянно так делают: накидаются, а потом лезут на опеннет и кодить на пистонах.

     

  • 1.18, savant (ok), 20:12, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе.

    Какой трэш только не творят люди лишь бы писать без указания типов

     
     
  • 2.27, bav (ok), 22:31, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Какой трэш только не творят люди лишь бы писать без указания типов

    При типах тоже треша хватает в виде абстрактных фабрик фабрик.


     
     
  • 3.31, savant (ok), 23:11, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Какой трэш только не творят люди лишь бы писать без указания типов
    > При типах тоже треша хватает в виде абстрактных фабрик фабрик.

    Обычно это значит что "так проектируют только мудаки"

     
     
  • 4.33, bav (ok), 23:20, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Обычно это значит что "так проектируют только мудаки"

    Обычно это значит, что система типов тупо не справляется. Не хватает гибкости/выразительности.

     
     
  • 5.35, savant (ok), 23:54, 12/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Обычно это значит что "так проектируют только мудаки"
    > Обычно это значит, что система типов тупо не справляется. Не хватает гибкости/выразительности.

    Когда не справляется система типов - это редкие специфичные случаи, а в большинстве своём это именно ошибки проектирования.

     
     
  • 6.37, bav (ok), 00:04, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Когда не справляется система типов - это редкие специфичные случаи, а в
    > большинстве своём это именно ошибки проектирования.

    Tell me moar)) Чистый типизированный код возможен только на хеллоуворлдах. Ну и сырцы на go приятно выглядят.

     
     
  • 7.66, Anonym2 (?), 07:42, 15/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Когда не справляется система типов - это редкие специфичные случаи, а в
    >> большинстве своём это именно ошибки проектирования.
    > Tell me moar)) Чистый типизированный код возможен только на хеллоуворлдах. Ну и
    > сырцы на go приятно выглядят.

    Доказательство? Не опирающееся на глубокую ошибочность проектирования проектировщиками хеллоуворлдов? >:-)

     
  • 2.69, Ынаним (?), 18:49, 16/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Респект! Хоть кто то в теме наконец сказал про этот небольшой косячок Питона ))
    Отсутствие типизации заставляет писать кучу unit-тестов даже на простые
    вещи - в итоге проще и дешевле писать сразу на
    языке со строгой типизацией (любом).
    Вот для сборки проектов или автоматизации этот инструмент подходит очень даже.
     

  • 1.20, Аноним (-), 21:20, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PyPy оказался ненужным полигоном для тестов
     
  • 1.21, Аноним (-), 21:31, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как ни транслируй питон, все равно он гвидобейском останется.
     
  • 1.23, Аноним (-), 21:52, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ну и чего, list comprehension у него будет медленнее PyPy чтоль?
     
     
  • 2.47, Аноним (-), 10:41, 13/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Eat da PyPy!
     

  • 1.24, Аноним (-), 22:19, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Pyston

    А-тя-тя!

     
  • 1.30, Аноним (-), 22:59, 12/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    я так понимаю, что в велобаджо все еще переходят на 3 пайтон )))
     
  • 1.50, Аноним (50), 11:41, 13/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ура товарищи! Вот и Go-капец не за горами.
     
  • 1.51, Аноним (-), 11:50, 13/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Проект развивается компанией Dropbox, в которой работает Гвидо ван Россум
    >Поддержка языка пока ограничивается Python 2.7

    Это пять. Похоже, третий питон так и останется мёртворожденным.

     
  • 1.52, Брат Анонпитонер (?), 13:29, 13/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Оуееее!!! ))))
    Теперь я всем пистона вставлю! )))
     
  • 1.55, Аноним (-), 15:54, 13/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Ключевым новшеством выпуска является поддержка экспериментального многопоточного режима работы без глобальной блокировки интерпретатора

    Мне вот интересно, как они это сделали. Неужто придумали какой-то внятный memory model?

     
  • 1.63, Аноним (-), 22:39, 14/09/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Чего только не придумают, чтобы не объявлять явно типы в коде.
     

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



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

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