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

Опубликован релиз проекта PyPy 7.1, в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Выпуск подготовлен одновременно для веток PyPy2.7, PyPy3.5 и PyPy3.6 (beta-версия), обеспечивающих поддержку синтаксиса Python 2.7, Python 3.5 и Python 3.6. Выпуск доступен для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS (x86_64), OpenBSD, FreeBSD и Windows (x86).

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

Новый выпуск примечателен переработкой внутреннего представления строк. Строки теперь изначально хранятся в кодировке utf8. Изменение позволило заметно поднять производительность работы со строками за счёт избавления от выполнения перекодирования. Перевод строк на utf-8 пока принят только в ветку PyPy 3.5, но в ближайшее время также ожидается и в ветке 3.6. Из других изменений отмечается улучшение работы python-интерфейса buffer со структурами и массивами ctype, что позволило оптимизировать совместный доступ к буферам между ctypes и NumPy. Обновлён модуль CFFI 1.12.2 (C Foreign Function Interface) с реализацией интерфейса для вызова функций, написанных на языках Си и C++. CFFI рекомендован для взаимодействия с кодом на Си, в то время как cppyy для кода на C++.

© OpenNet