Релиз PyPy 5.8, реализации Python, написанной на языке Python
Представлен новый выпуск проекта PyPy 5.8, в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Выпуск подготовлен одновременно для веток PyPy2.7 и PyPy3.5, обеспечивающих поддержку синтаксиса Python 2.7 и Python 3.5, и поставляемых с stdlib 2.7.13 и 3.5.3. Выпуск PyPy2.7 5.8 доступен для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS и Windows, а выпуск PyPy3.5 5.8 только для Linux x86_64.
Особенностью PyPy является использование JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, что позволяет обеспечить высокий уровень производительности — при выполнении некоторых операций PyPy в несколько раз обгоняет классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти — общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
Основные улучшения:
- Устранены критические ошибки в реализации одной из стратегий сборки мусора, приводящие к крахам многопоточных приложений и редко однопоточных;
- Значительно увеличена производительность функций pack* и unpack* из модуля struct, особенно при работе с обычными буферами и байтовыми массивами. В синтетических тестах наблюдается ускорение от 2 до 10 раз;
- В базовый интерпретатор добавлена, но пока отключена по умолчанию, возможность сборки с использованием оптимизаций на этапе связывания (LTO) и учётом данных профилирования, накопленных в процессе выполнения программы (PGO, Profile-guided optimization), которые позволяют добиться повышения скорости выполнения кода, для которого не применяется JIT;
- При финансовой поддержке Mozilla из CPython 3.5 перенесены некоторые исправления и обеспечена полная поддержка многоэтапной инициализации модулей (PEP 489);
- До версии 1.10.1 обновлён модуль CFFI (C Foreign Function Interface) с реализацией интерфейса для вызова функций, написанных на языке Си, который может выступать в качестве более простой альтернативы модулю ctypes;
- Обеспечена поддержка на днях вышедшего релиза научной библиотеки NumPy 1.13.0, для которого реализованы все недостающие возможности C-API, что положительно повлияло на совместимость и с другими Си-модулями.
© OpenNet