Опубликован (https://morepypy.blogspot.com/2019/02/pypy-v700-triple-relea...) релиз проекта PyPy 7.0 (http://pypy.org/), в рамках которого развивается реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython (http://doc.pypy.org/en/latest/coding-guide.html#id1), Restricted Python). Выпуск подготовлен одновременно для веток PyPy2.7, PyPy3.5 и PyPy3.6 (альфа-версия), обеспечивающих поддержку синтаксиса 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-компилятора, на лету транслирующего некоторые элементы в машинный код, что позволяет обеспечить высокий (http://speed.pypy.org/) уровень производительности - при выполнении некоторых операций PyPy в несколько раз обгоняет классическую реализацию Python на языке Си (CPython). Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.
В новом выпуске (http://doc.pypy.org/en/latest/release-v7.0.0.html):
- Представлен первый альфа-выпуск новой ветки PyPy3.6, предоставляющей поддержку Python 3.6;
- Добавлена возможность подключения обработчиков к сборщику мусора (GC hooks (https://morepypy.blogspot.com/2019/01/pypy-for-low-latency-s...)), позволяющих на низком уровне управлять поведением сборщика мусора, отключая его в моменты, требующие предсказуемой производительности или отсутствия задержек. Следует иметь в виду, что при отключении сборки мусора может наблюдаться неконтролируемый рост потребления памяти. Управление производится при помощи двух функций: gc.disable() для отключения автоматического сборщика мусора и gc.collect_step() для ручного выполнения отдельных шагов для сборки мусора;
- Обновлены модули CFFI 1.12 (C Foreign Function Interface) и cppyy 1.4 с реализацией интерфейса для вызова функций, написанных на языках Си и C++. В ветках Py3.5 и Py3.6 появилась поддержка cppyy, ранее доступного только в PyPy2.7;
- Реализованы специфичные для Python 3.6 функции и объекты Py_ReprEnter, Py_ReprLeave(), PyMarshal_ReadObjectFromString, PyMarshal_WriteObjectToString, PyObject_DelItemString, PyMapping_DelItem, PyMapping_DelItemString, PyEval_GetFrame, PyOS_InputHook, PyErr_FormatFromCause, __set_name__, __init_subclass__;
- В основную ветку PyPy переведена разработка отладчика revdb (https://bitbucket.org/pypy/revdb) с поддержкой отладки с возвратом к более ранним состояниям (reverse debugging);
- Добавлена поддержка платформы GNU Hurd. Улучшена работа в окружении
FreeBSD (в том числе теперь работоспособна система профилирования vmprof (https://vmprof.readthedocs.io/en/latest/));
- Код для перевода внутреннего представления строк на utf8 не вошёл в релиз.
URL: https://morepypy.blogspot.com/2019/02/pypy-v700-triple-relea...
Новость: https://www.opennet.ru/opennews/art.shtml?num=50132