The OpenNET Project / Index page

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

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

19.08.2011 15:55

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

Из новшеств, добавленных в PyPy 1.6, можно выделить:

  • Обеспечение совместимости с CPython 2.7.1, PyPy может выступать в роли замены данной версии Python. Кроме того добавлена экспериментальная поддержка загрузки CPython-расширений, написанных на языке Си;
  • Продолжена работа по увеличение производительности. По сравнению с прошлым выпуском отмечается увеличение скорости работы на 20-30%. Например, если при прохождение тестового набора в среднем PyPy 1.5 был быстрее CPython 2.7 в 3.6 раз, но версия PyPy 1.6 быстрее уже в 4.3 раза. Увеличение скорости достигнуто благодаря оптимизации различных подсистем PyPy, таких как сборщик мусора, JIT-компилятор, код накопления статистики для JIT. Кроме того, проведена работа по увеличению качества генерируемого JIT машинного кода и работы Python-интерпретатора;
  • В комплект включен JitViewer, инструментарий для визуализации процесса преобразования кода встроенным JIT-компилятором, что дает возможность наглядно разобраться, какой именно Python-код и как компилируется в ассемблерное представление;
  • Расширена поддержка CPython API для написания модулей-расширений, что позволило увеличить число поддерживаемых в PyPy сторонних модулей;
  • Поддержка многобайтных кодировок. Данная область оставалась последним звеном на пути к полному обеспечению совместимости с Python. Ранее поддерживались только однобайтные кодировки.
  • Начальная поддержка библиотеки для организации научных расчетов NumPy. Пока поддерживается только ограниченная часть API, поэтому реальные программы на базе NumPy в PyPy запустить в настоящее время не удастся. По словам разработчиков адаптация PyPy для поддержки NumPy продвигается быстро и уже скоро можно будет говорить о полной поддержке данной библиотеки;
  • Исправлено 53 ошибки.

Некоторые особенности 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. Ведется работа по адаптации для архитектуры ARM, но она ещё не завершена;
  • На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
  • На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.


  1. Главная ссылка к новости (http://morepypy.blogspot.com/2...)
  2. OpenNews: Проект PyPy представил визуализатор процесса JIT-компиляции и обрисовал ситуацию, когда PyPy быстрее языка Си
  3. OpenNews: Релиз PyPy 1.5, реализации Python, написанной на языке Python
  4. OpenNews: Проект по интеграции поддержки многопоточности в Python и релиз PyPy 1.3
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/31543-pypy
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.5, langer (?), 09:36, 20/08/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто-нибудь знает? В PyPy файлы с байт-кодом также валются рядом с исходниками?
    Или все это можно разложить, как это положено в нормальном UNIX? - сырцы отдельно, бинарники отдельно.
     
     
  • 2.8, BratSinot (?), 09:33, 21/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Или все это можно разложить, как это положено в нормальном UNIX?

    В нормальном Unix все так и было.

     
  • 2.10, k_bx (?), 08:50, 22/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Пока что PyPy ничего не создаёт, но есть шансы, что таки будет делать это в будущем. К сожалению, чтоб избавиться от этой проблемы надо переходить на Python 3.2
     
     
  • 3.11, langer (?), 10:38, 22/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > К сожалению,

    Почему к сожалению?
    Значит в Python наконец-то взялись за решение этого вопроса. Это же хорошо.

    > чтоб избавиться от этой проблемы надо переходить на Python 3.2

    Мне переходить не нужно, поскольку именно из-за этой проблемы я ушел от Питона.
    К языкам, где этой проблемы нет. Где либо нет файлов с байт-кодом, либо байт-код находится отдельно от сырцов.

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

    Надо будет посмотреть, что там в Python 3.2.

     

  • 1.6, Аноним (-), 16:04, 20/08/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > при выполнении 20 тестов производительности PyPy в среднем опережает CPython в 4.3 раза.

    А на графике вроде как все ровно наоборот, и лишь в одном месте в 1.2 раза быстрее?!

     
     
  • 2.7, Аноним (-), 16:12, 20/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> при выполнении 20 тестов производительности PyPy в среднем опережает CPython в 4.3 раза.
    > А на графике вроде как все ровно наоборот, и лишь в одном
    > месте в 1.2 раза быстрее?!

    На графике время выполнения операции, т.е. чем меньше, тем лучше.

     

  • 1.12, Аноним (-), 23:24, 24/08/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то я не догоняю, Впринципе pypy может развиваться и без CPython? Имея только правила синтаксиса и PyPy?
     

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



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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