The OpenNET Project / Index page

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

Релиз PyPy 1.8, реализации Python, написанной на языке Python

11.02.2012 12:29

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

Как обычно продолжена работа по увеличению производительности и снижению потребления памяти. В среднем PyPy 1.8 на 10% быстрее PyPy 1.7 и в 5.2 раз быстрее классического CPython 2.7.2. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.

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

  • Поддержка специализации списков. Позволяет хранить списки элементов одного типа (целые, числа с плавающей точкой, строки, в том числе unicode) так же компактно, как упакованный байтовый массив array.array, что значительно увеличит производительность и уменьшит расход памяти;
  • Доведён до готовности бэкэнд JIT для архитектуры ARMv7. Бэкенд для архитектуры PPC64 пока находится в разработке;
  • Многочисленные улучшения производительности выполнения различных конструкций на языке Python;
  • Исправления ошибок и улучшение совместимости с CPython;
  • Стандартные библиотеки Python обновлены с 2.7.1 до версии 2.7.2;
  • Продолжение реализации поддержки библиотеки для организации научных расчетов NumPy. Начиная с прошлого выпуска для PyPy создано специальное ответвление numpypy, но в версии 1.8 обеспечена возможность использования имени numpy (так как разработка ещё не завершена, следует использовать "import numpypy" перед импортом numpy). В новой версии обеспечена поддержка функций для работы с многомерными массивами, добавлена поддержка различных размеров типов dtype, портировано множество новых функций;
  • Добавлены новые хуки в JIT, позволяющие из приложения на Python подключить обработчик для JIT-операций.

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

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


  1. Главная ссылка к новости (http://permalink.gmane.org/gma...)
  2. OpenNews: Релиз PyPy 1.7, реализации Python, написанной на языке Python
  3. OpenNews: Релиз PyPy 1.6, реализации Python, написанной на языке Python
  4. OpenNews: Проект PyPy представил визуализатор процесса JIT-компиляции и обрисовал ситуацию, когда PyPy быстрее языка Си
  5. OpenNews: Релиз PyPy 1.5, реализации Python, написанной на языке Python
  6. OpenNews: Релиз PyPy 1.4, реализации Python, написанной на языке Python
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/33053-pypy
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Толя Вихров (ok), 12:42, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так у него синтаксис python 2 или 3 ?
     
     
  • 2.2, АК (?), 13:07, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Пока только 2. 3 добавят в следующую версию.
     

  • 1.3, антоним (?), 13:21, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Пора бы уже попробовать, раз уж numpy практически допилен. Кто в курсе, как там со scipy и matplotlib? ну и pyqt4 очень хотелось бы.
     
     
  • 2.24, Аноним (-), 16:00, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Статус поддержки numpy
    http://buildbot.pypy.org/numpy-status/latest.html

    а pyqt необходимо по сути привязывать почти с нуля - расширения на С в РуРу, так просто не заработают

     
     
  • 3.87, антоним (?), 18:29, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Порылся насчет pyqt4 - какой-то перец предлагает использовать его через удаленный вызов - то есть связка типа pypy <-> rpc <-> cpython+qt4. Говорит что работает. Другой перец эмбедит cpython+matplotlib через ctypes в pypy. Тоже говорит что работает. Ну, не знаю, меня такие костылища честно говоря смущают.
     
  • 2.98, NHJKM (?), 21:44, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Пора бы уже попробовать, раз уж numpy практически допилен. Кто в курсе,
    > как там со scipy и matplotlib? ну и pyqt4 очень хотелось
    > бы.

    отдельно компилировать нужно.

     

  • 1.4, Аноним (-), 13:42, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Традиционный риторический вопрос: когда оно перестанет требовать 4 гига памяти для компиляции?
     
     
  • 2.97, NHJKM (?), 21:43, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    компиляции?
     
     
  • 3.108, Df232z (ok), 08:05, 13/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Компиляции.
     
     
  • 4.109, антоним (?), 12:00, 13/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    трансляции, в терминах авторов PyPy
     
  • 2.110, Ищавин (ok), 20:23, 13/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня только 3,68Гб заюзало, прогресс :)
     

  • 1.10, Аноним (-), 14:13, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    То есть PyPy, запущенный на CPython, быстрее выполняет код, чем просто CPython?о_О
    А если запустить PyPy на PyPy, запущенный на CPython, это будет еще быстрее?
     
     
  • 2.13, Аноним (-), 14:26, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PyPy написан на RPython, который компилируется в машинный код. Скомпилированный PyPy работает быстрее, чем CPython. При этом RPython является подмножеством Python, поэтому PyPy можно запускать и в режиме интерпретации, из-под обычного питона или самого PyPy - это очень удобно для отладки, но в таком варианте PyPy, конечно, медленнее того питона, которым запускается.
     

  • 1.93, Аноним (93), 19:51, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >>реализации Python, написанной на языке Python

    Да здравствует рекурсия!

     
     
  • 2.95, Аноним (-), 20:21, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это не рекурсия, а self-hosted/bootstrapping. Разницу все-таки понимать надо.
     
  • 2.99, Anonas (?), 22:19, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Если чё, gcc тоже мопилится ggc'ой. Так что рекурсия бутстраппингу рознь.
     
     
  • 3.100, Аноним (-), 22:24, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Если чё, рекурсия - это не только вызов функцией самой себя в каком-нибудь языке программирования.
     
  • 3.102, Аноним (-), 22:31, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    На gcc компилируется новый gcc, на котором компилируется новый gcc, на котором компилируется новый gcc, на котором компилируется новый gcc...

    Угадай, что общего у bootstrapping и рекурсии?

     
     
  • 4.105, Аноним (-), 08:12, 12/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Угадай, что общего у bootstrapping и рекурсии?

    Bootstrapping != рекурсия. Можно собрать старым gcc новый gcc, а потом новым gcc самого себя. Наиболее интересным вопросом является "блин, а как же появился самый первый gcc?!", что и называется словом bootstrapping :)

     

  • 1.94, EUGENE (?), 20:10, 11/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В 5 раз быстрее CPython - супер
     
     
  • 2.101, Аноним (-), 22:28, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > В 5 раз быстрее CPython - супер

    Что-то на графике из новости этого не заметно - там он как-то сильно внизу. Или я что-то не понял?

     
     
  • 3.103, Аноним (-), 22:32, 11/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Там забыли написать, что lower is better. Это время выполнения же, как я понимаю.
     
     
  • 4.104, Аноним (-), 08:10, 12/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть они тогда еще и с си сравнят, раз уж статическая типизация и все такое ;]
     
     
  • 5.106, www (??), 08:20, 12/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    где ты увидел статическую типизацию?

    ты путаешь PyPy c ShedSkin!

    http://code.google.com/p/shedskin/

     
  • 5.107, AK (??), 00:41, 13/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >Пусть они тогда еще и с си сравнят, раз уж статическая типизация и все такое ;]

    А какая разница какая типизация. В python'e она динамическая, но строгая. Хотите с Си сравнить ну скомпилите *.py файлы в gcc и сравниваете cython позволяет любой исходник на python скомпилировать обычным gcc.

     

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



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

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