LINUX.ORG.RU

PyPy 2.2

 ,


0

4

Вышла очередная версия PyPy — интерпретатора языка программирования Python, который написан на Python и может компилировать сам себя. PyPy 2.2 реализует поддержку языка Python версии 2.7.3. Основным нововведением является новый инкрементальный сборщик мусора, разработка которого была проспонсирована Raspberry Pi Foundation.

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

  • инкрементальный GC, избавляющий от большинства долгих пауз, возникавших в ходе сборки мусора;
  • изменен механизм работы счетчиков JIT (JIT counters);
  • NumPy разделен: PyPy содержит только core-модуль _numpypy. Модуль numpy перемещен в https://bitbucket.org/pypy/numpy, numpypy удален. Установка numpy производится отдельно;
  • уменьшен оверхед для non-inlined вызовов;
  • добавлена JIT-компиляция для кода, использующего sys.set_trace;
  • увеличена скорость работы JSON decoding;
  • увеличена скорость работы различных операций копирования буферов (например list-of-ints to int[] при работе с cffi);
  • полностью реализованы все отсутствующие методы os.xxx(), включая os.startfile() на Windows и небольшое количество редко используемых функций на Posix;
  • в numpy добавлено C API, которое взаимодействует с cpyext.

Скачать PyPy

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

★★★★★

Проверено: maxcom ()
Последнее исправление: Wizard_ (всего исправлений: 5)

Уруру! :3

anonymous
()

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

Чиво? Не рапарсил. Интерпретатор компилировать, или компилятор интерпретировать?

vada ★★★★★
()

Зачем оно нужно то?

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

PyPy состоит из стандартного интерпретатора и транслятора.

Интерпретатор полностью реализует язык Python, используя ограниченное подмножество языка, называемого RPython (Restricted Python). В отличие от стандартного Python, RPython является статически типизированным для более эффективной компиляции[2].

Транслятор является набором инструментов, который анализирует код RPython и переводит его в языки более низкого уровня, такие как C, байт-код Java или CIL. Он также поддерживает подключаемые сборщики мусора и позволяет опционально включать Stackless. Также он включает JIT-компилятор для трансляции кода в машинные инструкции во время исполнения программы.

http://ru.wikipedia.org/wiki/PyPy

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

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

RPython делает глобальный вывод типов, включая модули.

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

Но значительно ближе к финальной точке назначения чем Python

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

Но я не знаю, что я делаю и к чему это приведет :)

Первый раз я собирал его на 4gb ram со свопом, вырубил все приложения, включая иксы, и запустил сборку. Компилялось часов 5 на Core2Duo.

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

Отличная новость! Успехов им в дальнейшем !

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

Есть куча модулей вроде того же _numpypy, которые нигде в остальном коде PyPy не используется. Можно сначала собрать основной бинарник, информацию о типах сохранить. Потом собирать модули.

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

Можно сначала собрать основной бинарник, информацию о типах сохранить

Никто и не говорит, что нельзя. Просто этого не сделано.

tailgunner ★★★★★
()

который написан на Python и может компилировать сам себя.

Интересно, а если последовательно провести самокомпиляцию раз 10(причем желательно с разными опциями) то оно будет нормально работать?

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

Я собирал, но уменя ушло 2 дня. Комп был в ауте от этого.

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

Мне еще нравится как он в процессе сборки МНОЖЕСТВО МАНДЕЛЬБРОТА в консоли рисует...

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

Все так же требует 4 ГиБ ОЗУ для сборки, или уже меньше?

Мне уже доложили, и я проверил, что сама трансляция не жрет ОЗУ, а вот линковка около тысячи файлов *.o... Сделаешь так, чтобы ld не жрал ОЗУ как не в себя — не будет требовать.

shimon ★★★★★
()

NumPy разделен: PyPy содержит только core-модуль _numpypy. Модуль numpy перемещен в https://bitbucket.org/pypy/numpy, numpypy удален. Установка numpy производится отдельно;

Могу ли взять я PyPy и запустить скрипт использующий numpy без внесения каких либо изменений? Или нужно совершать какие-то дополнительные телодвижения?

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

Могу ли взять я PyPy и запустить скрипт использующий numpy без внесения каких либо изменений?

В общем случае - пока нет.

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

Почему только у pypy такая проблема?

Линковка. Тысячи. Объектных. Файлов. В один. Большой (~60 метров). Бинарник. Понимаешь?

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

К thrashing, вестимо. Но кое-как оно должно доползти до победного конца.

Ну, всё не так печально. zram решает там, где не хватает памяти. :)

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

По правде говоря, не только у pypy. Линковка файрфокса или егойного libxul.so — тоже тот еще зверь. Если памяти мало, оно будет тебе полдня своп насиловать: сунь страницу, вынь страницу.

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

Бинарник
~60 метров

Но куда столько? Оо

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

сконпелировать фуррифокс — это пара часов на моём дешёвом ноуте с i3. тут же люди рассказывают о 2 ДНЯХ. по-моему, это говорит о многом... всякие gcc, perl, ghc, python, ruby и т.д. и т.д. собираются достаточно быстро, а pypy — нет. значит, с ним что-то не так. хотя кто б сомневался...

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

В один. Большой (~60 метров). Бинарник.

Вот наркоманы. Теперь понятно :)

vurdalak ★★★★★
()

Долой всяких питонов и джав! Долой этих пожирателей вечнонехватающей памяти!

anonymous
()

portage, емнип, в pypy до сих пор нормально не умеет.

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

Еще один ушибленный ложной дихтомией «интерпретатор-компилятор».

anonymous
()

Ночной кошмар уролога

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

Могу ли взять я PyPy и запустить скрипт использующий numpy без внесения каких либо изменений? Или нужно совершать какие-то дополнительные телодвижения?

Для части скриптов теперь --- да. Но не все возможности numpy поддерживаются. Раньше это было совершенно невозможно из-за необходимости писать:

from numpypy import *

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

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

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

Нет, не понимает. В священных текстах нет никаких объектных файлов и бинарников.

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