Выпуск PyPy 2.6, реализации Python, написанной на языке Python
Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
Новшества, добавленные в PyPy 2.6:
- До версии 1.1 обновлён модуль CFFI (C Foreign Function Interface) с реализацией интерфейса для вызова функций, написанных на языке Си, который может выступать в качестве более простой альтернативы модулю ctypes;
- Добавлена предварительная поддержка системы статического профилирования vmprof, которая изначально рассчитана на профилирование кода, сгенерированного JIT-компилятором;
- Проведена работа по улучшению совместимости с Python: добавлена поддержка переменной окружения PYTHONOPTIMIZE, улучшена поддержка TLS 1.1 и 1.2, в сборку для платформы Windows помимо pypy.exe включен исполняемый файл pypyw.exe, устранены проблемы, выявленные в прошлом выпуске PyPy;
- Расширены возможности интегрированной математической библиотеки Numpy, в которой появилась поддержка объекта dtype, реализованного через привязку в сборщике мусора. Добавлены типы .can_cast и .min_scalar_type. Улучшена поддержка подтипов, реализованная через методы _array_interface__, __array_priority__ и __array_wrap__. Улучшена поддержка опций ndarray.flags;
- Продолжена работа по оптимизации JIT-компилятора, проведён внутренний рефакторинг и чистка кода, связанного с работой JIT. Увеличена производительность ввода/вывода в модулях zlib и bz2. Достигнуто семикратное опережение CPython в тестах производительности.
Основные особенности PyPy:
- Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу);
- Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
- Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
- PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.7;
- Поддержка работы на архитектурах x86 (IA-32) , x86_64 и ARM. Ведется работа по адаптации для архитектуры PowerPC (PPC64), но она ещё не завершена;
- На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
- На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, Ruby, JavaScript, Io и Scheme.
- Версия PyPy с поддержкой Python 3 развивается в рамках проекта Py3k;
- Вариант PyPy с поддержкой распараллеливания на многоядерных системах развивается в рамках проекта PyPy-STM (PyPy Software Transactional Memory).
Источник: http://www.opennet.ru/opennews/art.shtml?num=42339
|
0 | Tweet | Нравится |
|