Релиз PyPy 6.0, реализации Python, написанной на языке Python
Как сообщает opennet.ru Состоялся выпуск проекта PyPy 6.0, в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Выпуск подготовлен одновременно для веток PyPy2.7 и PyPy3.5, обеспечивающих поддержку синтаксиса Python 2.7 и Python 3.5, и поставляемых с stdlib 2.7.13 и 3.5.3. Выпуск доступен для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS (x86_64), OpenBSD, FreeBSD и Windows (x86). PyPy3.5 5.10 отмечен как первый стабильный релиз ветки 3.5 для Linux и macOS (поддержка Windows пока имеет статус бета-версии).
Особенностью PyPy является использование JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, что позволяет обеспечить высокий уровень производительности - при выполнении некоторых операций PyPy в несколько раз обгоняет классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
В новом выпуске:
- Значительно увеличена производительность и расширена функциональность прослойки cpyext для обеспечения совместимости с C-API.
- Улучшена совместимость с CPython.
- Обеспечена генерация более понятных сообщений в случае выявления синтаксических ошибок.
- В сборщик мусора добавлена возможность подключения обработчиков для сбора информации о производительности.
- Обеспечена совместимость с бэкендом TkAgg, применяемым по умолчанию в Matplotlib, что решило проблему с поддержкой пакетов pygame и pygobject.
- Обновлены модули CFFI 1.11.5 (C Foreign Function Interface) и cppyy 0.6.0 с реализацией интерфейса для вызова функций, написанных на языках Си и C++.
Код для перевода внутреннего представления строк на utf8 не вошел в релиз. На начальной стадии находится реализация поддержки Python 3.6.