Применение наших инструментов разработчика в апстриме
В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т. д.). Большинство из них — это свободные давно зарекомендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, rpmbuild, gcc, rpmlint, check, valgrind, diff и др. Но иногда встречаются задачи, для решения которых инструментов еще не было создано. В таких случаях мы создаем свои собственные решения для наших разработчиков. В случае, если эти инструменты могут быть полезны не только для нас, но и для сообщества, мы публикуем их исходные коды.
Примером одной из нестандартных задач был анализ обратной совместимости API/ABI системных библиотек в нашей операционной системе РОСА. Поскольку количество библиотек в системе достигало нескольких тысяч, то отслеживать вручную изменения во всех было слишком неподъемной задачей. Поэтому мы разработали инструмент ABICC, который может производить анализ совместимости изменений в автоматическом режиме. Исходные коды этого инструмента были открыты и постепенно все больше и больше разработчиков библиотек в апстриме пользуются этим инструментом для контроля совместимости API/ABI интерфейсов. В результате этого, нашим мэйнтейнерам библиотек легче обновлять их в системе.
Примерами библиотек, успешно использующих наши инструменты, являются: Pacemaker, MySQL++, Wireshark, Glibc, Enlightenment, libDAP++, libapt, Barry, PySide, PLplot и др. Также довольно большое число разработчиков библиотек предпочитают пользоваться нашим специальным сервисом Upstream Tracker, где они могут бесплатно добавить любую библиотеку и следить за изменениями в ее API/ABI интерфейсе. Примерами таких библиотек являются ImageMagick, V8 и др.
С нашими наиболее популярными open-source инструментами для разработчиков можно ознакомиться здесь. Среди них представлены следующие инструменты:
- ABICC
- инструмент для анализа совместимости API/ABI системных библиотек.
- PkgDiff
- инструмент для классификации файлов в пакете и визуализации изменений.
- Java ACC
- аналог ABICC для Java библиотек.
- API Sanity Checker
- автоматический генератор автоматических модульных тестов для Си/C++ библиотек.
- DistDiff
- визуализация изменений в пакетной базе дистрибутива.
- ABI Dumper
- извлечение ABI-интерфейса из debug-информации библиотеки.
- Vtable Dumper
- извлечение структур виртуальных таблиц из бинарных файлов библиотек.
Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.