The OpenNET Project / Index page

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

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

10.06.2012 23:48

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

В новом выпуске, отмечено исправления ошибок, улучшение совместимости с Python-проектами, значительный прогресс в обеспечении поддержки библиотекой для проведения научных расчётов numpypy, улучшение поддержки платформ Windows и Mac OS X, продолжение развития бэкэндов JIT для архитектур ARMv7 и PPC64. Из новшеств можно выделить реализацию метода мультиплексирования соединений select.kqueue с использованием механизма kqueue из FreeBSD и поддержку создания и манипулирования Си-подобными структурами, используя только модуль _ffi, который в отличие от ctypes более оптимален для работы JIT.

Кроме того, продолжена работа по увеличению производительности и снижению потребления памяти. В среднем PyPy 1.9 на 4% быстрее PyPy 1.8 и в 5.5 раз быстрее классического CPython 2.7.2. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.

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

  • Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);
  • Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
  • Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
  • PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.7;
  • Поддержка работы на архитектурах x86 (IA-32) , x86_64 и ARMv7. Ведется работа по адаптации для архитектуры PowerPC (PPC64), но она ещё не завершена;
  • На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
  • На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.


  1. Главная ссылка к новости (http://morepypy.blogspot.com/2...)
  2. OpenNews: Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах
  3. OpenNews: Релиз PyPy 1.8, реализации Python, написанной на языке Python
  4. OpenNews: Релиз PyPy 1.7, реализации Python, написанной на языке Python
  5. OpenNews: Релиз PyPy 1.6, реализации Python, написанной на языке Python
  6. OpenNews: Проект PyPy представил визуализатор процесса JIT-компиляции и обрисовал ситуацию, когда PyPy быстрее языка Си
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/34070-pypy
Ключевые слова: pypy, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:15, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    а поддержка python3 есть?
     
     
  • 2.16, Хм8230 (?), 09:51, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >PyPy может быть использован для бесшовной замены CPython 2.7;

    Чукча не читатель, чукча — писатель?

     

  • 1.2, Аноним (-), 00:21, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А где STM? Сколько еще ждать?
     
     
  • 2.6, Аноним (-), 01:04, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    а чё это такое?
     
     
  • 3.8, Аноним (-), 01:25, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    http://ru.wikipedia.org/wiki/Программная_транзакционная_память

    Вроде обещали запилить

     
  • 2.20, user (??), 10:22, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Он в эксперементальном бранче. Но пока  производительность от него только падает.
     

  • 1.3, Sauron (??), 00:31, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);

    А вот это хреново!

     
     
  • 2.4, Аноним (-), 00:45, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Все нормально. Запускаете по интерпретатору на каждое ядро и общаетесь через очереди или пайпы.
     
     
  • 3.13, Тузя (ok), 07:52, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Node.js-подобная фигня или я что-то путаю?
     
     
  • 4.28, 1 (??), 09:31, 12/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ты путаешь
     
  • 2.5, Аноним (-), 00:59, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Тот же GIL, только в профиль. И те же способы борьбы с ним.
     
     
  • 3.7, Аноним (-), 01:05, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    надо пологать, предлашаешь на каждый питонообъект повесить по мьютексу?
     
     
  • 4.10, Crazy Alex (ok), 03:27, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно не представляю внутренности питона - но erlang именно за счёт изоляции потоков и сообщений как единственного механизма обмена между ними не требует вешать мьютексы куда попало. Интересно, почему здесь так нельзя.

    P.S. А вообще - иметь какой-нибудь нормальный язык a-la erlang (с той же многопроцессной моделью и таким же тщательно вылизанным окружением от мониторинга до деплоя и апдейтов), но с нормальными локальными переменными было бы счастьем...

     
     
  • 5.11, Amper (??), 04:51, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Elixir  -  http://elixir-lang.org/
     
     
  • 6.24, Crazy Alex (ok), 22:10, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    В нём иммутабельные переменные
     
  • 5.19, user (??), 10:17, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Причем здесь внутренности? Erlang чистый функциональный язык, а питон мультипарадигменный. Надоели придирки к gil.
     
     
  • 6.26, Crazy Alex (ok), 22:14, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А при чём парадигма к GIL? Если у вас модель share-nothing - зачем здесь GIL? Но, вероятно, вариант share-nothing для питона почему-то не подошел.
     
  • 5.22, Аноним (-), 11:13, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ernang так может делать лишь только из-за того, что он не GP яык и накладывает ряд ограничений на то что и как можно делать. И, кстати, это далеко не всегда эффективно, скорее фича распараллеливания для лентяев без прогнозируемого результата
     
     
  • 6.25, Crazy Alex (ok), 22:12, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Хм.. Это для меня что-то новенькое. И насчёт ограничений и насчёт "без прогнозируемого результата". Подробнее можно?
     
  • 2.18, hummermania (ok), 10:03, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    кстати так и не понял про оговорку "(в отличии от erlang)...". В erlang VM тоже не плодятся множество физических потоков. Они плодятся как минимум по количеству ядер, бывает немного больше, но в этой фразе подано так как будто "минипоток Эрланга = физический поток".
     
     
  • 3.27, Crazy Alex (ok), 22:16, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Больше того - Erlang VM много лет вполне комфортно жила, будучи однопоточной - но там, конечно, интеграция нод очень удобна и вариант "по VM на ядро" никаких проблем не создаёт.
     

  • 1.12, Аноним (-), 07:22, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему такая странная нумерация версий? Не понять, синтаксис какой ветки он поддерживает
     
     
  • 2.14, Анон (?), 08:40, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вовсе не странная. Это отдельный продукт, его не должны нумеровать шаг в шаг с cpython.
     
  • 2.21, Аноним (-), 11:10, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    если взять и прочитать текст новости, то станет ясно с какой веткой он совместим
     

  • 1.15, Аноним (-), 09:37, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё ещё нужно 4 GiB RAM, чтобы его собрать?
     
     
  • 2.23, Ононим (?), 16:04, 11/06/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Необязательно, можно 8, 12, 16...
     

  • 1.17, Аноним (-), 09:58, 11/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    надеюсь, когда-нибудь pypy станет мейнстримом
     
  • 1.29, meow (??), 01:54, 13/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС

    что значит в отличии? erlang изначально обрабатывал всё в одном физическом потоке (кроме операцию i/o). режим smp с множеством потоков появился не так давно и это очень большое преимущество над всеми остальными платформами. "в отличии" несет негативный оттенок, что в корне неверно.

     

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



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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