Применение наших инструментов разработчика в апстриме

Материал из Rosalab Wiki
Перейти к: навигация, поиск
 
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т.д.). Большинство из них - это свободные давно зарекоммендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, rpmbuild, gcc, rpmlint, check, valgrind, diff и др. Но иногда встречаются задачи, для решения которых инструментов еще не было создано. В таких случаях сы создаем свои собственные решения для наших разработчиков. В случае, если эти инструменты могут быть полезны не только для нас, но и для сообщества, мы публикуем их исходные коды.
+
В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т. д.). Большинство из них это свободные давно зарекомендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, <tt>rpmbuild</tt>, <tt>gcc</tt>, <tt>rpmlint</tt>, <tt>check</tt>, <tt>valgrind</tt>, <tt>diff</tt> и др. Но иногда встречаются задачи, для решения которых инструментов еще не было создано. В таких случаях мы создаем свои собственные решения для наших разработчиков. В случае, если эти инструменты могут быть полезны не только для нас, но и для сообщества, мы публикуем их исходные коды.
  
Примером одной из нестандартных задач был анализ обратной совместимости API/ABI системных библиотек в нашей операционной системе РОСА. Поскольку количество библиотек в системе достигало нескольких тысяч, то отслеживать вручную изменения во всех было слишком неподъемной задачей. Поэтому мы разработали инструмент [https://github.com/lvc/abi-compliance-checker ABICC], который может производить анализ совместимости изменений в автоматическом режиме. Исходные коды этого инструмента были открыты и постепенно все больше и больше разработчиков библиотек в апстриме пользуются этим инструментом для контроля совместимости API/ABI интерфейсов. В результате этого нашим мэйнтейнерам библиотек легче обновлять их в системе.
+
[[File:Compatibility metaphor 01.jpg|256px|right]]
  
Примерами библиотек, успешно использующих наши инструменты, являются: Pacemaker, MySQL++, Wireshark, Glibc, Enlightenment, libDAP++, libapt, Barry, PySide, PLplot и др. Также довольно большое число разработчиков библиотек предпочитают пользоваться нашим специальным сервисом [http://upstream-tracker.org/ Upstream Tracker], где они могут бесплатно добавить любую библиотеку и следить за изменениями в ее API/ABI интерфейсе. Примерами таких библиотек являются [http://upstream-tracker.org/versions/imagemagick.html ImageMagick], [http://upstream-tracker.org/versions/v8.html V8] и др.
+
Примером одной из нестандартных задач был анализ обратной совместимости API/ABI системных библиотек в нашей операционной системе РОСА. Поскольку количество библиотек в системе достигало нескольких тысяч, то отслеживать вручную изменения во всех было слишком неподъемной задачей. Поэтому мы разработали инструмент [https://github.com/lvc/abi-compliance-checker ABICC], который может производить анализ совместимости изменений в автоматическом режиме. Исходные коды этого инструмента были открыты и постепенно все больше и больше разработчиков библиотек в апстриме пользуются этим инструментом для контроля совместимости API/ABI интерфейсов. В результате этого, нашим мэйнтейнерам библиотек легче обновлять их в системе.
 +
 
 +
Примерами библиотек, успешно использующих наши инструменты, являются: <tt>[http://clusterlabs.org/abi/pacemaker/ Pacemaker]</tt>, <tt>MySQL++</tt>, <tt>Wireshark</tt>, <tt>[http://sourceware.org/glibc/wiki/Testing/ABI_checker Glibc]</tt>, <tt>Enlightenment</tt>, <tt>libDAP++</tt>, <tt>libapt</tt>, <tt>Barry</tt>, <tt>PySide</tt>, <tt>PLplot</tt> и др. Также довольно большое число разработчиков библиотек предпочитают пользоваться нашим специальным сервисом [http://upstream-tracker.org/ Upstream Tracker], где они могут бесплатно добавить любую библиотеку и следить за изменениями в ее API/ABI интерфейсе. Примерами таких библиотек являются [http://upstream-tracker.org/versions/imagemagick.html ImageMagick], [http://upstream-tracker.org/versions/v8.html V8] и др.
  
 
С нашими наиболее популярными open-source инструментами для разработчиков можно ознакомиться [https://github.com/lvc здесь]. Среди них представлены следующие инструменты:
 
С нашими наиболее популярными open-source инструментами для разработчиков можно ознакомиться [https://github.com/lvc здесь]. Среди них представлены следующие инструменты:
  
* '''ABICC''' - инструмент для анализа совместимости API/ABI системных библиотек
+
;ABICC: инструмент для анализа совместимости API/ABI системных библиотек.
* '''PkgDiff''' - инструмент для классификации файлов в пакете и визуализации изменений
+
;PkgDiff: инструмент для классификации файлов в пакете и визуализации изменений.
* '''Java ACC''' - аналог '''ABICC''' для Java библиотек
+
;Java ACC: аналог '''ABICC''' для Java библиотек.
* '''API Sanity Checker''' - автоматический генератор автоматических модульных тестов для Си/C++ библиотек
+
;API Sanity Checker: автоматический генератор автоматических модульных тестов для Си/C++ библиотек.
* '''DistDiff''' - визуализация изменений в пакетной базе дистрибутива
+
;ABI Dumper: извлечение ABI-интерфейса из debug-информации библиотеки.
* '''ABI Dumper''' - извлечение ABI-интерфейса из debug-информации библиотеки
+
;Vtable Dumper: извлечение структур виртуальных таблиц из бинарных файлов библиотек.
* '''Vtable Dumper''' - извлечение структур виртуальных таблиц из бинарных файлов библиотек
+
  
 
Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек.
 
Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек.

Текущая версия на 11:51, 30 апреля 2014

В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т. д.). Большинство из них — это свободные давно зарекомендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, rpmbuild, gcc, rpmlint, check, valgrind, diff и др. Но иногда встречаются задачи, для решения которых инструментов еще не было создано. В таких случаях мы создаем свои собственные решения для наших разработчиков. В случае, если эти инструменты могут быть полезны не только для нас, но и для сообщества, мы публикуем их исходные коды.

Compatibility metaphor 01.jpg

Примером одной из нестандартных задач был анализ обратной совместимости 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++ библиотек.
ABI Dumper
извлечение ABI-интерфейса из debug-информации библиотеки.
Vtable Dumper
извлечение структур виртуальных таблиц из бинарных файлов библиотек.

Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек.

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.