Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

PyPy

Глава 19 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: PyPy
Автор: Benjamin Peterson
Перевод: А.Панин

19.7. Немного о процессе разработки

В ходе борьбы со сложностью реализации (обратитесь к Разделу 19.6) в рамках фреймворка PyPy начали применяться несколько так называемых "гибких" методологий разработки. Наиболее важной из них является разработка через тестирование. Все новые возможности и исправления ошибок должны сопровождаться тестами, позволяющими установить корректность их реализации. Интерпретатор языка Python из состава фреймворка PyPy также проходит тестирование с использованием набора тестов для обнаружения регрессий проекта CPython. Система тестирования фреймворка PyPy py.test была выделена из состава проекта и на данный момент используется многими другими проектами. При разработке PyPy также применяется система непрерывной интеграции, с помощью которой выполняется набор тестов и осуществляется перенос проекта на множество платформ. Бинарные файлы для всех платформ создаются ежедневно, после чего они подвергаются тестированию с помощью набора тестов. Все эти тесты позволяют быть уверенным в том, что различные компоненты функционируют в штатном режиме вне зависимости от того, какие изменения сложной архитектуры проекта были осуществлены.

Существует строгая культура проведения экспериментов в рамках проекта PyPy. Разработчики должны создавать ветви кода в репозитории Mercurial. В рамках этих ветвей могут быть реализованы связанные с разработкой проекта идеи без дестабилизации основной ветви кода. Идеи не всегда успешно реализуются в рамках этих ветвей исходного кода, поэтому некоторые ветви остаются в заброшенном состоянии. Во всяком случае, разработчики проекта PyPy очень настойчивы. Наиболее известным доказательством этого утверждения является тот факт, что современная система JIT-компиляции PyPy появилась в ходе пятой попытки добавления функций JIT-компиляции в фреймворк PyPy!

Проект PyPy также известен своими инструментами визуализации. Визуализации графов потоков данных из Раздела 19.4 являются одним из примеров применения этих инструментов. В составе проекта PyPy есть также инструменты для демонстрации вызовов сборщика мусора с течением времени и обзора деревьев разбора регулярных выражений. Особенно интересным инструментом является jitviewer - программа, которая позволяет визуализировать уровни преобразованной в jit-код функции при преобразовании из байткода Python в промежуточное представление JIT с последующим преобразованием в ассемблерный код. (Вывод программы jitveiwer показан на Рисунке 19.4.) Инструменты визуализации помогают разработчикам понимать принципы взаимодействия множества уровней абстракции фреймворка PyPy.

Программа jitveiwer выводит байткод Python и соответствующие операции промежуточного представления JIT
Рисунок 19.4: Программа jitveiwer выводит байткод Python и соответствующие операции промежуточного представления JIT


Продолжение статьи: Резюме