The OpenNET Project / Index page

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

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

01.05.2011 09:14

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

Из других особенностей PyPy можно отметить:

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

Из новшеств, добавленных в PyPy 1.5, можно выделить:

  • Обеспечение совместимости с Python 2.7 (версией 2.7.1);
  • Увеличение производительности. По сравнению с прошлым выпуском скорость прохождения стандартного тестового комплекта возросла на 25%. Результаты сравнения производительности с выпуском PyPy 1.4 можно посмотреть здесь, а с CPython 2.6.2 - здесь;
  • В реализацию JIT-компилятора добавлена поддержка выноса инвариантов за пределы цикла, которая позволила увеличить производительность запутанных циклов, в которых выполняются математические вычисления;
  • Улучшена совместимость с CPython API для написания модулей-расширений, что позволило увеличить число поддерживаемых в PyPy сторонних модулей;
  • Обеспечена поддержка Tkinter, GUI библиотеки на базе TCL/TK, и построенной на её основе интегрированной среды IDLE;
  • Система профилирования cProfile теперь работает с JIT, но пока непригодна для полноценного анализа изощренных проблем с производительностью;
  • Отдельно ведется разработка реализации psycopg2-совместимой библиотеки (интерфейсный модуль для PostgreSQL) для PyPy.


  1. Главная ссылка к новости (http://morepypy.blogspot.com/2...)
  2. OpenNews: Релиз PyPy 1.4, реализации Python, написанной на языке Python
  3. OpenNews: Проект по интеграции поддержки многопоточности в Python и релиз PyPy 1.3
  4. OpenNews: Релиз PyPy 1.2, реализации Python, написанной на языке Python
  5. OpenNews: Разработчики Google задались целью сделать Python интерпретатор в 5 раз быстрее
  6. OpenNews: Unladen Swallow - новая реализация интерпретатора Python на базе LLVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/30422-PyPy
Ключевые слова: PyPy, python, jit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, R (?), 11:37, 01/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >реализации языка Python, написанная на языке Python

    Надо дописать что на языке RPython. А то набегут аналетеги.

     
     
  • 2.9, Аноним (-), 17:47, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Лучше просто на R, тогда точно набегут аналитики :)
     

  • 1.3, ПолныйАнонимус (?), 12:06, 01/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь уже пробовал его в деле? График какой-то невероятный у них нарисован
     
     
  • 2.8, bav (ok), 17:06, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто-нибудь уже пробовал его в деле?

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

    Поэтому не ждите чудес, товарищи. Хотя, то что pypy начал здорово делать cpython на синтетических тестах, само по себе уже необыкновенное достижение. Прелесть pypy не в быстроте, а в простом и поддерживаемом коде на высокоуровневом языке и возможности выгнать скрипт на ряд бекэндов.

     
     
  • 3.11, Аноним (-), 17:57, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы не сказал, что код там сильно проще, чем в CPython.
     
     
  • 4.12, bav (ok), 18:10, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Если подходить формально, то конечно не проще. Сложные алгоритмы оптимизации дают о себе знать. Интересно сколько кандидатов в PhD в команде разработчиков, там же CS чистой воды.

    А если представить что pypy был бы полностью на сишечьке? Вот про эту сравнительную простоту и речь.

     
     
  • 5.20, Аноним (-), 17:10, 02/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Сложные алгоритмы оптимизации дают о себе знать.

    Сложные алгоритмы не смогли в большей части случаев обогнать простые. И нафига они после этого нужны? На переплавку!

     

  • 1.4, Аноним (-), 13:09, 01/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оно всё так же требует двух гигов памяти для сборки?
     
     
  • 2.6, SergMarkov (??), 16:18, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    на 512 он как не собирался так не собирается. Офис собирается на них:-) этот не хочет
     

  • 1.5, Аноним (-), 13:18, 01/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а numpy он научился поддерживать?
     
     
  • 2.7, bav (ok), 16:49, 01/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Всё что требует для сборки SWIG или cython, пока идет лесом.
     
     
  • 3.15, Аноним (-), 11:32, 02/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет. Всё что требует для сборки SWIG или cython, пока идет лесом.

    Без библиотек питон уже не питон :(
    А перспективы есть в этом направлении? Очевидно, что пролетает не только numpy, но еще например qt.

     
     
  • 4.16, Аноним (-), 12:10, 02/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    хотя ctypes поддерживается. так уже гораздо интересней.
     
  • 4.17, bav (ok), 12:42, 02/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Без библиотек питон уже не питон

    Допилят, куда денутся? Тем более речь идёт только о сишных расширениях. Мне кажется разработчики уже добились какой то вехи в jit-компиляции, теперь должны заняться инфраструктурой.

    > но еще например qt.

    А для gtk есть gir-ctypes :P Попробую перетащить свой редактор на него, интересно как просядет производительность.

     
     
  • 5.19, Аноним (-), 16:11, 02/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Почитал про связку ctypes/c++. Выяснилось, что каждый компилятор городит свой бинарный апи для реализации классов. Поэтому через ctypes реализовать поддержку c++ в принципе можно, но конкретно под использованный компилятор. Реализовать универсально не получится. С чистым це таких проблем нет.
     

  • 1.13, Аноним (-), 19:22, 01/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Обесните, почему они не могут сделать раздельную трансляцию модулей, чтобы не транслировать весь образ вместе со всеми стандартными модулями сразу целиком? Сами у себя в блоге пишут, что компиляция PyPy с помощью pypy-c на AMD64 требует 8.3 Гб памяти, ну п-ц же.
     
     
  • 2.21, Аноним (-), 01:06, 03/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>требует 8.3 Гб памяти

    что, серьёзно??

     
     
  • 3.22, Аноним (-), 04:44, 03/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    http://morepypy.blogspot.com/2010/11/snake-which-bites-its-tail-pypy-jitting.
     
     
  • 4.23, Аноним (-), 12:23, 03/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    вот это да :)
     
  • 4.24, Аноним (-), 15:20, 03/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >CPython used 2.3 GB

    Меньше, но порядок тот же. Как обычно, повысили производительность за счёт памяти, так что даже JVM кажется скромным.

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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