Релиз 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-компиляция.
© OpenNet