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 ()
Последнее исправление: post-factum (всего исправлений: 5)

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

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 ★★★★
()
Ответ на: комментарий от mine

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

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

geekless ★★
()

pyglet

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

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

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

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

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

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

tailgunner ★★★★★
()

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

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

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

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

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

Binary ★★★★★
()

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

Течёт?

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

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

pylin ★★★★★
() автор топика

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

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

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

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

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

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

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

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

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

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

zz ★★★★
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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