Релиз PyPy 1.9, реализации Python, написанной на языке Python
Доступен релиз проекта PyPy 1.9, в рамках которого разрабатывается реализации языка Python, написанная на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython).В новом выпуске, отмечено исправления ошибок, улучшение совместимости с Python-проектами, значительный прогресс в обеспечении поддержки библиотекой для проведения научных расчётов numpypy, улучшение поддержки платформ Windows и Mac OS X, продолжение развития бэкэндов JIT для архитектур ARMv7 и PPC64. Из новшеств можно выделить реализацию метода мультиплексирования соединений select.kqueue с использованием механизма kqueue из FreeBSD и поддержку создания и манипулирования Си-подобными структурами, используя только модуль _ffi, который в отличие от ctypes более оптимален для работы JIT.
Кроме того, продолжена работа по увеличению производительности и снижению потребления памяти. В среднем PyPy 1.9 на 4% быстрее PyPy 1.8 и в 5.5 раз быстрее классического CPython 2.7.2. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
Основные особенности PyPy:
- Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);
- Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
- Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
- PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.7;
- Поддержка работы на архитектурах x86 (IA-32) , x86_64 и ARMv7. Ведется работа по адаптации для архитектуры PowerPC (PPC64), но она ещё не завершена;
- На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
- На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.
© OpenNet