LINUX.ORG.RU

PyPy 1.8

 , , ,


0

2

Вышла новая версия интерпретатора PyPy, который написан с использованием RPython-подмножества Python со статической типизацией. В рамках данного проекта реализован JIT компилятор. Скорость его работы на 10% выше, чем у PyPy 1.7 и в 5.2 раза выше, чем у классического CPython. Было выполнено много работ для JIT на платформе ARM. Однако, в бочке меда есть и своя ложка дегтя: у PyPy более высокое потребление памяти, особенно на длительно работающих процессах. Особенности новой версии:

  • Добавлена специализация списков. Это позволяет уменьшить расход памяти для списков с элементами одного типа.
  • Готов бекенд для платформы ARMv7.
  • Улучшена совместимость с CPython.
  • Обновление стандартной библиотеки с версии 2.7.1 до 2.7.2.
  • Продолжена работа над поддержкой математической библиотеки Numpy, которая происходит в отдельной ветке numpypy. В версию 1.8 добавлены функции для работы с многомерными массивами, различные размеры dtype, добавлено множество новых функций. Добавлена возможность работать с именем numpy, однако, перед тем, как импортировать numpy все равно надо написать import numpypy.
  • Добавлены JIT хуки. Это позволяет писать функции, которые запускаются JIT компилятором на фазе оптимизации или окончательной трансляции кода в машинные инструкции.


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

  • Он может бесшовно заменить Python 2.7 и 2.6.
  • Поддерживаются ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet.
  • В PyPy имеется бекенд для генерации байт-кода для LLVM, NET/CLI, Java.
  • Поддерживается обмен данными между микропотоками в рамках одного потока, выделенного операционной системой.
  • Поддерживается «песочница» для не доверенного кода с полными возможностями без выделения небезопасных функций, в отличие от CPython.
  • Поддерживаются архитектуры: x86 (IA-32), x86_64 и ARMv7. Ведется работа над поддержкой PowerPC (PPC64).
  • PyPy используется для тестирования новых концепций и возможностей языка Python.

Сайт проекта

Страница загрузок

Тесты скорости PyPy

Описание идеи, лежащей в основе PyPy

>>> Подробности

★★★★★

Проверено: post-factum ()

Где-то уже в рабочих проектах используется? Или до сих пор перспективная гиковская игрушка?

provaton ★★★★★ ()

отличное явление и реализация, межгалактический комитет одобряет

science ★★☆ ()

У вас тут многочисленные синтаксические ошибки:

Rpython -подмножества
платформе Однако
numpypy. в версию
функций Добавлена
хуки Это
LLVM,NET/CLI,Java
потока,выделенного
имеется бекенда

anonymous ()

Как-то слабо у меня в голове вяжется «бесшовная» замена python 2.7 с отсутствием SSL в твистед и нормальных СУБД в django.

Хотя, мне для твистеда может сгодиться в xmpp-сервисах, ибо к jabber-серверу они цепляются плейн-текстом. Хотя, если вдруг придётся куда-то сходить ими по https, то всё, приплыли...

Binary ★★★★★ ()

Имхо, если написать pypy-gtk и/или pypy-qt - проект обеспечен нескучными тестерами и разработчиками в большом количестве. А пока, да, питонофанатская игрушка.

bass ★★★★★ ()
Ответ на: комментарий от Binary

Как-то слабо у меня в голове вяжется «бесшовная» замена python 2.7

Тоже обратил внимание на эту фразу. Непонятно, как реализация языка может заменить «стандарт» языка, наверное в виду имелся CPython, а не Python.

И тут надо признать, что рассуждение о замене CPython`а на PyPy - палка о двух концах. С одной стороны, JIT творит чудеса, и скорость в синтетических тестах действительно выше(но надо оговорится, что скорость в среднем выше в 5.2 раз, а не в 52 как указано в тексте новости), но с другой стороны, из-за собственной среды исполнения (несовместимой с CPython), невозможно заюзать весь C/C++ код, а значит много библиотек остаются «за бортом». Даже поддержка ctypes мало что дало в этом плане.

beka ()
Ответ на: комментарий от anonymous

fix. Спасибо beka за поправку со скоростью, а то точку не разглядел, но и сам был удивлен такой цифрой

pylin ★★★★★ ()

В прошлый раз они обогнали C. Теперь оно ещё быстрее. Ассемблер уже нервно плачет в сторонке? Или всё еще лучше и теперь оно работает быстрее процессора, на котором запущено?

mine ()
Ответ на: комментарий от mine

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

zz ★★★★ ()

Интересно, а есть ли тесты pypy vs java

yanka ★★ ()
Ответ на: комментарий от mine

Или всё еще лучше и теперь оно работает быстрее процессора, на котором запущено?

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

geekless ★★ ()

pyglet

Поддерживать-то поддерживает, но тормозит просто зверски, и ворнингами в консоль сыплет.

pevzi ★★★★★ ()
Ответ на: комментарий от daris

А есть такое для Ruby?

У Rubinius вроде та же суть примерно.

pevzi ★★★★★ ()
Ответ на: комментарий от pevzi

А как оно по скорости? Видел какие-то противоречивые тесты. И они слишком противоречивы %)

daris ()

Зачем нужен питон? Что на нем напишешь, кроме быдлоскрипта.

Fanta ()
Ответ на: комментарий от Fanta

Зачем нужен питон? Что на нем напишешь, кроме быдлоскрипта.

Быдлосайты же. youtube, к примеру. Ну или быдлоигру типа Eve Online.

tailgunner ★★★★★ ()

ехал питон через питон
....

q11q11 ★★★★★ ()
Ответ на: комментарий от beka

а вот интересно, возможно ли написать постгресовский драйвер непосредственно для pypy? заставить джанго потом работать с кастомным бекендом не сложно.

Binary ★★★★★ ()
Ответ на: комментарий от baverman

спасибо, надо попробовать. интересно, не съест ли он весь профит от pypy :)

Binary ★★★★★ ()

у PyPy более высокое потребление памяти, особенно на длительно работающих процессах

Течёт?

Wizard_ ★★★★★ ()

RPython-подмножества Python со статической типизацией

Совершенно не нужно.

kranky ★★★★★ ()
Ответ на: комментарий от kranky

Казалось бы причем тут язык на котором написана часть интерпретатора.

zz ★★★★ ()
Ответ на: комментарий от zz

Просто следующий шаг рассуждения: python- не нужно

pylin ★★★★★ ()

Отличный проект! Ждём поддержки numpy и py3k.

FENix ()
Ответ на: комментарий от mine

В прошлый раз они обогнали C. Теперь оно ещё быстрее. Ассемблер уже нервно плачет в сторонке? Или всё еще лучше и теперь оно работает быстрее процессора, на котором запущено?

Ассемблер медленный. Его и Си в лёгкую обгонит на среднем объёме кода. Потому что никаких людских ресурсов не хватит оптимизировать вручную код на ассемблере так, как оптимизирует компилятор Си.

А фраза «работает быстрее процессора» - глупость. Нельзя сравнить скорость процессора и кода. Ты яблоки с трактором сравни ещё, по скорости перемещения.

ForwardToMars ()
Ответ на: комментарий от mine

В прошлый раз они обогнали C

Они обогнали интерпретатор, написанный на C JIT компилятором, написанным на Python. Если бы в CPython была реализована JITкомпиляция, я не думаю, что он был бы медленней PyPy.

malices_gossips ★★★ ()
Ответ на: комментарий от malices_gossips

Они обогнали нативный код на си, на строковом форматировании и регепсках за счет того что JIT знает какие у них входные данные(собственно конкретная строка и конкретный регексп).

zz ★★★★ ()
Ответ на: комментарий от Snorg

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

malices_gossips ★★★ ()

В PyPy имеется бекенд для генерации байт-кода для LLVM, NET/CLI, Java.

А он умеет, как IronPython и Jython, предоставлять Python-скрпитам возможность юзать классы Java или Mono?

franchukroman ★★☆ ()
Ответ на: комментарий от provaton

А кто мешает? Хз как по стабильности, а по всем остальным критериям он подходит (ну кроме поддержки Python 3).

franchukroman ★★☆ ()
Ответ на: комментарий от provaton

А кто мешает? Хз как по стабильности, а по всем остальным критериям он подходит (ну кроме поддержки Python 3).

franchukroman ★★☆ ()
Ответ на: комментарий от franchukroman

> Хз как по стабильности,

Ну вот и я хз. А еще хз как по совместимости (особенно с либами на С).

provaton ★★★★★ ()
Ответ на: комментарий от Fanta

Вот скрипт и напишешь. А еще на нем можно писать почти всё. Посмотри в своей системе пакеты, которые зависят от Python, и сам все поймешь.

franchukroman ★★☆ ()
Ответ на: комментарий от yanka

Интересно, а есть ли тесты pypy vs java

Разве может что-нибудь быть тормознее Java?

harper ()
Ответ на: комментарий от provaton

А еще хз как по совместимости (особенно с либами на С).

Совместим не полностью. Косяки есть в этом плане. В частности, упомянутая numpy.

franchukroman ★★☆ ()
Ответ на: комментарий от harper

Да. Ванильный CPython и ванильный Ruby. А на многопоточных приложениях даже Jython и JRuby (которые в общем случае медленны) ведут себя лучше, чем их нежабные собратья.

franchukroman ★★☆ ()
Ответ на: комментарий от franchukroman

Ну вот и зачем спрашивать было, если сам все за меня ответил? :)

provaton ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.