LINUX.ORG.RU

Pypy


8

0

Всего сообщений: 14

Релиз PyPy 7.0

Группа Open Source

Состоялся релиз PyPy 7.0 — свободной реализации Python для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS (x86_64), OpenBSD, FreeBSD и Windows (x86). Особенностью PyPy является JIT-компиляция, на лету транслирующая некоторые элементы в машинный код, что позволяет очень сильно ускорить приложение.

Что нового:

  • Представлен первый альфа-выпуск PyPy3.6, предоставляющий поддержку Python 3.6.
  • Добавлена возможность подключения обработчиков к сборщику мусора (GC hooks), позволяющих на низком уровне управлять поведением сборщика мусора.
  • Обновлены модули CFFI 1.12 и cppyy 1.4 с реализацией интерфейса для вызова функций, написанных на языках Си и C++.
  • В ветках PyPy 3.5 и PyPy 3.6 появилась поддержка cppyy, который раньше был доступен только в PyPy 2.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.
  • Код для перевода внутреннего представления строк на UTF-8 в релиз не вошёл.

>>> Подробности

 ,

Deleted
()

Сдвоенный выпуск PyPy2.7 и PyPy3.5 v6.0

Группа Open Source

Команда разработчиков PyPy выпустила PyPy2.7 v6.0 (интерпретатор, поддерживающий синтаксис Python 2.7) и PyPy3.5 v6.0 (интерпретатор, поддерживающий синтаксис Python 3.5). Оба выпуска во многом основаны на единой кодовой базе, что и позволило подготовить их совместный выход.

PyPy — совместимый интерпретатор Python, во многом годящийся на бесшовную замену CPython 2.7 и CPython 3.5. PyPy быстр (сравнение производительности PyPy и CPython 2.7.x), благодаря встроенному трассирующему JIT-компилятору.

( читать дальше... )

>>> Подробности

 ,

Virtuos86
()

PyPy2.7 5.6

Группа Open Source

Выпущена новая версия PyPy — транслятора языка Python, использующего подмножество языка RPython (статически типизированный Python).

PyPy использует встроенный JIT-компилятор для трансляции кода в машинные инструкции во время исполнения программы.

( читать дальше... )

>>> Подробности

 ,

inchallah
()

Mozilla спонсирует поддержку Python 3.5 в PyPy

Группа Open Source

Разработчики PyPy, высокопроизводительной реализации языка Python с поддержкой JIT-компиляции, объявили, что компания Mozilla выделила проекту грант в $200,000 на поддержку функциональности Python 3.5. Грант был выделен в рамках программы поддержки открытых проектов Mozilla Open Source Support. Всего в рамках этой программы предлагается выделить (на все участвующие проекты) три с половиной миллиона долларов.

На данный момент PyPy поддерживает только спецификации Python 2.7 и 3.2 (а также 3.3 в альфа-версии), причём версия 2.7 является приоритетной. Сам интерпретатор PyPy написан на подмножестве языка Python 2.7, которое компилируется в машинный код. Работы над версией с поддержкой Python 3 (PyPy3) до сих пор шли не очень активно. Полученные от Mozilla деньги пойдут на зарплату четырём опытным разработчикам PyPy, которые будут в течение года на постоянной основе (на полставки) работать над PyPy3.

Разработчики надеются, что им удастся не только реализовать всю недостающую функциональность, но и увеличить производительность PyPy3, которая сейчас ниже, чем у PyPy для Python 2.

>>> Подробности

 , ,

proud_anon
()

PyPy 2.2

Группа Open Source

Вышла очередная версия PyPy — интерпретатора языка программирования Python, который написан на Python и может компилировать сам себя. PyPy 2.2 реализует поддержку языка Python версии 2.7.3. Основным нововведением является новый инкрементальный сборщик мусора, разработка которого была проспонсирована Raspberry Pi Foundation.

Основные изменения:

  • инкрементальный GC, избавляющий от большинства долгих пауз, возникавших в ходе сборки мусора;
  • изменен механизм работы счетчиков JIT (JIT counters);
  • NumPy разделен: PyPy содержит только core-модуль _numpypy. Модуль numpy перемещен в https://bitbucket.org/pypy/numpy, numpypy удален. Установка numpy производится отдельно;
  • уменьшен оверхед для non-inlined вызовов;
  • добавлена JIT-компиляция для кода, использующего sys.set_trace;
  • увеличена скорость работы JSON decoding;
  • увеличена скорость работы различных операций копирования буферов (например list-of-ints to int[] при работе с cffi);
  • полностью реализованы все отсутствующие методы os.xxx(), включая os.startfile() на Windows и небольшое количество редко используемых функций на Posix;
  • в numpy добавлено C API, которое взаимодействует с cpyext.

Скачать PyPy

>>> Подробности

 ,

encyrtid
()

В PyPy появилась поддержка STM

Группа Open Source

Спустя два года после начала работы в PyPy была добавлена начальная поддержка Software Transactional Memory (STM). STM позволяет избавить многопоточные приложения от блокировок.

Первые результаты показали очень хорошее масштабирование: выполнение кода в 8 потоков на неназванном четырёхъядерном процессоре увеличило скорость в 4.6 раза (процессор был с hyper-threading).

К сожалению, пока поддержка STM далека от оптимальной. Она создаёт значительные накладные расходы и на однопоточных приложениях скорость PyPy-STM не сильно отличается от CPython. Разработчики обещают в будущем исправить эту досадную проблему.

>>> Подробности

 ,

true_admin
()

Вышел PyPy 2.0

Группа Open Source

9 мая вышла версия PyPy 2.0 с кодовым названием «Einstein Sandwich». PyPy — интерпретатор языка Python со встроенным tracing JIT. Основными изменениями по сравнению с PyPy 1.9 являются:

Планируется, что версия 2.0 послужит стабильной базой для более частых релизов (вероятно, для создания действительно быстрых интерпретаторов Ruby и PHP).

Не вошли в официальный анонс, но тоже немаловажны:

И, наконец (я знал, что вы спросите): работа по распараллеливанию PyPy ведется не слишком активно, но есть ветка STM.

Cравнение скорости PyPy и CPython на синтетических бенчмарках

>>> Подробности

 , ,

tailgunner
()

Анонсирован проект Topaz — реализация языка Ruby на Python

Группа Open Source

На свет появилась новая реализация языка Ruby — Topaz. Проект примечателен тем, что для его разработки был использован RPython — набор инструментов для трансляции, разрабатываемый в рамках проекта PyPy. Использование RPython, по мнению разработчиков, позволит создать по-настоящему высокопроизводительную реализацию ЯП Ruby с быстрым сборщиком мусора и современным JIT.

Разработка началась 10 месяцев назад. В данный момент поддерживаются практически все синтаксические конструкции языка, однако отсутствует большинство встроенных методов и практически не реализована стандартная библиотека.

В ближайшем будущем разработчики намерены усердно трудиться над реализаций стандартной библиотеки и встроенных методов и расчитывают на помощью сообщества в этом нелегком деле.

Репозиторий на github

>>> Подробности

 , , ,

provaton
()

PyPy 1.9

Группа Open Source

Вышла очередная версия PyPy — реализация языка программирования Python, которая написана на Python и может компилировать сама себя. Основным изменением этого выпуска является значительный прирост производительности. В среднем, на тестовом пакете прирост производительности PyPy 1.8 составляет около 4%. PyPy примерно в 5,5 раз быстрее классического CPython.

Этот релиз всё еще реализует интерфейс Python 2.7.2.

( Основные улучшения )

>>> Официальный анонс, полный список улучшений

 ,

derlafff
()

PyPy 1.8

Группа Open Source

Вышла новая версия интерпретатора PyPy, который написан с использованием RPython-подмножества Python со статической типизацией. В рамках данного проекта реализован JIT компилятор. Скорость его работы на 10% выше, чем у PyPy 1.7 и в 5.2 раза выше, чем у классического CPython. Было выполнено много работ для JIT на платформе ARM. Однако, в бочке меда есть и своя ложка дегтя: у PyPy более высокое потребление памяти, особенно на длительно работающих процессах. Особенности новой версии:

  • Добавлена специализация списков. Это позволяет уменьшить расход памяти для списков с элементами одного типа.
  • Готов бекенд для платформы ARMv7.
  • Улучшена совместимость с CPython.
  • Обновление стандартной библиотеки с версии 2.7.1 до 2.7.2.
  • Продолжена работа над поддержкой математической библиотеки Numpy, которая происходит в отдельной ветке numpypy. В версию 1.8 добавлены функции для работы с многомерными массивами, различные размеры dtype, добавлено множество новых функций. Добавлена возможность работать с именем numpy, однако, перед тем, как импортировать numpy все равно надо написать import numpypy.
  • Добавлены JIT хуки. Это позволяет писать функции, которые запускаются JIT компилятором на фазе оптимизации или окончательной трансляции кода в машинные инструкции.


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

  • Он может бесшовно заменить Python 2.7 и 2.6.
  • Поддерживаются ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet.
  • В PyPy имеется бекенд для генерации байт-кода для LLVM, NET/CLI, Java.
  • Поддерживается обмен данными между микропотоками в рамках одного потока, выделенного операционной системой.
  • Поддерживается «песочница» для не доверенного кода с полными возможностями без выделения небезопасных функций, в отличие от CPython.
  • Поддерживаются архитектуры: x86 (IA-32), x86_64 и ARMv7. Ведется работа над поддержкой PowerPC (PPC64).
  • PyPy используется для тестирования новых концепций и возможностей языка Python.

Сайт проекта

Страница загрузок

Тесты скорости PyPy

Описание идеи, лежащей в основе PyPy

>>> Подробности

 , , ,

pylin
()

PyPy 1.7

Группа Open Source

Вышла очередная версия PyPy — интерпретатора языка программирования Python, который написан на Python и может компилировать сам себя. Основным изменением этого выпуска является значительный прирост производительности. В среднем на тестовом пакете, прирост производительности PyPy 1.7 составляет около 30%, по сравнению с PyPy 1.6 и до 20 раз быстрее на некоторых тестах.

Основные изменения:

  • исправление ошибок, совместимость исправлений с CPython;
  • исправления в Windows-версии;
  • в PyPy 1.7 по умолчанию включен stackless;
  • NumPy был переименован в numpypy;
  • JSON encoder заменен на новый, написанный на чистом Python, превосходящий по скорости CPython с расширениями на С в 2 раза;
  • уменьшено потребление памяти некоторыми RPython модулями.

Ссылка для загрузки.

>>> Подробности

 , ,

encyrtid
()

PyPy 1.6 — новые рекорды

Группа Open Source

PyPy — достаточно совместимый Python интерпретатор, является почти полной заменой CPython 2.7.1, а благодаря трассирующему JIT-компилятору превосходит его по скорости.

Главными особенностями этого релиза стали скорость и стабильность. В среднем тесты производительности показывают, что PyPy 1.6 стал на 20-30% быстрее предыдущей версии, которая уже оставляла далеко позади CPython.

Это стало возможным вследствие комплексных изменений, улучшены Garbage Collector (GC), время разогрева JIT и проводимые им оптимизации, качество генерируемого машкода и реализация собственно интерпретатора.

В этой версии:

  • улучшено поведение GC на очень больших объектах и массивах;
  • ускорен ctypes: теперь вызовы оптимизируются JIT и до 60 раз быстрее чем в PyPy 1.5 и в 10 раз быстрее чем в CPython;
  • простые генераторы теперь разворачиваются в цикл по месту вызова, что дает прирост производительности в 3.5 раза, остальные генераторы были тоже оптимизированы и теперь быстрее на 10-20%, чем в PyPy 1.5;
  • поддержка плавающих одинарной точности в JIT, например array('f');
  • улучшен формат хранения словарей в зависимости от их содержимого, что дало прирост скорости и уменьшение расхода памяти, например, для словарей, у которых ключи только строки или целые; размеры остальных словарей также были уменьшены, благодаря исправленным ошибкам;
  • в поставку включен JitViewer — веб-инструмент, помогающий узнать какие части приложения были затронуты JIT, вплоть до ассемблера;
  • расширен список поддерживаемых C-модулей;
  • появились многобайтные кодировки;
  • первоначальная поддержка NumPy (теперь он очень быстр), интегрированная с JIT; к сожалению, API пока не полный и не каждое приложение сможет работать.

Анонс

>>> Страница загрузки

 , ,

baverman
()

Реализация PyPy языка Python избавляется от глобальных блокировок

Группа Open Source

Глобальные блокировки в CPython (стандартная реализация языка python) долгое время были камнем преткновения и предметом многочисленных споров. В реализации PyPy, до недавнего времени, была применена схожая техника разграничения доступа к общим данным.

В настоящее время команда разработчиков проекта PyPy работает над альтернативным алгоритмом разграничения доступа к общим данным. Вместо блокировок предлагается использовать транзакции по аналогии с базами данных.

Вместо прямого изменения содержимого оперативной памяти программа работает со специальной областью (транзакционной памятью), в которую вносятся все изменения. По завершению обработки эти изменения атомарно вносятся в память программы. В случае обнаружения коллизии с другими транзакциями, изменения вносятся только от первой транзакции; остальные транзакции отменяются и отправляются на повторное выполнение.

Это оптимистичный алгоритм, каждая нить выполняют код без учёта того что делают другие нити.

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

В целом, хотя новый подход и имеет недостатки, он позволяет радикально улучшить производительность многих устоявшихся шаблонов проектирования. Например, в ситуации, когда каждая нить работает только со своими данными. В частности, это позволит эффективно масштабировать на многопроцессорных системах большинство серверных приложений.

>>> Подробности

 , ,

true_admin
()

Вышла новая версия PyPy: PyPy 1.5

Группа Open Source

30 апреля было объявлено о выходе новой версии PyPy — интерпретатора Python, написанного в основном на чистом Python и специальном подмножестве языка Python: Rpython. Имеет в своём составе поддержку stackless-режима и JIT-компиляции. К тому же PyPy можно рассматривать как экспериментальную площадку развития Python, так как новые возможности языка реализуются в нём быстрее и легче.

Изменения новой версии:

  • Новый выпуск включает в себя возможности Python 2.6 и 2.7.
  • Добавлена новая оптимизация JIT компилятора: теперь он может определять какие участки кода можно выносить за пределы цикла, не нарушая семантику тела цикла.
  • Расширена поддержка API для C-расширений CPython. Это даёт возможность использования IDLE и Tkitner вместе с PyPy.
  • cProfiler теперь может работать с JIT.
  • Выполнен форк RPython, где реализована поддержка PostgreSQL.
  • Разработчики проекта перевели документацию на систему Sphinx.
  • PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.6 и CPython 2.7.

По сравнению с версией 1.4 скорость возросла в среднем на 25%.

>>> Подробности

 , ,

pylin
()