Представлен (https://morepypy.blogspot.ru/2017/06/pypy-v58-released.html) новый выпуск проекта PyPy 5.8 (http://pypy.org/), в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython (http://doc.pypy.org/en/latest/coding-guide.html#id1), 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-компилятора, на лету транслирующего некоторые элементы в машинный код, что позволяет обеспечить высокий (http://speed.pypy.org/) уровень производительности - при выполнении некоторых операций PyPy в несколько раз обгоняет классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
Основные улучшения (http://doc.pypy.org/en/latest/release-v5.8.0.html):
- Устранены критические ошибки в реализации одной из стратегий сборки мусора, приводящие к крахам многопоточных приложений и редко однопоточных;
- Значительно увеличена производительность функций pack* и unpack* из модуля struct, особенно при работе с обычными буферами и байтовыми массивами. В синтетических тестах наблюдается ускорение от 2 до 10 раз;
- В базовый интерпретатор добавлена, но пока отключена по умолчанию, возможность сборки с использованием оптимизаций на этапе связывания (LTO) и учётом данных профилирования, накопленных в процессе выполнения программы (PGO, Profile-guided optimization), которые позволяют добиться повышения скорости выполнения кода, для которого не применяется JIT;
- При финансовой поддержке Mozilla из
CPython 3.5 перенесены некоторые исправления и обеспечена полная поддержка многоэтапной инициализации модулей (PEP 489 (https://www.python.org/dev/peps/pep-0489/));
- До версии 1.10.1 обновлён модуль CFFI (https://cffi.readthedocs.org/en/latest/) (C Foreign Function Interface) с реализацией интерфейса для вызова функций, написанных на языке Си, который может выступать в качестве более простой альтернативы модулю ctypes (http://python.net/crew/theller/ctypes/);
- Обеспечена поддержка на днях вышедшего (http://www.mail-archive.com/python-announce-list@python...) релиза научной библиотеки NumPy 1.13.0, для которого реализованы все недостающие возможности C-API, что положительно повлияло на совместимость и с другими Си-модулями.
URL: https://morepypy.blogspot.ru/2017/06/pypy-v58-released.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=46676