The OpenNET Project / Index page

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

Выпуск PyPy 2.1, реализации Python, написанной на языке Python

02.08.2013 19:36

Представлен релиз PyPy 2.1, реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Одновременно доступна для тестирования бета-версия PyPy3 2.1 с поддержкой Python 3. Версия PyPy 2.1 примечательная обеспечением официальной поддержки процессоров ARM в JIT-компиляторе. Кроме того, в код внесены очередные оптимизации - новый выпуск в среднем на 10% быстрее прошлой версии PyPy и в 6.12 раз быстрее классического CPython 2.7.3.

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

Новшества, добавленные в PyPy 2.1:

  • Полноценная поддержка генерации кода для архитектуры ARM в JIT-компиляторе. Поддерживаются системы на базе ARMv6 (Raspberry Pi) и ARMv7 (Beagleboard, Chromebook, Cubieboard и т.п.) в режимах ABI hard-float (armhf/gnueabihf) и soft-float (armel/gnueabi);
  • Поддержка Stacklet для ARM;
  • Реализация библиотек os.statvfs и os.fstatvfs для Unix-систем;
  • Увеличение производительности ведения лога;
  • Ускорение выполнения операций с множествами в объектах;
  • При формировании пакета обеспечена сборка расширения TK с использованием интерфейса CFFI;
  • Для Numpy улучшена поддержка массивов и dtype, добавлена поддержка субмассивов, проведена работа над ошибками;
  • Экспериментальная поддержка совместимости с Python 3 (CPython 3.2.3), реализованная в отдельной ветке PyPy3;

Основные особенности PyPy:

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


  1. Главная ссылка к новости (http://morepypy.blogspot.ru/20...)
  2. OpenNews: Выпуск PyPy 2.0, реализации Python, написанной на языке Python
  3. OpenNews: Релиз PyPy 1.9, реализации Python, написанной на языке Python
  4. OpenNews: Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах
  5. OpenNews: Релиз PyPy 1.8, реализации Python, написанной на языке Python
  6. OpenNews: Релиз PyPy 1.7, реализации Python, написанной на языке Python
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/37584-pypy
Ключевые слова: pypy, python, jit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, jOKer (ok), 19:47, 02/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Супер!

    Есть толька один вопрос: его собрать при трех с копьями гектарах оперативы можно или фиг?! Блин, у меня на ноуте можно OpenStack запустить (как набор ВМ), но этот гад собираться отказывается напрочь!

     
     
  • 2.13, BratSinot (ok), 22:28, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    http://goo.gl/jfDRIY , это раз.
    Если совсем все туго то: http://goo.gl/00Z18L
     
  • 2.16, Аноним (-), 22:55, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > его собрать при трех с копьями гектарах оперативы можно или фиг?!

    Питон... его разработчики всегда думают как вас лучше сделать :)
    ▒▒▒▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄▄
    ▒▒█▒░░░░▄▄▄▄▀░░░░░▒▀▀▄▄▄▒▒█
    ▒█▒░░░░░▄▀▀▄▄░░░░▒▄▄▄▒▒▒▒▒▒█
    █▒▀▄▄▒░░██▄▄▄█░░▒██▄▄█▒▒▒▒▒▒█
    █▒▒░▄▀▄▄▄▀░░░░░░▒▒█▒▒▒▒▒▒▒▒█
    █▒░░█▄▄░░░░░█▀░░░░▀▄▒▒▄▀▀▀▄█
    █▒░░▀█▄█▀▀▄░▀▀▀▀▄▄▄▀▒▒▒█▒▒█
    ▒█▒░░░▀█▄▄█▀▀▀█▀▀▀█▀█▀██▒▒█
    ▒▒█▒░░░░▀██▄▄▄█▄▄▄█▄██▒▒▒▒█▄
    ▒▒▒█▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒█
    ▒▒▒▒▀▀▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀

     
     
  • 3.23, бедный буратино (ok), 04:25, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> его собрать при трех с копьями гектарах оперативы можно или фиг?!
    > Питон... его разработчики всегда думают как вас лучше сделать :)

    Разработчики python пишут python (cpython), который собирается везде и легко. А это - нишевая реализация.


    >[оверквотинг удален]
    > ▒▒█▒░░░░▄▄▄▄▀░░░░░▒▀▀▄▄▄▒▒█
    > ▒█▒░░░░░▄▀▀▄▄░░░░▒▄▄▄▒▒▒▒▒▒█
    > █▒▀▄▄▒░░██▄▄▄█░░▒██▄▄█▒▒▒▒▒▒█
    > █▒▒░▄▀▄▄▄▀░░░░░░▒▒█▒▒▒▒▒▒▒▒█
    > █▒░░█▄▄░░░░░█▀░░░░▀▄▒▒▄▀▀▀▄█
    > █▒░░▀█▄█▀▀▄░▀▀▀▀▄▄▄▀▒▒▒█▒▒█
    > ▒█▒░░░▀█▄▄█▀▀▀█▀▀▀█▀█▀██▒▒█
    > ▒▒█▒░░░░▀██▄▄▄█▄▄▄█▄██▒▒▒▒█▄
    > ▒▒▒█▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒█
    > ▒▒▒▒▀▀▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀

    А ты милашка...

     
  • 2.29, Аноним (-), 10:29, 04/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для сборки с 3 гигами оперативы юзал zram, т.к. не хотел делать swap на SSD.
    Сожрал в итоге он у меня около 5 гигов
     
     
  • 3.41, jOKer (ok), 20:56, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    У меня гента, и я сперва хотел не мучатся и поставить бинарную версию, но наткнулся полное нежелание работать с бинарной версией virtualenv. Последний наотрез отказался видеть в pypy полноценный питон без перекомпиляции себя самого любимого с соотвествующим флагом (python_targets_pypy2_0). Но и пересобраться он так же не захотел - бинарная версия pypy нарушала зависимости, что в общем-то для бинарников совсем не редкость

    Тогда я плюнул на все, удалил бинарную версию, и попытался собрать его из сырцов, а что бы он не залу№?!@я на недостаток оперативы, я стал его собирать с флагом I_KNOW_WHAT_I_AM_DOING="1". Ну и конечно я предварительно выгрузил все что только можно и ~3.7Гб свободных у меня было. Плюс было ~6Гб свопа.

    Так этот гад собирался более 12 часов! А самое печальное, что в конце-концов умер на тестах, и проставится так не смог! Честно сказать я в ярости. И мне все равно назовут меня неосилятором или нет - я лично считаю что сборка не должна быть сплошным черным шаманством!

     

  • 1.2, Аноним (-), 20:18, 02/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересно, как по производительности Питон (и сабжевый ПиПи) в сравнении с Перлом?
     
     
  • 2.4, 123 (??), 20:36, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше перла, но в разы хуже  mono на операциях с памятью.
     
     
  • 3.17, Аноним (-), 22:56, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  Лучше перла, но в разы хуже  mono

    А оно в разы хуже сей и плюсов... ну в общем соревнование слоупоков объявляется открытым.

     
     
  • 4.31, Xasd (ok), 19:31, 04/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А оно в разы хуже сей и плюсов...

    особенно как наменант на конкурс "какой программист забудет больше всех закрыть файловых дескрипторов (и прочих ресурсов)"..

    и конкурс "какой программист наделает больше всего запутанных ошибок из класса Состояние Гонки".

     
  • 2.5, userd (ok), 20:45, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=perl&

    http://blog.famzah.net/2010/07/01/cpp-vs-python-vs-perl-vs-php-performance-be

    Вывод - в нулевом приближении примерно равны.

     
     
  • 3.10, Аноним (-), 21:41, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    не ввылайтесь больше на benchmarksgame.alioth.debian.org это выглядит смешно с учетом их тестов, поглядите на код тестов и все поймете
     
     
  • 4.38, userd (ok), 15:13, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    О, мсье знает как правильно сравнивать производительность языков программирования? Просветите нас?

    Или, может быть, Вам досадно что там не 100500 тестовых задач а только чуть больше 10?

     
  • 2.6, flvby1 (?), 21:22, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Стандартная реализация CPython чуть побыстрее, чем Perl. PyPy заметно быстрее. Обычно, правда, Perl и Python для вычислительно-емких задач не используются, поэтому само сравнение чисто спортивное.

    http://attractivechaos.github.io/plb/

     

  • 1.3, Аноним (-), 20:35, 02/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Меня просто вымораживают числа навроде: "в 6,21 раз быстрее". А почему не в 6,2137778468998 раз быстрее? Там же по графикам видно, что там в лучшем случае 6±4. Если погрешность в единицах, зачем эти дробные значения вообще указывать?
     
     
  • 2.19, Аноним (-), 23:05, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почитай про среднее арифметическое и медиану
     
     
  • 3.24, Аноним (-), 12:23, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Для расчёта этих значений использовалось среднее геометрическое. Внизу страницы с тестами есть комментарий про это http://speed.pypy.org/
     
  • 3.32, братка (?), 21:02, 04/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вэй, братка! Математика учил, физика нэ учил, да.
     

  • 1.8, Аноним (-), 21:30, 02/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сколько гигабайт нужно, чтобы это собрать?
     
     
  • 2.14, BratSinot (ok), 22:29, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Читаем выше:
    http://goo.gl/jfDRIY , это раз.
    Если совсем все туго то: http://goo.gl/00Z18L
     
  • 2.21, бедный буратино (ok), 04:14, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В debian и openbsd есть из коробки, только, конечно, появляется оно там не в день покупки (и, разумеется, речь идёт про транковые версии).

    Работает на 1.5 гб. Не знаю, зачем, но работает.

     
     
  • 3.26, all_glory_to_the_hypnotoad (ok), 15:12, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ты дурак? спрашивают про сборку. Для сборки нужно 4g+
     
     
  • 4.28, бедный буратино (ok), 15:33, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ты дурак? спрашивают про сборку. Для сборки нужно 4g+

    я знаю, что на сборку требуется 4g+

    и поэтому говорю, что в царстве людей бывают и бинарные сборки, которым НЕ требуется 4g+

     

  • 1.9, StainlessRat (??), 21:35, 02/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь ?
     
     
  • 2.11, Forth (??), 21:48, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
    > программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
    > на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
    > языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
    > ?

    Кто считает мертвым, где? Буквально недавно писал кое-что, вовсе не из спортивного интереса, а работы для.

     
  • 2.12, Lain_13 (ok), 22:08, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Речь идёт о скорости выполнения типовых операций в коде, написанном на Python. Сравнивается интерпретатор CPython и JIT-компилятор PyPy. Что конкретно непонятно? Ты ведь в курсе в чём разница между интерпретацией и JIT-компиляцией?
     
  • 2.15, BratSinot (ok), 22:30, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
    > программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
    > на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
    > языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
    > ?

    PyPy написан на не на Python, а на RPython и потом компилируется.

     
  • 2.18, Аноним (-), 22:58, 02/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
    > программирования в мире считают мёртвым,

    Интересно, кто? А то гугля вон в libvpx на нем наворачивает так, что за ушами трещит. Иначе кодек слоупоком получается. А если его на питоне переписать - для кодирования потребуется небольшой Cray.

     
  • 2.20, ffirefox (?), 01:55, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
    > языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
    > ?

    Просто сравнивается не скорость единичной операции языков, а скорость _оптимизированной_ программы. Человек за тоже время оптимизирует программу на ассемблере, чем компилятор с ЯВУ.
    Простой пример:
    1. Если у вас есть действие в цикле, и затраты на организацию упраления с циклом соизмеримы с действием, то развернув цикл в простое повторение действий вы выигрываете в скорости, но проигрываете в памяти.

    2. При наличии кэша программу можно оптимизировать для более качественного его использования. Человеку эта ручная оптимизация на ассемблере может сильно добавить седых волос, а компилятору с ЯВУ это просто еще один алгоритм оптимизации.


     
  • 2.22, бедный буратино (ok), 04:16, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В своё время я программировал на "мёртвом" языке - ассемблер. Этот язык
    > программирования в мире считают мёртвым, т.к. есть ЯВУ. Эти ЯВУ написаны
    > на асме, получается связка АСМ-ЯВУ-БОЛЕЕВЫСОКИЕЯЗЫКИ. Получается если ПуПу написан на
    > языке Пу (написанный на ЯВУ->асм), о какой скорости может идти речь
    > ?

    "Я всю жизнь был извозчиком, на лошадях. Так как всё-таки могут летать самолёты, если у лошадей нет крыльев?"

     
     
  • 3.25, StainlessRat (??), 13:08, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не путайте Божий дар с яичницой. Все ЯВУ языки спускаются с ВЫСОКОГО УРОВНЯ до ассемблера. И до тех пор пока ничего нового не изобрели, процессор будет понимать машинный код (асм - понятный для человека) и будут ХАКЕРЫ которые будут пользоваться SoftICE, IDA и другими инструментами. И этот ПуПу тоже спускается до машинного кода, и Ваш IE тоже опускается до машинного кода.
     
     
  • 4.27, all_glory_to_the_hypnotoad (ok), 15:17, 03/08/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы понимаете, что у вас уже начинают прогрессировать старческий маразм и шизофрения?
     
     
  • 5.30, Аноним (-), 14:58, 04/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вы понимаете, что у вас уже начинают прогрессировать старческий маразм и шизофрения?

    Нет, чувак. Это ты у п о р о т ы й.

     

  • 1.33, Аноним (-), 06:51, 05/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Topaz - A high performance ruby, written in RPython

    А то что все о питоне да о питоне :)

     
  • 1.34, Аноним (-), 08:58, 05/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне может кто-нибудь доступно объяснить зачем такой изврат? Есть же cpython. Не понятно также причин существоания таких странных явлений как jython и тому подобных.
     
     
  • 2.37, userd (ok), 14:54, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Мне может кто-нибудь доступно объяснить зачем такой изврат? Есть же cpython.

    Почему изврат? Язык Python имеет массу интересных особенностей, но цена этих особенностей - сравнительно низкая производительность. Соответственно, есть интерес к повторению достижений Python, но по возможности - без указанного недостатка. Народ почему-то плющит от того, что в качестве языка программирования PyPy выбран язык довольно похожий на Python. Вы правда думаете, что если бы выбрали C или C++ то удалось-бы достичь лучших результатов или тех-же результатов меньшей ценой?


    > Не понятно также причин существоания таких странных явлений как jython и тому
    > подобных.

    Ну и что? Нашёлся человек, который захотел соединить язык Python и инфраструктуру java (существующие библиотеки и интерпретатор с jit-ом) - см. http://hugunin.net/story_of_jython.html

     
     
  • 3.39, Аноним (-), 16:48, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вот что-то слабо верится что реализация на питоне, а тем более на java будет быстрее сишной реализации.
     
     
  • 4.40, userd (ok), 18:57, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это - не вопрос веры. Это вопрос понимания того, что происходит в компьютере при исполнении той или иной программы.

    Прочтите обсуждаемую новость да рассмотрите картинку.
    На некоторых представленных тестах PyPy лишь немного выигрывает, на некоторых - выигрывает в 50 раз. За это приходится платить большим расходом памяти.

    По поводу Jython - есть варианты.
    Скажем, у меня есть любимый микро-бенчмарк из четырёх строк:




    from time import clock
    t=clock()
    s=sum(xrange(10**9))
    print clock()-t


    на нём Jython демонстрирует 70 секунд, python2 - 109 секунд и python3 (с двумя тривиальными правками) - 82 секунды.

     

  • 1.35, Аноним (-), 11:46, 05/08/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Я считаю, что нужно собрать PyPyPy (питон, собранный на питоне, который собрали питоном), чтобы получить еще дополнительный выигрыш в производительности.
     
     
  • 2.36, userd (ok), 14:10, 05/08/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Евгений Ваганович, залогинтесь.
     
  • 2.42, newdya (ok), 10:52, 06/08/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Было.
    http://www.opennet.me/openforum/vsluhforumID3/44972.html#2
    http://www.opennet.me/openforum/vsluhforumID3/64752.html#8
     

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



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

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