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

Представлен релиз проекта PyPy 1.4, в рамках которого разрабатывается реализации языка Python, написанная на языке Python. Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, минуя фазу интерпретации байткода в виртуальной машине, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти.

В PyPy также поддерживается бесстековый (Stackless) режим работы, позволяющий добиться массового параллельного выполнения микро-нитей (micro-threads). Для выполнения кода к которому нет доверия реализован режим изолированного выполнения, отличающегося от sandbox в CPython полной поддержкой всех возможностей языка, без выделения unsafe-функций. Дополнительно на базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java. Отдельно на базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.

При подготовке новой версии проведена большая работа по увеличению производительности, подготовлен 64-разрядный JIT-бэкенд и стабилизирована кодовая база. По заявлению разработчиков, 32- и 64-разрядные версии PyPy уже достаточно стабильны на платформе Linux и готовы для промышленной эксплуатации. Более того, версия PyPy 1.4 является первым релизом, который транслирует самого себя быстрее, чем CPython.

Некоторые особенности релиза PyPy 1.4:

  • Встроенный в PyPy JIT-компилятор генерируется автоматически и полностью прозрачен. Потребление памяти снижено до разумных границ, например, общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза при примерно двухкратном росте производительности выполнения;
  • Экземпляры классов теперь хранятся в более компактном представлении, настолько компактном, как если был они были созданы с атрибутом __slots__, что приводит к значительному снижению расхода памяти;
  • PyPy теперь полностью совместим с пакетом virtualenv, позволяющим создавать собственные виртуальные окружения Python;
  • Ускорена работа регулярных выражений, для оптимизации которых дополнительно задействована JIT-компиляция. Модуль «re» теперь работает значительно быстрее;
  • При вызове многих функций, например, map() теперь используется JIT-компиляция.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.