Окт 29, 2015 - 0 Comments - Интересно -

Выпуск PyPy 4.0, реализации Python, написанной на языке Python

29.10.2015 23:58 Выпуск PyPy 4.0, реализации Python, написанной на языке Python

Состоялся релиз PyPy 4.0, реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython, Restricted Python). В отличие от прошлых выпусков, в версии PyPy 4.0 впервые наблюдается снижение производительности: новый выпуск в среднем на 1.5% медленнее прошлой версии PyPy, но по-прежнему в 7 раз быстрее классического CPython 2.7. Выпуск доступен для x86-систем Linux 32/64, OpenBSD, FreeBSD, OS X 64 и Windows 32, а также для систем на базе архитектуры ARM (ARMv6 или ARMv7 с VFPv3) и PowerPC (ppc64).

Значительная смена номера версии не означает кардинальных изменений и связана с переходом на новую схему нумерации выпусков. Так как следом за прошлым выпуском PyPy 2.6 должен был следовать номер 2.7, разработчики решили избежать возможных пересечений с нумерацией CPython 2.7 и перейти к номерам версий, заведомо отличающимся от актуальных выпусков Python. Ветка PyPy 4 продолжает поддерживать совместимость с CPython 2.7.10 и может рассматриваться как продолжение ветки PyPy 2.x.

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

Новшества, добавленные в PyPy 4.0:

  • В оптимизатор добавлена поддержка векторизации циклов с использованием инструкций SIMD. Векторизация осуществляется в процессе выполнения кода, что позволяет учитываться статистику выполнения и более оптимально использовать данный вид оптимизацию по сравнению с применением упреждающей компиляции. Определение поддержки инструкций SIMD также выполняется на лету и не требует включения в исполняемый файл предкомпилированного кода. Векторизация пока отключена по умолчанию и требует указания опции «—jit vec_all=1». Тесты производительности демонстрируют заметное ускорение выполнения функций математической библиотеки NumPyPy.
  • Проведён внутренний рефакторинг JIT-компилятора, который позволил на 20% сократить время «разогрева» JIT и на 20% снизить потребление памяти, ценой небольшого снижения производительности.
  • Расширены возможности интегрированной математической библиотеки Numpy, в которой приблизилась к полнофункциональному состоянию реализация типов ndarray и numeric, обеспечена поддержка типов record, string и unicode. Переработаны модули linalg, random и fft, которые переведены на интерфейс cffi-1.0 и теперь используют библиотеки, аналогичный основному проекту numpy.
  • До версии 1.3 обновлён модуль CFFI (C Foreign Function Interface) с реализацией интерфейса для вызова функций, написанных на языке Си, который может выступать в качестве более простой альтернативы модулю ctypes. В новой версии улучшено управление жизненным циклом объектов, добавлен вызов __stdcall на платформе Win32, реализована поддержка ffi.memmove();
  • Обеспечена поддержка 64-разрядных PowerPC (big- и little-endian вариантов ppc64).

Основные особенности PyPy:

  • Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу);
  • Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
  • Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
  • PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.7;
  • Поддержка работы на архитектурах x86 (IA-32) , x86_64 и ARM. Ведется работа по адаптации для архитектуры PowerPC (PPC64), но она ещё не завершена;
  • На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
  • На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, Ruby, JavaScript, Io и Scheme.
  • Версия PyPy с поддержкой Python 3 развивается в рамках проекта Py3k;
  • Вариант PyPy с поддержкой распараллеливания на многоядерных системах развивается в рамках проекта PyPy-STM (PyPy Software Transactional Memory).
  1. Главная ссылка к новости (http://morepypy.blogspot.ru/20…)
  2. OpenNews: Выпуск PyPy 2.6, реализации Python, написанной на языке Python
  3. OpenNews: PyPy.js — реализация языка Python для web-браузеров
  4. OpenNews: Выпуск PyPy3 2.4, реализации Python 3, написанной на языке Python
  5. OpenNews: Первый выпуск PyPy-STM, интерпретатора Python с поддержкой многоядерных систем
  6. OpenNews: Первый стабильный выпуск PyPy3 с поддержкой Python 3
Тип: Программы
Ключевые слова: pypy, python, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
 
–1 +/
> в версии PyPy 4.0 впервые наблюдается снижение производительности

решили начать делать тру энтерпрайз продукт, однако.

> Так как следом за прошлым выпуском PyPy 2.6 должен был следовать номер 2.7, разработчики решили избежать возможных пересечений с нумерацией CPython 2.7 и перейти к номерам версий, заведомо отличающимся от актуальных выпусков Python.

ещё одни клоуны… когда же это закончится.

 
+/
Писи-каки и спать.
Это дедушка Вирт ещё мог поржать, что первый адекватный компилятор паскаля был написан на паскале.
Но питон (а ПиПи это одна из самых адекватных реализаций) мог бы и промолчать и не светить джитом.
 

Ваш комментарий
 

This entry passed through the Full-Text RSS service — if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


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

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

Человек ? *