Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

PyPy
Логотип программы PyPy
Тип Интерпретатор и компилятор Python
Написана на RPython
 Операционная система  Кроссплатформенный
Первый выпуск 2002
Последняя версия
Репозиторий foss.heptapod.net/pypy/p…
Состояние Реализация Python 2.7.18, 3.6.12 и 3.7.9
Лицензия Лицензии MIT
Сайт pypy.org

PyPy — интерпретатор языка программирования Python. PyPy в начале своего существования был интерпретатором Python, написанным на Python. Текущие версии PyPy транслируются из RPython в Си и компилируются. В PyPy встроен трассирующий[en] JIT-компилятор, который может превращать код на Python в машинный код во время выполнения программы.

Цели проекта

PyPy был задуман как реализация Python, написанная на Python. Тот факт, что PyPy реализован на языке высокого уровня, делает его более гибким и позволяет легче экспериментировать с новыми возможностями, чем CPython, а также легко определить области, где он может быть улучшен.

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

Он также призван обеспечить совместимость, гибкость и быстроту реализации языка программирования Python и позволяет реализовывать новые возможности без необходимости программирования на языке низкого уровня[2].

Трансляция

PyPy состоит из стандартного интерпретатора и транслятора.

Интерпретатор полностью реализует язык Python. Сам интерпретатор написан на ограниченном подмножестве этого же языка, называемом RPython (Restricted Python). В отличие от стандартного Python, RPython является статически типизированным для более эффективной компиляции[3].

Транслятор является набором инструментов, который анализирует код RPython и переводит его в языки более низкого уровня, такие как C, байт-код Java или CIL. Он также поддерживает подключаемые сборщики мусора и позволяет опционально включать Stackless. Также он включает JIT-компилятор для трансляции кода в машинные инструкции во время исполнения программы.

PyPy как средство реализации интерпретаторов

Компилятор языка RPython можно использовать и для написания интерпретаторов с других языков программирования. Добавив в код такого интерпретатора импорт класса JitDriver и создание его экземпляра, а затем передав в этот класс списки глобальных переменных, изменяемых и неизменяемых в ходе выполнения программы, а также сделав ещё несколько очевидных деклараций, мы, после трансляции с флагом --opt=jit:, получаем работающий JIT-компилятор языка[4].

История проекта

PyPy является продолжением проекта Psyco, JIT-компилятора для Python, разработанный Армином Риго (Armin Rigo). Цель PyPy в том, чтобы иметь JIT-компилятор с охватом, который не был доступен для Psyco. PyPy начался как исследовательский проект для разработчиков.

Когда проект достиг зрелой стадии развития и официальной версии 1.0 в середине 2007 года, следующий акцент был сделан на выпуск production-ready версии с большей совместимостью с CPython.

Версия 1.1 была выпущена 28 апреля 2009 года.

В марте 2010 года вышла версия 1.2, в которой особое внимание было уделено скорости. Эта версия включает в себя JIT-компилятор, который работает, но не рекомендуется для использования в production.

26 ноября 2010 года была выпущена версия 1.4. Эта версия впервые в режиме JIT-компилятора по скорости превосходит CPython[5]. Также разработчики считают, что эта версия готова для использования в production[6].

В рамках PyPy разрабатывается специальная версия интерпретатора pypy-stm, в которой реализована программная транзакционная память[7][8]. Использование транзакционной памяти позволит избавиться от GIL и упростит распараллеливание Python приложений на многоядерных системах.

9 мая 2013 года вышла вторая версия PyPy, в число новшеств которой входит бесстековый режим и новый интерфейс работы с внешними функциями на языке Си — cffi[9].

10 марта 2016 года вышла пятая версия PyPy, в которой была улучшена производительность, и API CPython получило множество улучшений[10].

9 августа 2016 года PyPy получил финансирование в размере $200,000 от Mozilla для поддержки Python 3.5[11].

12 ноября 2016 года вышла версия PyPy2 v5.6, самое главное изменение — стандартная библиотека Python 2.7.12

Поддерживаемые бэкенды

  • C — трансляция кода RPython в C и запуск как нативной программы; это стандартный режим работы;
  • Python — транслятор PyPy также может быть запущен в интерпретаторе Python или в самом интерпретаторе PyPy, хотя скорость работы будет крайне низкой; эта возможность полезна для отладки.

По состоянию на 2017 год, PyPy отказался от JVM, CIL, JavaScript[12] в качестве бэкендов.

Совместимость с CPython

Версия 5.6.0 совместима с версией Python 2.7.12 и может работать на 32- и 64-битных платформах (кроме Windows, где поддерживается только 32-битная версия[13]). PyPy полностью поддерживает модули, написанные на чистом Python. Для использования двоичных расширений (.so и .pyd) PyPy имеет хорошую поддержку API CPython в виде отдельного модуля cpyext. Для нормальной работы этих расширений требуется их перекомпиляция[14].

Версия PyPy3 5.5 совместима с CPython 3.3.5[15].

Также ведётся активная разработка PyPy3.5, реализующей Python 3.5.

Известно, что следующие библиотеки и фреймворки могут работать в PyPy[14]:

См. также

Примечания

  1. https://www.pypy.org/posts/2023/12/pypy-v7314-release.html
  2. Samuele Pedroni. PyPy - Goals and Architecture Overview (March 2007). Архивировано из оригинала 30 июня 2012 года.
  3. «It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation», Ancona et al., 2007.
  4. Andrew Brown, Tutorial: Writing an Interpreter with PyPy, Part 1 Архивная копия от 3 марта 2012 на Wayback Machine, Part 2: Adding a JIT Архивная копия от 3 марта 2012 на Wayback Machine,
    Руководство: пишем интерпретатор с JIT на PyPy (перевод) Архивная копия от 20 августа 2016 на Wayback Machine,
    Репозиторий исх. кода Архивная копия от 26 января 2012 на Wayback Machine
    В статье, описывается реализация Brainfuck на RPython
  5. PyPy Speed Center: Comparison. Дата обращения: 28 ноября 2010. Архивировано 2 апреля 2012 года.
  6. PyPy Status Blog: PyPy 1.4: Ouroboros in practice. Дата обращения: 28 ноября 2010. Архивировано 9 марта 2012 года.
  7. PyPy Status Blog «Global Interpreter Lock, or how to kill it». Дата обращения: 19 мая 2012. Архивировано 22 мая 2012 года.
  8. Представлен pypy-stm. Дата обращения: 19 мая 2012. Архивировано 13 мая 2012 года.
  9. Выпуск PyPy 2.0, реализации Python, написанной на языке Python. opennet.ru (10 мая 2013). Дата обращения: 21 мая 2013. Архивировано из оригинала 7 июня 2013 года.
  10. PyPy Status Blog: PyPy 5.0 released. morepypy.blogspot.ru. Дата обращения: 18 августа 2016. Архивировано 13 марта 2016 года.
  11. PyPy Status Blog: PyPy gets funding from Mozilla for Python 3.5 support. morepypy.blogspot.ru. Дата обращения: 18 августа 2016. Архивировано 18 марта 2017 года.
  12. [https://web.archive.org/web/20121009143354/http://www.mail-archive.com/[email protected]/msg03946.html Архивная копия от 9 октября 2012 на Wayback Machine Re: [pypy-dev] pypy appears to have entirely removed all mention of javascript]
  13. Translating on Windows — PyPy documentation. doc.pypy.org. Дата обращения: 12 ноября 2016. Архивировано 13 ноября 2016 года.
  14. 1 2 PyPy :: Python compatibility. Дата обращения: 30 ноября 2010. Архивировано 7 июня 2021 года.
  15. PyPy3 v5.5 released. doc.pypy.org. Дата обращения: 25 августа 2016. Архивировано 18 октября 2016 года.
  16. NumPyPy Status. buildbot.pypy.org. Дата обращения: 25 августа 2016. Архивировано 16 октября 2013 года.

Литература

  • Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis, 2007. RPython: a Step Towards Reconciling Dynamically and Statically Typed OO Languages (недоступная ссылка). In Proc. Dynamic Language Symposium (DLS), 2007. ACM Press.
  • Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, 2009. Tracing the meta-level: PyPy’s Tracing JIT Compiler. In Proc. ICOOOLPS, 2009. ACM Press.
  • Corbet, Jonathan PyPy: the other new compiler project. LWN.net (19 мая 2010). Архивировано из оригинала 26 мая 2012 года.
  • Corbet, Jonathan A brief experiment with PyPy. LWN.net (11 мая 2011). Архивировано из оригинала 26 мая 2012 года.
  • von Eitzen, Chris (2011-11-21). "PyPy 1.7 widens the performance "sweet spot"". The H. Heinz Heise  (англ.).
  • Rose, John A Day with PyPy. Oracle Corporation (2 декабря 2011). Архивировано из оригинала 26 мая 2012 года.
  • Gaynor, Alex Quora is now running on PyPy. Quora (12 августа 2011). Архивировано из оригинала 26 мая 2012 года.

Ссылки

Эта страница в последний раз была отредактирована 28 декабря 2023 в 15:41.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).