The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

29.10.2015 23:58

Состоялся релиз 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
Лицензия: CC-BY
Тип: Программы
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, all_glory_to_the_hypnotoad (ok), 00:10, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    > в версии PyPy 4.0 впервые наблюдается снижение производительности

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

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

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

     
     
  • 2.5, Аноним (-), 02:23, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > ещё одни клоуны... когда же это закончится.

    не раньше, чем ты дашь дуба

     
  • 2.12, VLA (?), 11:04, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да, когда же вы уже закончитесь
     

  • 1.2, Кир (?), 00:51, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А что там, кстати, слышно про Pyston, который вроде как альтернатива PyPy? Кто шустрее и лучшее?
     
     
  • 2.9, Аноним (-), 07:21, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Если вам нужно шустрее, то любой интерпретатор пайтона не для вас.
     
  • 2.10, Аноним (-), 08:44, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Питон по определению медленный, почитайте философию: https://ru.wikipedia.org/wiki/Python . В ней 19 пунктов, которые следует знать каждому питонисту!!! И в ней нет пункта про скорость и потребление памяти, иначе бы он противоречил другим пунктам. Без замедления кода и увеличения потребления памяти на порядки эту философию в полном объеме в принципе не возможно соблюдать.
     
     
  • 3.18, Аноним (-), 12:50, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Если пункты про философию из import this, тогда это вообще про другое.
     
  • 3.34, Аноним (-), 00:22, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Можно взять и перенести систему отступов в компилируемый язык. Есть снижение читаемости? Сказано "Явное лучше, чем неявное. Ошибки никогда не должны замалчиваться. Встретив двусмысленность, отбрось искушение угадать." Тогда почему объявление переменных так неявно? Достаточно писать в начале что-то типа var и уже можно определить тип как в vala. Делаем жесткую типизацию - куча ошибок пропадает.
     
     
  • 4.37, Аноним (-), 08:56, 01/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Взгляни на сам RPython, на Nim и на (шутка) Truthon.
     

  • 1.3, neon1ks (ok), 01:06, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Плохая какая то оптимизация у CPython.
     
     
  • 2.11, Аноним (-), 08:49, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Да что вы всё взяли, оптимизация, оптимизация. Питон создан не для скорости, он создан для свистоперделок и баловства школьников. Хочется чего-то серьезного? Дак пишите на серьезном языке!, не надо извращаться. У питона своя ниша, вот пускай в ней и остается.
     
     
  • 3.22, . (?), 15:59, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А я то думаю чего на нём всё больше и больше софта пишут?! А от того что язык не серьёзный!
     
     
  • 4.30, Аноним (-), 21:06, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не язык несерьезный, а люди на нем пишущие.
     
  • 4.31, Аноним (-), 21:07, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Больше пишут, только всё тяжелое глючное лагалово. Миллионы пользователей убунты уже оценили всю крутость питона.
     
     
  • 5.39, Aleks Revo (ok), 18:59, 01/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    «Убунту» - это то самое африканское слово, которое переводится как «я не осилил»?
    Эти вряд ли чего-то там могут оценить (:trollface:)
     

  • 1.4, grec (?), 02:03, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > В отличие от прошлых выпусков, в версии PyPy 4.0 впервые наблюдается снижение производительности

    Это победа!

     
  • 1.8, robux (ok), 07:16, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython).

    Странно для меня всё это...
    А что, JIT-компилятор к CPython слабо прикрутить?!
    Я например вообще удивлён, что у CPython нет своего JIT-компилятора...

     
     
  • 2.15, userd (ok), 12:11, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Авторы Python как идеи и CPython как реализации к jit-ам равнодушны.

    Есть несколько подходов,
    но сложность языка препятствует значимому успеху в этом направлении.

     
     
  • 3.16, Andrey Mitrofanov (?), 12:26, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Авторы Python как идеи и CPython как реализации к jit-ам равнодушны.
    > Есть несколько подходов,
    > но сложность языка препятствует значимому успеху в этом направлении.

    Я правильно Вас понял, что авторы языка Python надизайнили его таким образом, что куча из того, что там у него внутре, препятствует реализации jit-а для, и они прикрывают ошибки дизайна показным равнодушием к сей свистелке?

    Не, не отвечайте. Ошибки авторов языка(*) не суть. Гораздо забавнее Ваши старания не называть ошибки ошибками. Я понимаю нежелание ругать уважаемых людей, но зачем же считать нас за ...кого?..., пытаясь строить турусы на колёсах псевдообоснований?


    (*)Тем более авторы pypy вполне себе описывают "вот-вот те вот части cpython-а", которые они не реализуют или реализуют не полностью, и почему. Насколько я ничего не знаю, и не помню, и не понимаю про обоих, трёх.

     

  • 1.13, 123 (??), 11:42, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    реализации Python, написанной на языке Python, реализации Python, написанной на языке Python, реализации Python, написанной на языке Python, реализации Python, написанной на языке Python, реализации Python, написанной на языке Python
     
     
  • 2.14, userd (ok), 11:50, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    а что остановился?
    стек сорвало?
     
     
  • 3.17, Аноним (-), 12:32, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это не рекурсия, это цикл ;)
     
     
  • 4.20, Аноним (-), 15:20, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это оптимизированная хвостовая рекурсия.
     
  • 3.32, Аноним (-), 21:09, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Питон больше не тянет...
     
  • 2.21, Нимано (?), 15:50, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > реализации Python, написанной на языке Python, реализации Python, написанной на языке Python,
    > реализации Python, написанной на языке Python, реализации Python, написанной на языке
    > Python, реализации Python, написанной на языке Python

    Гм, знаете, на чем самые используемые реализации си и плюсов написаны? Или тех же го с растом? Вы не поверите!

     
     
  • 3.23, . (?), 16:01, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поверим - на Си.
     
     
  • 4.27, Нимано (?), 17:00, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Поверим - на Си.

    Нет, не поверите ...

    https://github.com/rust-lang/rust/tree/master/src/librustc
    https://go.googlesource.com/go/+/release-branch.go1.5/src/go/ast/
    https://go.googlesource.com/go/+/release-branch.go1.5/src/go/token/

    А  чтобы угодить экспертам опеннета, нужно было писать на Си! А сишный компилятор наверняка на асме или сразу с помощью бабочек!

     
     
  • 5.35, Аноним (-), 00:25, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Си компилятор давно на си можно писать. Раскрутка компилятора.
     
  • 2.38, Аноним (-), 09:07, 01/11/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > реализации Python, написанной на языке Python, реализации Python, написанной на языке Python,
    > реализации Python, написанной на языке Python, реализации Python, написанной на языке
    > Python, реализации Python, написанной на языке Python

    Финя. Вот мой вариант:

    Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на Python написанный на

    Хотел запостить на 65536 или 32768 символов, но Опеннет сказал "ОШИБКА: Тело сообщения не должно превышать 30 тыс. знаков.", а потом я решил не злить модеров лишний раз. :)

     

  • 1.19, Аноним (-), 15:13, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А какая вообще ниша у этого гвидобейсика? Никогда на нем на писал, а тут пришлось освоить... по мне так bash понятней и ясней и js. Ну вот правда что должна быть за задача чтобы изначально выбрать питон?
     
     
  • 2.24, . (?), 16:04, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А какая вообще ниша у этого гвидобейсика? Никогда на нем на писал,
    > а тут пришлось освоить... по мне так bash понятней и ясней
    > и js. Ну вот правда что должна быть за задача чтобы изначально выбрать питон?

    Да любая, кроме байтодрочерства. Но там и твой баш и js не в тему.
    А так - вкусовщина это всё, не нравится - бери перловку или ребе :)

     

  • 1.25, economist (?), 16:14, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Python - 5-6-й по популярности язык. Ниши у него нет. У него есть призвание: вытеснять другие с их же "ниш и полей", даже будучи полностью бесплатным сыром:

    20% многомиллионного рынка ERP теперь занимает свободный продукт на Python

    20% школ в Британии преподают только Python вместо диалектов Basic

    20% сайтов используют Django или другие CMS на удаве

    20% компаний, использующих EDM в РФ - используют продукты на Python (+платно)

    20% выпускников прикладников "бауманки" написали удава 1-2 м в анкете

    20% скриптов автоматизации у меня в офисе - на Python.

    Все эти скорости в "попугаях" не имеют ничего общего с реальной скоростью разработки и отзывчивостью интерфейса готовой программы. А уж в плане "красивости" и ясности кода - он просто недосягаем. Код на питоне содержит на 60% меньше спецсимволов, чем в среднем другие Top-5 языков программирования.

     
     
  • 2.26, Аноним (-), 16:49, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    слушайте вот эти заклинания про бесплатный сыр говорят обычно не умные люди. GNU/Linux бесплатный сыр, PostgreSQL, nginx, redis, memcached, gcc, clang, php, да до черта всего этого!
     
     
  • 3.28, economist (?), 17:09, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "Бесплатный сыр" свободного Python-а - это не сам он, а 800 тысяч бесплатных библиотек и библиотечек на все случаи жизни, многие из которых можно просто скачать и использовать, не задумываясь о копирайте в принципе.
     
     
  • 4.29, Аноним (-), 17:59, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да просто сама эта поговорка "Бесплатный сыр бывает только в мышеловке" - ярко выраженный бред не соответствующий действительности
     
  • 4.33, Аноним (-), 21:11, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Бесплатный сыр питона на пробу оказывается тухловат и приготовлен с отклонениями от рецептов
     
  • 4.36, Аноним2.7 (?), 21:56, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    питон это бесплатное мясо
     

  • 1.40, Аноним (-), 22:19, 01/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    количество илитистов в этом треде бьет все рекорды
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру