Библиотека сайта rus-linux.net
PyPy
Глава 19 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: PyPy
Автор: Benjamin Peterson
Дата публикации: 5 Мая 2012
Перевод: А.Панин
Дата перевода: 2 Сентября 2013 г.
Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
PyPy является реализацией языка программирования Python, а также фреймворком для реализации динамических языков программирования.
Предполагается, что до прочтения этой главы вы ознакомились с некоторыми базовыми понятиями, относящимися к теории компиляторов и интерпретаторов, такими, как байткод и сворачивание констант.
19.1. Немного истории
Python является динамическим языком программирования высокого уровня. Он был создан голландским программистом Guido van Rossum в конце 1980 годов. Оригинальная реализация языка программирования от Guido представляет собой традиционный интерпретатор байткода, разработанный с использованием языка программирования C и впоследствии известный под именем CPython. На сегодняшний день существует также множество других реализаций Python. Среди наиболее известных реализаций можно выделить Jython, которая разработана с использованием языка программирования Java и позволяет осуществлять взаимодействие с кодом Java, IronPython, которая разработана с использованием языка программирования C# и позволяет взаимодействовать с фреймворком .Net от компании Microsoft, а также PyPy, которая будет рассматриваться в данной главе. CPython является все еще наиболее широко используемой реализацией и на сегодняшней день единственной реализацией, которая поддерживает синтаксические конструкции Python 3, следующего поколения языка программирования Python. В рамках данной главы будут описаны архитектурные решения, принятые в ходе разработки PyPy и отличающие эту реализацию от других реализаций языка Python и более того, от любых других реализаций динамических языков.
19.2. Обзор PyPy
При разработке PyPy использовался только язык программирования Python, за исключением немногочисленных заглушек на языке C. Дерево исходного кода проекта PyPy содержит два основных компонента: интерпретатор языка Python и набор инструментов для преобразования кода RPython. Интерпретатор языка Pyhon является применяемым разработчиками окружением времени исполнения, используемым людьми при вызове реализации языка Python под названием PyPy. Фактически оно разработано с использованием подвида языка Python с именем Restricted Python (Python с ограничениями; обычно для его обозначения используется аббревиатура RPython). Цель разработки интерпретатора языка Python с использованием языка RPython заключается в реализации возможности подачи выходных данных интерпретатора на вход второй основной части PyPy, являющейся набором инструментов преобразования кода RPython. Инструмент преобразования кода RPython принимает код на языке RPython и преобразует его в код на выбранном языке более низкого уровня, наиболее часто этим языком является C. Это обстоятельство позволяет PyPy быть самодостаточной реализацией, что подразумевает использование для разработки того языка программирования, поддержка которого реализуется. Как мы увидим в данной главе, инструмент преобразования кода RPython также делает PyPy фрейворком для реализации динамических языков программирования общего назначения.
Мощные абстракции PyPy делают ее наиболее гибкой реализацией языка Python. Она поддерживает около 200 параметров конфигурации, которые позволяют осуществлять действия начиная с выбора реализации сборщика мусора и заканчивая изменением параметров различных оптимизаций процесса преобразования кода.
Продолжение статьи: Интерпретатор языка Python