The OpenNET Project / Index page

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

Релиз PyPy 1.7, реализации Python, написанной на языке Python

21.11.2011 16:47

Вышел релиз проекта PyPy 1.7, в рамках которого разрабатывается реализации языка Python, написанная на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython). В новом выпуске, помимо исправления ошибок, особое внимание было уделено расширению класса кода на Python, получающего большое ускорение при использовании PyPy. В среднем PyPy 1.7 на 30% быстрее PyPy 1.6 а на некоторых тестах — до 20 раз.

Новая версия PyPy опережает CPython 2.7.2 по производительности в среднем в 4.8 раза. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.

Основные изменения:

  • Многочисленные улучшения производительности;
  • Исправления ошибок и улучшение совместимости с CPython;
  • Улучшение поддержки Windows;
  • Опция беcстекового (Stackless) исполнения теперь включена по умолчанию. К сожалению, программы, использующие бесстековость, пока не получат реального увеличения производительности, потому, что любой цикл, использующий бесстековые возможности, собьёт JIT-компилятор;
  • Версия библиотеки для организации научных расчетов NumPy для PyPy переименована в numpypy (следует использовать "import numpypy as numpy"). Большой прогресс достигнут со времён PyPy 1.6, особо следует отметить реализацию dtypes. Тем не менее, полная поддержка API библиотеки NumPy пока не реализована;
  • Новый кодировщик JSON, который опережает CPython в некоторых случаях до 2 раз и более чем в 20 раз — старый, используемый в версии 1.6;
  • Значительно улучшено управление памятью в некоторых внутренних модулях. Это должно подействовать на любые приложения, использующие, например, криптографию;
  • Есть некоторый прогресс в расширении поддержки бинарных расширений CPython (написанных с использованием C API) через cpyext.

Вещи, работа над которыми ещё ведётся и которые ожидаются в 1.8:

  • Специализация списков. Есть ветка, реализующая списки элементов одного типа (целых, чисел с плавающей точкой, строк) так же компактно, как array.array. Это значительно увеличит производительность и уменьшит расход памяти;
  • Продолжаются работы над NumPy, скоро ожидаются многомерные массивы;
  • Два новых бэкэнда JIT, для процессоров PowerPC и ARM.

Некоторые особенности PyPy:

  • Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);
  • Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
  • Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
  • PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.6 и CPython 2.7;
  • Поддержка работы на архитектурах x86 (IA-32) и x86_64. Ведется работа по адаптации для архитектур ARM и PowerPC , но она ещё не завершена;
  • На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
  • На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.


  1. Главная ссылка к новости (http://permalink.gmane.org/gma...)
  2. OpenNews: Релиз PyPy 1.6, реализации Python, написанной на языке Python
  3. OpenNews: Проект PyPy представил визуализатор процесса JIT-компиляции и обрисовал ситуацию, когда PyPy быстрее языка Си
  4. OpenNews: Релиз Python-компилятора Shed Skin 0.8
  5. OpenNews: Проект по интеграции поддержки многопоточности в Python и релиз PyPy 1.3
Автор новости: gegMOPO4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/32357-pypy
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 19:38, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Отлично. Успехов проекту.
     
  • 1.5, Аноним (-), 21:22, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    Никогда не понимал, что мешает сделать JIT-компиляция в CPython и прекратить эти рекурсивные извращения.
     
     
  • 2.10, Аноним (-), 21:51, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Никогда не понимал, что мешает сделать JIT-компиляция в CPython и прекратить эти
    > рекурсивные извращения.

    Религия. В каком-то роде она есть у половины программистов. Например, то что компилятор си собран сам собой - никого не удивляет :)


     
     
  • 3.12, Аноним (-), 22:00, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Например, то что компилятор си собран сам собой - никого не удивляет :)

    Компилятор C умеет генерировать нативный код, работающий без C-компилятора. Если PyPy это умел, тогда бы его написанность на самом себе никого бы не удивляла, как никого не удивляет ghc написанный на Haskell.

     
     
  • 4.25, Аноним (-), 07:20, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Компилятор C умеет генерировать нативный код, работающий без C-компилятора. Если PyPy это умел, тогда бы его написанность на самом себе никого бы не удивляла, как никого не удивляет ghc написанный на Haskell.

    Pypy написан на RPython который а)является компилятором б)имеет статическую типизацию. Еще вопросы?

     
     
  • 5.26, Анон (?), 08:52, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Где можно скачать
    >RPython который а)является компилятором

    Ммм?

     
     
  • 6.30, user (??), 12:07, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Качай pypy он в нём. Вот статья на хабре http://habrahabr.ru/blogs/python/124418/ с примером использования.
     
     
  • 7.39, Анон (?), 22:24, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Или я слеп, или у вам терминальная стадия ФГМ — нет там ничего такого (RPython-компилятор).
    Будете писать признание?
     
     
  • 8.41, Кэп (?), 22:28, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Может хоть в гугл сходишь Первая ссылка сверху http code google com p rpytho... текст свёрнут, показать
     
  • 5.43, anonymous (??), 17:20, 23/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем тогда нужен PyPy, если есть RPython?
     
  • 4.36, Sw00p ak Jerom (?), 19:31, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    угу умеет сам себя - а чем вы будете компилировать gcc допустим ? - другим gcc ? - а его ?

    я не против бутстрапинга - но к чему это приводит ? - то что мы забываем основы и начала так же как и забыли что первей появилось - курица или яйцо (а когдато это было понятно)

     
     
  • 5.40, Кэп (?), 22:24, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >угу умеет сам себя - а чем вы будете компилировать gcc допустим ? - другим gcc ? - а его ?

    Элементарно Ватсон! Машинные коды рулят.

    > как и забыли что первей появилось - курица или яйцо (а когдато это было понятно)

    А это и сейчас понятно, Дарвин всё рассказал. "Яйцо" появилось на несколько миллионов лет раньше чем вид под названием "курица", а последний появился совсем "недавно" , что-то около 10 тысяч лет назад.

     
     
  • 6.46, Sw00p aka Jerom (?), 20:39, 23/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>"Яйцо" появилось на несколько миллионов лет раньше

    и когда же если точно ?

    по крайней мере вы уже забыли када повявился фортран или алгол

     
     
  • 7.47, р (?), 23:07, 23/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >и когда же если точно ?

    у динозавров они уже были.

    >по крайней мере вы уже забыли када повявился фортран или алгол

    да рассказывай.

     
  • 5.44, anonymous (??), 17:22, 23/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > угу умеет сам себя - а чем вы будете компилировать gcc допустим
    > ? - другим gcc ? - а его ?

    А Вы всё с помощью хекс-редактора пишите?

     
     
  • 6.45, Sw00p aka Jerom (?), 20:37, 23/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А Вы всё с помощью хекс-редактора пишите?

    откройте себе асм

     
  • 2.16, gegMOPO4 (ok), 22:58, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PyPy — экспериментальный проект. Прототип JIT-компилятора. Эксперименты проще делать на высокоуровневом языке, не отвлекаясь на низкоуровневые детали C. Вот когда PyPy созреет, полностью догонит CPython по фичам и будет показывать стабильное и заметное превосходство, — начнут понемногу переносить некоторые оптимизации.
     
     
  • 3.49, eigrad (ok), 01:26, 01/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А смысл? Код сгенерированный Jit-компилятором одинаково быстро будет работать независимо от того на чем сам компилятор написан.
     
  • 2.35, Shifty (?), 16:01, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    так ведь сделали psyco, и работало, некоторые вещи ускоряло невероятно
    но до создания 64битной версии разработчик psyco ударился в pypy
    в результате они до сих пор пока psyco не догнали
     
     
  • 3.50, eigrad (ok), 01:26, 01/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    вроде перегнали же?
     
     
  • 4.51, Yakov Markovitch (?), 15:12, 01/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > вроде перегнали же?

    Да, только psyco можно было использовать в промышленных целях совместно с нормальным CPython, а грандиозный PyPy - экспериментальная вещь в себе и неизвестно, сколько такой будет. A мне нужен именно CPython.

    Вы ещё поинтересуйтесь, сколько он (PyPy) стартует. Прелестью Питона всегда была масштабируемость не только "вверх", но и "вниз", т.е. я могу равно успешно на нём подручный скрипт написать, вместо Баша, и большую систему. А писать подручные скрипты и использовать PyPy - всё равно, что использовать для этой цели Яву (disclaimer: ни слова о достоинствах/недостатках Явы, я всего лишь имел в виду шустрость старта виртуальной машины и её начальные требования к памяти).

     

  • 1.7, klalafuda (?), 21:36, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А что разве сегодня хоть что-то все ещё пишут на не-джаваскрипте :-?
     
     
  • 2.15, Аноним (-), 22:32, 21/11/2011 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > А что разве сегодня хоть что-то все ещё пишут на не-джаваскрипте :-?

    На питоне. Примерно один хрен по ЦА (скрипткидисы). Только еще более тормознуто.


     
     
  • 3.48, anony (?), 01:04, 24/11/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет, это не ЦА питона, просто хомячки с ним носятся как ошпареные, так сложилось уж
     

  • 1.14, Анонимнул (?), 22:22, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Ждем от производителей железа транзисторы на микросхемах.
    :)
     
     
  • 2.21, ffirefox (?), 03:13, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В принципе, ждать уже не надо. В электронике это уже прошли, когда изготовить средненький операционный усилитель стало сильно дешевле, чем сделать качественный (стабильный по характеристикам от партии к партии) транзистор. В итоге, во многих решениях проще (а иногда и дешевле) стало поставить вместо простейшей схемы на транзисторах, дешевый операцонник.

    Аналогично произошло и с катушками индуктивности. В микросхемах их с успехом стали заменять резистивно-емкостные схемы на операционных усилителях. Т.к. хоть теоретически индуктивность проще, но, на текущем уровне развитии технологии, дешевле использовать для ее замены более сложные, но технологичные решения.

    В этом смысле, непонятны нападки на PyPy (и не стандартное использование того же JavaScript). Любое практическое решение это результат компромисса  различных факторов (времени, стоимости, инфраструктуры и т.д.). Военные, например, аока ждут навороченных бластеров, а учатся воевать тем, что уже есть.

     
     
  • 3.32, Аноним (-), 12:46, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > индуктивность проще, но, на текущем уровне развитии технологии, дешевле использовать для
    > ее замены более сложные, но технологичные решения.

    В силовой электронике так не считеришь :P

     
  • 3.52, Yakov Markovitch (?), 15:15, 01/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > В принципе, ждать уже не надо. В электронике это уже прошли, когда
    > изготовить средненький операционный усилитель стало сильно дешевле, чем сделать качественный
    > (стабильный по характеристикам от партии к партии) транзистор. В итоге, во
    > многих решениях проще (а иногда и дешевле) стало поставить вместо простейшей
    > схемы на транзисторах, дешевый операцонник.
    > Аналогично произошло и с катушками индуктивности. В микросхемах их с успехом стали
    > заменять резистивно-емкостные схемы на операционных усилителях. Т.к. хоть теоретически
    > индуктивность проще, но, на текущем уровне развитии технологии, дешевле использовать для
    > ее замены более сложные, но технологичные решения.

    Особенно романтично должна смотреться резистивно-емкостная схема в качестве фильтра по питанию в цепи с приличным током.

     
  • 2.31, Аноним (-), 12:44, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ждем от производителей железа транзисторы на микросхемах.:)

    Легко :) Нынче куча силовых ключей содержит встроенную микросхему ;-]

     

  • 1.17, user (??), 23:10, 21/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Знает кто-нибудь Stackless с jit это серьёзная проблема или решаемая в ближайших релизах?
     
     
  • 2.20, Аноним (-), 02:34, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это принципиально нерешаемая проблема. Это в общем, должно быть очевидно.
     
     
  • 3.22, ffirefox (?), 03:15, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Это принципиально нерешаемая проблема. Это в общем, должно быть очевидно.

    А в чем очевидность?

     
  • 3.28, user (??), 09:48, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А что в новости тогда делают слова "пока не получат"?
     

  • 1.23, Ya (??), 05:02, 22/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чего такого? Ведь, никто не смеется над компилятором С, написаном на С... Пусть и Питоновцы делают то, что им хочется, лишь бы на благо...
     
     
  • 2.37, Sw00p ak Jerom (?), 19:34, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А чего такого? Ведь, никто не смеется над компилятором С, написаном на
    > С... Пусть и Питоновцы делают то, что им хочется, лишь бы
    > на благо...

    зато смеются када услышат вопрос - что первей появилось курица или яйцо

     

  • 1.29, savant (ok), 11:31, 22/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.

    потом на scheme напишут реализацию python которая сможет выполнить pypy, в котором на интерпретаторе scheme запущен интерпретатор python, который запускает pypy с...

     
     
  • 2.34, Аноним (-), 14:13, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > потом на scheme напишут реализацию python которая сможет выполнить pypy, в котором
    > на интерпретаторе scheme запущен интерпретатор python, который запускает pypy с...

    Вы забыли сказать что чтобы все это увидеть, надо будет запустить линукс в браузере, который запустит браузер с линуксом, в котором будет браузер... с линуксом... в котором.... ну в общем вы поняли :)

     
     
  • 3.38, Sw00p ak Jerom (?), 19:35, 22/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> потом на scheme напишут реализацию python которая сможет выполнить pypy, в котором
    >> на интерпретаторе scheme запущен интерпретатор python, который запускает pypy с...
    > Вы забыли сказать что чтобы все это увидеть, надо будет запустить линукс
    > в браузере, который запустит браузер с линуксом, в котором будет браузер...
    > с линуксом... в котором.... ну в общем вы поняли :)

    а потом говорят что Бога нет )))

     

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



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

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