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

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

В новом выпуске

  • Представлен первый альфа-выпуск новой ветки PyPy3.6, предоставляющей поддержку Python 3.6;
  • Добавлена возможность подключения обработчиков к сборщику мусора (GC hooks), позволяющих на низком уровне управлять поведением сборщика мусора, отключая его в моменты, требующие предсказуемой производительности или отсутствия задержек. Следует иметь в виду, что при отключении сборки мусора может наблюдаться неконтролируемый рост потребления памяти. Управление производится при помощи двух функций: 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 с поддержкой отладки с возвратом к более ранним состояниям (reverse debugging);
  • Добавлена поддержка платформы GNU Hurd. Улучшена работа в окружении FreeBSD (в том числе теперь работоспособна система профилирования vmprof);
  • Код для перевода внутреннего представления строк на utf8 не вошёл в релиз.

Источник: OpenNET