Применение наших инструментов разработчика в апстриме
Строка 1: | Строка 1: | ||
− | В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т.д.). Большинство из них | + | В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т. д.). Большинство из них — это свободные давно зарекомендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, <tt>rpmbuild</tt>, <tt>gcc</tt>, <tt>rpmlint</tt>, <tt>check</tt>, <tt>valgrind</tt>, <tt>diff</tt> и др. Но иногда встречаются задачи, для решения которых инструментов еще не было создано. В таких случаях мы создаем свои собственные решения для наших разработчиков. В случае, если эти инструменты могут быть полезны не только для нас, но и для сообщества, мы публикуем их исходные коды. |
− | + | [[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 системных библиотек. | |
− | + | ;PkgDiff: инструмент для классификации файлов в пакете и визуализации изменений. | |
− | + | ;Java ACC: аналог '''ABICC''' для Java библиотек. | |
− | + | ;API Sanity Checker: автоматический генератор автоматических модульных тестов для Си/C++ библиотек. | |
− | + | ;DistDiff: визуализация изменений в пакетной базе дистрибутива. | |
− | + | ;ABI Dumper: извлечение ABI-интерфейса из debug-информации библиотеки. | |
− | + | ;Vtable Dumper: извлечение структур виртуальных таблиц из бинарных файлов библиотек. | |
Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек. | Мы призываем использовать наши инструменты в апстриме. Это позволяет улучшить качество и стабильность API/ABI интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек. |
Версия 16:15, 28 апреля 2014
В процессе разработки операционных систем наши разработчики и мэйнтейнеры используют огромное количество разнообразных вспомогательных инструментов (для сборки пакетов, анализа качества кода, анализа изменений и т. д.). Большинство из них — это свободные давно зарекомендовавшие себя инструменты, доступные почти в любом репозитории, такие как, например, 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 интерфейсов. А нам это облегчает и без того сложную работу наших мэйнтейнеров при последующем обновлении библиотек.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.