PyPy

PyPy
PyPy
Pypy logo.png
Тип

Интерпретатор и компилятор Python

Написана на

Python

Операционная система

Кроссплатформенный

Последняя версия

1.9 (8 июня 2012)

Состояние

Имплементация Python 2.7.2

Лицензия

Лицензии MIT

Сайт

http://pypy.org

PyPy — это интерпретатор языка программирования Python, который написан на Python и может компилировать сам себя.

Содержание

Цели проекта

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

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

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

Трансляция

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

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

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

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

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

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

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[4]. Также разработчики считают, что эта версия готова для использования в production[5].

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

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

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

По состоянию на 2010, PyPy отказался от JavaScript в качестве бэкенда.[8]

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

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

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

См. также

Примечания

Литература

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "PyPy" в других словарях:

  • PyPy — Entwickler Armin Rigo, Samuele Pedroni, Christian Tismer, Holger Krekel u. a. Aktuelle Version 1.6 (19. August 2011) Betriebssystem Windows, Mac OS X, Linux, u. v. m. Kategorie …   Deutsch Wikipedia

  • PyPy — Saltar a navegación, búsqueda PyPy Desarrollador Proyecto PyPy Sitio Oficial …   Wikipedia Español

  • PyPy — est une mise en œuvre du langage Python écrite elle même en Python, avec une architecture flexible. Sommaire 1 Le projet 1.1 Historique 1.2 PyPy 2 Implémentation de Python …   Wikipédia en Français

  • PyPy — Infobox Software name = PyPy caption = developer = programming language = Python latest release version = 1.0 latest release date = March 27, 2007 operating system = Cross platform genre = Python interpreter and compiler toolchain license = MIT… …   Wikipedia

  • pypynė — pypỹnė sf. (2), pỹpynė (1) NdŽ, pypìnė (2) [K]; N, pipỹnė (2) BŽ504,605 1. SD251, P, D.Pošk dūdelė, švilpynė: Pypynė (orig. pipine), kurią skersai nasrump pridėtą pučia SD53. Kokia te jo dūdelė: pasdarė pypynę ir birbia Trgn. Turėjo… …   Dictionary of the Lithuanian Language

  • pypytiniai — sm. pl. (1) NdŽ; LBŽ, P.Snar bot. tokia augalų šeima (Cannaceae) …   Dictionary of the Lithuanian Language

  • pypytė — sf. (1) NdŽ; P, EncIV1380 bot. pypytinių šeimos augalas (Canna): Indijinė (indinė NdŽ) pypytė (darželiuose auginamas iš Vidurio Amerikos kilęs dekoratyvinis augalas; C. indica) LBŽ …   Dictionary of the Lithuanian Language

  • Пайтон — Python Класс языка: функциональный, объектно ориентированный, императивный, аспектно ориентированный Тип исполнения: интерпретация байт кода, компиляция в MSIL, компиляция в байт код Java Появился в: 1990 г …   Википедия

  • Python — У этого термина существуют и другие значения, см. Python (значения). Python Класс языка: му …   Википедия

  • Python (programming language) — infobox programming language name = Python paradigm = multi paradigm: object oriented, imperative, functional year = 1991 designer = Guido van Rossum developer = Python Software Foundation latest release version = 2.6 latest release date =… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»