The OpenNET Project / Index page

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

04.11.2015 10:26  Выпуск Pyston 0.4, реализации языка Python с JIT-компилятором

Представлен четвёртый выпуск проекта 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).

Особенности нового выпуска:

  • Проведена значительная работа по улучшению совместимости с CPython. Реализована поддержка практически всей семантики языка Python. Уровень поддержи Python доведён до возможности применения Pyston для запуска серверного ПО Dropbox, отвечающего за генерацию страниц. Обеспечена совместимость с большим числом стандартных библиотек, в том числе добавлена начальная поддержка NumPy. Успешно пройдено 153 дополнительной проверки из тестового набора CPython. Из новых возможностей отмечается поддержка Unicode, множественного наследования, weakrefs и финализаторов ("__del__"), выражений "exec s in {}", мутирующих функций, C API, многострочных выражений в REPL и т.д.
  • Значительный прогресс в оптимизации производительности. В текущем виде Pyston на 25% быстрее CPython и на 25% медленнее PyPy 4.0. Напомним, что в прошлом выпуске выигрыш составлял около 1% и разработка находилась в состоянии неоптимизированного прототипа. Из улучшений отмечается создание собственной системы "размотки" исключений (C++ exception unwinder); реализация промежуточного JIT, размещённого между интерпретатором и LLVM JIT; новая система дискового кэширования результатов работы LLVM JIT; многочисленные улучшения методов трассировки исполнения кода; новая прослойка для трансляции вызовов C API и т.п.
  • Осуществлён переход с системы сборки на основе Makefile к применению CMake;
  • Расширена документация, в том числе подготовлены описания внутренней архитектуры.


  1. Главная ссылка к новости (http://blog.pyston.org/2015/11...)
  2. OpenNews: Выпуск PyPy 4.0, реализации Python, написанной на языке Python
  3. OpenNews: Увидел свет язык программирования Python 3.5.0
  4. OpenNews: Выпуск Jython 2.7, реализации языка Python на Java
  5. OpenNews: Выпуск Nuitka 0.5.9, компилятора для языка Python
  6. OpenNews: Представлен HOPE, JIT-компилятор для языка Python, транслирующий в C++
Лицензия: CC-BY
Тип: Программы
Ключевые слова: pyston, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.2, Аноним (-), 11:24, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]
  • +2 +/
    >представлена... реализация... не будет GIL.

    По крайне мере хорошо, что эти релизации идут независимо и... не блокируют друг друга)

     
  • 1.5, Аноним (-), 12:05, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]
  • +17 +/
    >высокой производительности, близкой к производительности традиционных системных языков, таких как C++.

    По горло уже сыт этим враньём, "близкого" там и в помине нет и быть не может.

     
     
  • 2.6, A.Stahl (ok), 12:15, 04/11/2015 [^] [ответить]    [к модератору]
  • +10 +/
    Если вы произнесёте достаточно большую ложь и будете её повторять, то люди в итоге в неё поверят.
     
     
  • 3.15, Аноним (-), 14:30, 04/11/2015 [^] [ответить]    [к модератору]
  • +2 +/
    Сколько можно повторять эту банальщину?
     
     
  • 4.17, Красные Глаза (ok), 15:11, 04/11/2015 [^] [ответить]    [к модератору]
  • –1 +/
    Если вы произнесёте достаточно большую ложь и будете её повторять, то люди в итоге в неё поверят.
     
     
  • 5.18, Аноним (-), 15:53, 04/11/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    Совершенно справедливая симметричность.
     
     
  • 6.20, Аноним (-), 15:56, 04/11/2015 [^] [ответить]    [к модератору]  
  • +/
    > Совершенно справедливая симметричность.

    Ой, промахнулся.

     
  • 3.19, Аноним (-), 15:56, 04/11/2015 [^] [ответить]    [к модератору]  
  • +3 +/
    Если вы произнесёте достаточно большую правду и будете её повторять, то люди в итоге в неё поверят.
     
  • 2.16, Нимано (?), 14:59, 04/11/2015 [^] [ответить]     [к модератору]  
  • +2 +/
    Читайте внимательнее Т е похвальное стремление к светлому будущему Ну а то, ч... весь текст скрыт [показать]
     
     
  • 3.27, all_glory_to_the_hypnotoad (ok), 17:00, 04/11/2015 [^] [ответить]    [к модератору]  
  • +/
    так и это враньё, питон даже обмазанный JITами не будет иметь такой производительности.
     
     
  • 4.30, Нимано (?), 18:09, 04/11/2015 [^] [ответить]     [к модератору]  
  • +4 +/
    Да легко Делов-то с помощью либастрала забабахать нормальное предсказание ти... весь текст скрыт [показать]
     
  • 4.51, freehck (ok), 12:50, 05/11/2015 [^] [ответить]     [к модератору]  
  • +/
    Нет, ну почему же Очень даже может Это ж не виртуальная машина, как скажем JV... весь текст скрыт [показать]
     
     
  • 5.52, userd (ok), 15:18, 05/11/2015 [^] [ответить]     [к модератору]  
  • +1 +/
    Опыт, конечно, говорит - никогда не говори никогда , но по поводу 171 Очень д... весь текст скрыт [показать]
     
  • 5.54, all_glory_to_the_hypnotoad (ok), 01:07, 06/11/2015 [^] [ответить]     [к модератору]  
  • –1 +/
    Это сильно зависит от ЯП Питон задизайнен внутри так, то такое в принципе невоз... весь текст скрыт [показать]
     
     
  • 6.55, Аноним (-), 15:04, 06/11/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    Ставка на оптимизацию в наш век сверхбыстрых камней и грошовой памяти явный моветон. Никому это сейчас не нужно....
     
  • 2.36, Аноним (-), 19:20, 04/11/2015 [^] [ответить]    [к модератору]  
  • –2 +/
    погугли polimorphic inline cache
     
     
  • 3.45, Нимано (?), 22:49, 04/11/2015 [^] [ответить]     [к модератору]  
  • +3 +/
    погуглите static dispatch и dynamic dispatch заодно и и подумайте на досуг... весь текст скрыт [показать]
     
  • 2.41, Аноним (-), 20:59, 04/11/2015 [^] [ответить]    [к модератору]  
  • –2 +/
    почему у JavaScript близкая к C++ производительность получилась, а у python невозможна?
     
     
  • 3.43, all_glory_to_the_hypnotoad (ok), 22:03, 04/11/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    не получилась.
     
     
  • 4.56, Аноним (-), 15:06, 06/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Ню да, ню да... Конечно.  
     
  • 1.9, anonymous (??), 12:28, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > В текущем виде Pyston на 25% быстрее CPython и на 25% PyPy 4.0

    С pypy.org

    > The geometric average of all benchmarks is 7.0 times faster than CPython

    Кто-то нагло звиздит.

     
     
  • 2.13, Никто (??), 14:21, 04/11/2015 [^] [ответить]    [к модератору]  
  • +5 +/
    Правильный выбор бенчмарков решает.
     
  • 1.12, Аноним (-), 14:02, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Почему pyston_pgo на графике присутствует только в легенде?
     
     
  • 2.47, Ytch (ok), 02:45, 05/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Он воистину легендарный!
     
  • 2.58, wWolf (?), 12:51, 07/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Ну так написано же — less is better :)
     
  • 1.40, Аноним (-), 20:57, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >В текущем виде Pyston на 25% быстрее CPython

    jit компилятор быстрее интерпретатора на четверть. Это круто!

     
  • 1.42, Я (??), 21:10, 04/11/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Почему они пилят реализацию второй ветки, когда все кроме легаси уже несколько лет как перешли на третью?
     
     
  • 2.46, Alexey (??), 23:26, 04/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Наверное, потому что для их задач разница не принципиальна.
     
  • 2.49, xPhoenix (ok), 11:30, 05/11/2015 [^] [ответить]    [к модератору]  
  • +/
    К сожалению, не все. Есть одна фирма-лидер [сарказм], которая идёт к успеху и начинает новый проекты на Python с использованием Python 2.7 и Django 1.4.
     
  • 2.53, Аноним (-), 17:47, 05/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Потому тропбукс на двойке
     
  • 2.57, Аноним (-), 05:20, 07/11/2015 [^] [ответить]    [к модератору]  
  • +/
    Можно спросить у самого Гвидо...
     

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


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