LINUX.ORG.RU

PyPy 1.9

 ,


0

4

Вышла очередная версия PyPy — реализация языка программирования Python, которая написана на Python и может компилировать сама себя. Основным изменением этого выпуска является значительный прирост производительности. В среднем, на тестовом пакете прирост производительности PyPy 1.8 составляет около 4%. PyPy примерно в 5,5 раз быстрее классического CPython.

Этот релиз всё еще реализует интерфейс Python 2.7.2.

Основные улучшения:

  • Исправлено большое количество багов для 32-битной версии Windows.
  • Улучшения в cpyext, эмуляторе для C-модулей Cpython.
  • PyOpenSSL теперь должен работать.
  • Sets теперь имеют такие же стратегии, как и dictionaries. Это значит, что, к примеру, set'ы, содержащие только значения int будут занимать меньше памяти и быстрее работать.
  • Большой прогресс в библиотеке numpypy.
  • Теперь возможно создавать и манипулировать C-подобыми структурами испульзуя специальный PyPy-модуль _ffi.
  • Бэкэнды для архитектур, отличных от x86 (ARMv7 и PPC64) также развиваются, но не включены в основную ветку.
  • JIT-хуки для контроля создаваемого ассемблерного кода были улучшены.
  • Была добавлена select.kqueue (BSD).

>>> Официальный анонс, полный список улучшений

★★★★★

Проверено: tazhate ()

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

Как я знаю: 1) rpython - компилируемый, строго-типизированный язык, на котором написан pypy. 2) pypy - интерпретатор с трассирующим jit-компилятором. Он почти полностью совместим с cpython`ом.

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

Как я понимаю, интерпретатор самого Python здесь написан на RPython, а уже этот RPython-код запускается с использованием JIT. А JIT тогда на чем написан?

(горестно вздыхая «ну пачиму никто не ходит по моим ссылкам»):

«However, in addition to outputting optimised C code, RPython automatically creates a second representation of the user's program. Assuming RPython has been used to write a VM for language L, one gets not only a traditional interpreter, but also an optimising Just-In-Time (JIT) compiler for free».

«RPython is able to do this because of the particular nature of interpreters. An interpreter, whether it be operating on bytecode or ASTs, is simply a large loop: „load the next instruction, perform the associated actions, go back to the beginning of the loop“».

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

Гугл пытался (unladen swallow) и у них не получилось. Уж слишком убого написан этот CPython. Кроме того они писали, что зря выбрали llvm - он медленный и в нем нет того, что реально нужно.

Так что писать нужно с нуля, что и делает комманда PyPy.

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

Гугл пытался (unladen swallow) и у них не получилось. Уж слишком убого написан этот CPython.

CPython как раз хорошо написан. Unladen Swallow зафейлился не из-за CPython, а из-за LLVM %)

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

Гугл пытался (unladen swallow) и у них не получилось. Уж слишком убого написан этот CPython. Кроме того они писали, что зря выбрали llvm - он медленный и в нем нет того, что реально нужно.

можно взглянуть на пруф?

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

Оксюморон — это одно слово. Ладно, так и запишем, ты даже считать не умеешь :)

Специально для тебя разверну фразу: «Видимо, от внимательного прочтения твоих трех слов, у „оксюморон“ появится новый смысл».

Не трудись отвечать.

tailgunner ★★★★★ ()

Вышла очередная версия PyPy — реализация языка программирования Python, которая написана на Python и может компилировать сама себя.

Для непросвященных, объясните: т.е. это питон, который компилируется в бинарники, причем есть возможность компилировать из скрипта на этом самом PyPy ?

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

От внимательного прочтения новый смысл появится не у слова «оксюморон», а в контексте у фразы «интерпретация с JIT».

Впрочем, если ты даже этого не заметил, то можешь тоже не отвечать :)

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

То, на чем эта реализация написанна не особенно важно

Пока дело не касается вопросов производительности. Реализация на C / C++ скорее всего была бы гораздо быстрее.

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

опять ты с этим набросом :)

конспектирую основны причины фейла, для тебя лично:

  • никому это нахрен не «впёрлось» (Lack of Sponsor Interest)
  • да-да, и автору тоже (Lack of Personal Interest)
  • llvm почему-то не поддерживает из коробки грязные задумки автора (LLVM didn't help us do that)

мне только непонятно как эти пункты пересекаются с теми на котороые был попрошен пруф, напомню:

  • Гугл пытался (unladen swallow)
  • убого написан этот CPython.
  • llvm [..] медленный
  • в нем нет того, что реально нужно
shty ★★★★★ ()
Ответ на: комментарий от niXman

niXman эвристический анализ во время выполнения, кэп ;) сишки этого неумеют :p

да знаем мы, «я просто задаю неудобные вопросы» :) но мне реально интересно, если там и в самом деле JIT, я хочу знать тесты скорости выполнения и потребления памяти в сравнении с JVM и Mono

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

Не понял, какое отношение это имеет к моему вопросу.

Там есть ответ на вопрос «на чем написан JIT».

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

Реализация на C / C++ скорее всего была бы гораздо быстрее.

Может быть, что на Си. А вот, на С++ может быть и медленнее ;)

dave ★★★★★ ()

А сколько же ему ресурсов надо чтобы скомпилировать самого себя...

Artificial_Thought ★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Но на C++ проще всего тормоза получить на ровном месте. Забабахать какой-нибудь конструктор копирования, да и копировать потом, надо или не надо.

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

Ман профайлер — да и зачем оно, если оптимизирует компилятор, а при написании учитываются особенности платформы?

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

но для чего тогда мозги программисту? а так да, достаточно только рук и пятой точки

I-Love-Microsoft ★★★★★ ()

Питон, который написан на питоне для питона и самокомпилируется... Питон настолько самодостаточный, что уже сам себя совершенствует. Ужас)

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

Говорят, у питонистов даже Аллах на питоне.

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

Может быть, что на Си. А вот, на С++ может быть и медленнее ;)

Оптимизированный машинный код все равно обгонит JIT. Тут полно несогласных, а срач на эту тему я разовдить не хочу, поэтому спорить не буду.

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

JIT и сам генерирует оптимизированный машинный код.

Насчёт всех возможностей оптимизации есть сомнения. Программист на своей машине не сможет протестить все фичи готового бинарника, как следствие, он заранее не знает, будет там неправильный результат/сегфолт или нет. Чтобы уменьшить количество таких багов, разработчики уберут из языка и компилятора часть возможностей. И зачем тогда нужна вся эта сложность, делали бы нормальный компилируемый язык со своим любимым синтаксисом и не тратили зря время.

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

ну ты лично можешь таскать этот пост везде, хоть и смысла не понимаешь - это «кагбэ» твоё дело, а вот вводить в заблуждение народ на форуме не стоит

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

Кто мешает делать эти же оптимизации на Си?

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

JIT и сам генерирует оптимизированный машинный код.

ты перечитай свою ссылочку, поймёшь в чём нюанс зарыт :)

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

А в PyPy есть какой-то отдельный компилятор RPython, который я могу беспроблемно заюзать? Например, чтобы «write a VM for language L».

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

вводить в заблуждение народ на форуме не стоит

Народ сам разберется.

ты перечитай свою ссылочку, поймёшь в чём нюанс зарыт :)

Нюанс зарыт в глубинах твоего сознания.

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

Переполняет переменную, в которой хранится время выполнения программы.

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

да понял я уже ))) не спеши коментить, может тут же исправился

я не упертый, как раз под весом аргументов легко меняю свою точку зрения, всем бы такого собеседника :)

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от tailgunner

Unladen Swallow зафейлился не из-за CPython, а из-за LLVM %)

Unladen Swallow совершенно предсказуемо загнулся из-за тупых питонщиков. А не были бы они тупыми - не были бы и питонщиками.

// lovesan

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

А в PyPy есть какой-то отдельный компилятор RPython, который я могу беспроблемно заюзать?

Если отдельно от всего PyPy, то уж точно не беспроблемно. Разрабы называют RPython «DSL для написания интерпретаторов» и не имеют планов поощрять его использование как ЯП общего назначения.

Например, чтобы «write a VM for language L».

Думаю, тебе понадобится весь PyPy, а не только компилятор RPython. Общие вопросы написания VM на RPython разъяснены по ссылке, которую я давал раньше, а вот код той VM: https://github.com/ltratt/converge

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

Что ж они ван Россума не уволят-то

Кто ж его уволит, он же памятник.

И потом, его уволишь - он еще какую-нибудь кривулину придумает, и будет их с питоном две.

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

Всмысле быстрее бы jit-ла? Да, возможно, но это наверняка не особенно критично. Главное качество генерированного jit-компилятором машинного кода.

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

Python 3 по-прежнему нет...

там есть ссылка, где ты можешь перевести пару сотен долларов, чтобы ускорить процесс.

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

Разрабы называют RPython «DSL для написания интерпретаторов»

Ну, то есть, я могу написать с помощью PyPy интерпретатор, который потом не будет тянуть за собой весь рантайм PyPy?

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