The OpenNET Project / Index page

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

Dropbox опубликовал Pyston, реализацию языка Python, базирующуюся на JIT

04.04.2014 17:07

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

Проект находится на стадии экспериментальной разработки. Несмотря на то, что он уже вполне работоспособен, для конечных пользователей он пока не подходит, так как поддержка возможностей языка Python сильно ограничена. Из платформ пока поддерживается только x86_64. На текущей стадии развития производительность Pyston отстаёт от проекта PyPy, JIT-реализации Python, написанной на языке Python, но уже опережает интерпретатор CPython.

Работа над проектом началась под впечатлением от достижений движка V8 в плане вывода производительности JavaScript на новый уровень. Потерпев неудачу в экспериментах со статической компиляцией, разработчики из Dropbox попытались воспользоваться технологиями, похожими на те, что используются в современных JavaScript-движках, для повышения производительности Python.

Создание нового проекта (вместо использования наработок PyPy) обусловлено тем, что в PyPy используется трассирующий JIT, базирующийся на компиляции в машинный код часто выполняемых циклов, в то время как современные JavaScript-движки используют JIT на основе трансляции отдельных методов (method-at-a-time). По мнению инженеров Dropbox, method-at-a-time JIT является более перспективной технологией, но она фундаментально отличается от трассирующего JIT и несовместима с ним. Второй причиной было желание использовать консервативный сборщик мусора для обеспечения эффективной поддержки модулей-расширений.

Принцип работы Pyston сводится к разбору кода на языке Python и его трансляции в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходит обработку в оптимизаторе LLVM и передаётся для исполнения в JIT-движок LLVM, который преобразует IR-представление в машинный код. Дополнительные фазы оптимизации LLVM пока не используются, их включение в дальнейшем позволит заметно увеличить производительность.

Основная проблема заключается в недоступности для оптимизаторов LLVM низкоуровневых данных о Python-коде, так как эти данные скрыты за системой диспетчеризации динамических типов данных. Так как невозможно точно определить типы переменных в динамическом языке, в Pyston применяется техника вероятностного предсказания типов для объектов. В дальнейшем, после того как определён возможный тип объекта, во время выполнения кода производится проверка правильности принятого решения. Таким образом Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе.

  1. Главная ссылка к новости (https://tech.dropbox.com/2014/...)
  2. OpenNews: Создатель языка Python ушел из Google в Dropbox
  3. OpenNews: Вышел Pythonium 0.4.7, компилятор из Python в JavaScript
  4. OpenNews: Выпуск PyPy 2.2, реализации Python, написанной на языке Python
  5. OpenNews: Выпуск IPython 2.0
  6. OpenNews: Выпуск языка программирования Python 3.4.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39494-dropbox
Ключевые слова: dropbox, python, jit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (67) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Fracta1L (ok), 17:53, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    Теперь для Питона придётся новый жаргонизм придумывать. Мерзавцы.
     
     
  • 2.4, бедный буратино (ok), 17:53, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    гвидопистон. звучит обидно.
     
     
  • 3.12, Fracta1L (ok), 18:14, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Тогда уж просто "Гвидон".
     
     
  • 4.13, бедный буратино (ok), 18:15, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    ну, это только для не знакомых с Сергеичем может быть обидно :)
     
     
  • 5.19, Аноним (-), 18:35, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тогда "Глистон"
     
     
  • 6.31, Аноним (-), 23:10, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    сам ты глист.
     
  • 4.40, Аноним (-), 01:39, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Тогда уж просто "Гвидон".

    Бидон. Прозрачно намекает на квалификацию тех кто и пользуется.

     
     
  • 5.63, Аноним (-), 08:00, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> Тогда уж просто "Гвидон".
    > Бидон. Прозрачно намекает на квалификацию тех кто и пользуется.

    А что не так с квалификацией?

     
  • 2.5, бро (?), 17:56, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Например Pysdon?
     
     
  • 3.8, krasnodar2000 (?), 18:04, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Gvidon
     
     
  • 4.37, Пышпер (?), 00:45, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Баян. У Пушкина было уже
     
  • 3.11, arzeth (ok), 18:07, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Или Пистюль.
     
  • 3.14, Аноним (-), 18:25, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Pysdun
     
     
  • 4.15, Аноним (-), 18:26, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    если приеять во внимание утверждение "близкой к производительности традиционных системных языков, таких как C++"
     
     
  • 5.62, Vernat (ok), 05:25, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Верно подмечено!
     
  • 2.17, rd (?), 18:30, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А что? По-моему, быть пистонистом не так уж и плохо.
     
  • 2.25, Alexander Komarov (?), 19:10, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну питушон же :)
     
  • 2.32, rshadow (ok), 23:40, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Каждому питону по пистону!
     
     
  • 3.54, AlexAT (ok), 16:15, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Про оптимизацию серверов на питоне:
    - А ты уже вставил питону пистон?
     
  • 2.56, Аноним (-), 17:50, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Почему? Каноничный жаргонизм был и будет ровно один - гвидобейсик.
     
  • 2.68, хм (?), 18:02, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    бидон
     

  • 1.2, бедный буратино (ok), 17:53, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    спасибо всемогущему Гвидо, что s, а не z
     
  • 1.3, krasnodar2000 (?), 17:53, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1 апреля закончилось вроде
     
     
  • 2.22, ананим (?), 18:50, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Piston вообще-то переводится как поршень.
    Даже вон детские мультики, тачки например, кубок поршня — пистон кап.
    А вы (и мы все) просто жертвы уголовного слэнга.
     
     
  • 3.51, Аноним (-), 16:10, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А вы (и мы все) просто жертвы уголовного слэнга.

    Пардон? Пистоны - это такие холостые патроны, для детских игрушечных ружей. Единственная польза от них - грохочут и воняют. Не вижу в этом никакой уголовщины.

     
     
  • 4.59, axe (??), 21:01, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    в последний раз я их видел во времена плюрализма и гласности. Они что, до сих пор существуют? )
     
  • 4.64, ананим (?), 12:07, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> А вы (и мы все) просто жертвы уголовного слэнга.
    > Пардон? Пистоны - это такие холостые патроны, для детских игрушечных руже

    Угу. А потом детки выросли и стали писать комментарии на опеннете.

    Зыж
    Просмотрите тон большинства комментариев и решите сами, какой пистон вам вставили.

     

  • 1.9, meequz (ok), 18:06, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что мешало впилить вероятностное предсказание в PyPy?
     
     
  • 2.20, Аноним (-), 18:38, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они не на это вроде как ссылаются судя по статье, а на то что подходы JIT разные.
    По мне так отговорки всё это. У PyPy гораздо больше направлений по улучшению(не только JIT).
     

  • 1.10, ук (?), 18:06, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    и что характерно, 2.7
     
     
  • 2.16, Аноним (-), 18:28, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, непонятна позиция отца Питона.
     
  • 2.21, Аноним (-), 18:39, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так мб внутри всё переписали для Py3, а исходники зажали. Ну а ненужный Py2 выкинули в опенсорс.
     
  • 2.27, Герг (?), 20:32, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я когда начинал учить Python, наивно полагал что Py3 через пару лет станет стандартом, а Py2 уйдёт в прошлое. Прошло уже 5 лет, и я понимаю каким идиотом я тогда был. : -(
     
     
  • 3.30, rob pike (?), 22:09, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    По сравнению с Perl6 это всё таакие цветочки..
     
     
  • 4.33, rshadow (ok), 23:42, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > По сравнению с Perl6

    Perl6 в вечной разработке и им никто не пользуется =)

     
     
  • 5.36, Аноним (-), 00:28, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вроде где-то писали что его переименовали. Или я что-то путаю?
     
     
  • 6.39, rshadow (ok), 01:06, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Да всем пофиг что там с ним. 5-й продолжает развиваться и им все пользуются.
     
  • 3.35, Lain_13 (ok), 00:09, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да всё нормально, просто на третий не имеет существенного смысла переходить если есть огромная кодовая база под 2.7 и её затратно обновлять. Сейчас все хоть сколько-то важные фреймворки есть и под тройку. Вот с Перлом там всегда проблемы были, а про 6й даже вот такое нарисовали: http://perl-begin.org/humour/perl6_perl_6_cover_lg.jpg
     
     
  • 4.49, rob pike (?), 11:01, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Вот с Перлом там всегда проблемы были

    Да что вы говорите. Какой же из 5.xx перлов ломал обратную совместимость, напомните пожалуйста.

     
     
  • 5.58, Lain_13_too_lazy_to_login (?), 20:55, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Я не про обратную совместимость, а про чудовищный зоопарк по-разному несовместимых библиотек на то, что должно идти из коробки. Причём часть из них сделана на коленке пьяной мартышкой. За каждой мелочью приходится лезть в cpan. Извините, ниасилил. Я лучше и дальше Питоном буду пользоваться.
     
     
  • 6.75, rob pike (?), 12:34, 07/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >чудовищный зоопарк по-разному несовместимых библиотек

    Это намного лучше чем их отсутствие.

    >то, что должно идти из коробки

    Ничего не должно идти из коробки. И Perl постепенно к этому движется.

    >За каждой мелочью приходится лезть в cpan

    Вы туда пешком ходите, сквозь снег, дождь и метель, за 50 км.?


     
  • 6.76, Аноним (-), 15:49, 08/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А кто писал и на чём (или под чем) бесконечный кеш регулярок пожирающий всю память в _искаробочном glob_ питона http://bugs.python.org/issue7846 ? Не буду их оскорблять, авторы питона когда-нибудь закончат институт и возможно научатся писать программы.
     
  • 5.61, Аноним (-), 03:00, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    XS API ломали сто раз
     
  • 2.71, Аноним (-), 02:29, 07/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > и что характерно, 2.7

    У разрабов стоит мак, там по умолчанию питон 2.7

     

  • 1.34, Аноним (-), 23:50, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> Так как невозможно точно определить типы переменных в динамическом языке

    это фича а не проблема. защита от дурака

     
  • 1.38, SergMarkov (ok), 00:49, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    осталось всего еще две реализации, чтобы гвидобейсик получил вполне заслуженное название sos-ton
    :-)
     
  • 1.42, Аноним (-), 01:46, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Код Pyston написан на языке C++

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

     
     
  • 2.70, NYM (?), 23:29, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот знаешь Аноним, а я вот именно после сдвигов реализаций/синтаксиса Питона, обычного, и опасаюсь менять версию своей большой программы.: программа на Питоне 2.6 версии еще -- но поменять на новый - и снова снова поломается, снова писать новые тесты.. а так - работает, прекрасно, и каши не просит!

    Писал бы на C++ или особенно - Jav'e - такого бы не было. Но на питоне просто тыщу раз проще быстрее и производительнее *писать*.

    Вот лишь бы совместимость не ломали.

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

     

  • 1.43, Аноним (-), 03:44, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Кто сказал "Пистон"?
    http://pit.dirty.ru/lepro/2/2011/02/05/28678-210120-f7338157e035ad7e4fbbeaa25
     
  • 1.44, Аноним (-), 04:01, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    JS все равно всех победит)
     
     
  • 2.46, Аноним (-), 07:29, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > JS все равно всех победит)

    Вы еще не до конца познали темную сторону силы. Dartвейдер

     

  • 1.47, Аноним (-), 10:12, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Pyston

    А-тя-тя!

     
  • 1.48, Аноним (-), 10:23, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PyPy  компилирует себя за 3 часа и сжирает от 3гб до 5гб ОЗУ
     
     
  • 2.52, Аноним (-), 16:12, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > PyPy  компилирует себя за 3 часа и сжирает от 3гб до 5гб ОЗУ

    "Питон не тормозит!!!1111"

     
     
  • 3.69, Аноним (-), 21:10, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Просто кость широкая
     
  • 2.78, Аноним (-), 17:50, 13/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Только что при обновлении Raspbian'а пересобрался за 4 минуты, сожрав меньше 20Мб оперативы в процессе.
     

  • 1.50, Аноним (-), 15:41, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ПиПи или Пистон, Пистон или ПиПи... дожили
     
     
  • 2.55, AlexAT (ok), 16:17, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > ПиПи или Пистон, Пистон или ПиПи... дожили

    Еще можно выпустить версию для кровавого энтерпрайза - ПроПистон.

     
     
  • 3.60, Дядя (?), 22:34, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    надо сказать что он уже давно там применяется ))))
     
  • 2.65, Аноним (-), 12:14, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вставить Pyston в PyPy :)
     

  • 1.57, lucentcode (ok), 20:16, 05/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Название, конечно, эпическое:) А вот реализация весьма красивая, Впечатляет, что они смогли сделать то, что так и не получилось реализовать у ребят из Google - реализовать механизм вероятного предсказания типов данных. Надеюсь, проект будет развиваться семимильными шагами.
     
     
  • 2.66, Злой напильник (?), 12:35, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Никак не пойму, а что мешает сделать Python 4 в котором будет статическая типизация? Помрет кто-то? И эпичность языка закончиться наконец-то... А да и компиляцию наконец-то прилепить, а то постоянно на этапе выполнения выясняеться опечатки и т.п. Обидно...
     
     
  • 3.67, AlexAT (ok), 12:53, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ИМХО, Гвидо прекрасно понимает, что динамическая типизация - по сути единственный способ избежать сравнения с существующими языками со статической типизацией и компиляцией, лежащими в данном случае за порогом достижимого для питона даже в части синтаксиса. Да и JIT-компилятор языкам со статической типизацией, честно говоря, нужен, как собаке пятая нога.
     
     
  • 4.72, Добрый Дохтур (?), 02:34, 07/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да и JIT-компилятор языкам со статической типизацией, честно говоря, нужен,
    > как собаке пятая нога.

    ой ли? та же java.

     

  • 1.77, pavelpat (?), 17:38, 09/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можно выпускать журнал "Про Pyston"
     
  • 1.79, Аноним (79), 08:21, 29/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Pystuyk
     
  • 1.80, Аноним (80), 09:16, 29/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть со всеми наворотами этот Пистон, максимум в полтора раза быстрее эталонного Питона? Который на 2 порядка медленнее Си? А смысл?
     

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



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

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