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

11 февраля 2012 года

Доступен релиз проекта 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.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз PyPy 1.8, реализации Python, написанной на языке Python», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.