Pull to refresh

Boost C++ libraries на Android

Reading time 3 min
Views 11K
Итак, мы запустили регулярное регрессионное тестирование библиотек Boost на Android. Наши результаты были приняты к работе сообществом Boost. Мы были добавлены в «list of approved testers» и результаты нашего тестирования теперь публикуются (и автоматически обновляются) на официальной странице регрессионного тестирования Boost. Разработчики библиотек Boost начали сотрудничество с нами, сообщая о проблемах в CrystaX NDK или чиня свой код, в зависимости от ситуации.

На данный момент есть немало регрессий, часть из которых вызвана багами в Boost, а часть — багами в CrystaX NDK. Мы, естественно, на этом не останавливаемся и продолжаем работать, так что количество фэйлов будет уменьшаться со временем. Тем не менее, это довольно важный шаг, т.к. процесс тестирования теперь полностью налажен и работает в автоматическом режиме, так что теперь сделать Boost полноценно поддерживаемым на Android — относительно несложная техническая задача и всего лишь вопрос времени. Призываю всех заинтересованных обращать внимание на регрессии и, если причиной окажется баг в CrystaX NDK — заводить тикет. Само собой, мы этим занимаемся тоже, но эффективность, очевидно, будет выше при участии большего количества людей.


Добиться такого результата удалось с помощью CrystaX NDK — нашего проекта, главной задачей которого является создание полноценного набора инструментов для нативной разработки под Android. Нативной — это не обязательно C/C++. Мы работаем над обеспечением максимального соответствия стандартам — C, C++, POSIX и т.д., так что поддержка других языков программирования, фреймворков и библиотек, реализация которых уже есть на других POSIX платформах, сильно облегчается. D, Erlang, Lisp, Ocaml, you name it — мы не видим принципиальных ограничений, препятствующих использованию данных языков для программирования под Android. Очевидно, что обеспечивая качественную реализацию базовых библиотек (таких, как libc), мы тем самым значительно облегчаем портирование рантаймов и стандартных библиотек этих языков на Android. В еще большей степени это относится к существующим прикладным библиотекам (ffmpeg, libpng, openssl, etc) — просто потому, что они, как правило, менее сложны в портировании, чем рантаймы языков программирования.

В свете этого автоматическое тестирование Boost с помощью CrystaX NDK важно не только для Boost, но и для нашего проекта. В силу сложности и требовательности библиотек Boost к нижнеуровневому слою (libc, libm и т.д.), он является хорошим набором тестов на стандартное поведение системных библиотек, и прохождение всех тестов Boost позволяет нам с большей уверенностью говорить о полноценной поддержке стандартов в CrystaX NDK. Очевидно, что это помогает портированию на Android и других, не связанных с Boost, проектов.

Я начал этот проект в 2009-ом году и с тех пор вел его в свободное время. В 2012-ом году ко мне присоединился мой хороший друг Александр Жуков, и с тех пор мы работаем над проектом совместно. Деньги мы зарабатывали, выполняя заказную работу для многочисленных коммерческих проектов, и тратили их на CrystaX NDK. Тем не менее, даже в таком режиме CrystaX NDK все время был и до сих пор остается значительно более «фичастым», чем Android NDK от Google; главным образом потому, что Google никак не заинтересован в нативной разработке под Android и который год игнорирует нужды огромного количества разработчиков. Это становится особенно интересным в свете того, что сейчас Android — это уже не только телефоны. Сегодня это уже и довольно мощные планшеты, и умные телевизоры, и автомобильные навигаторы — а значит, востребованность в легкой портируемости кода между платформами все больше увеличивается. Ибо рекомендуемый Google путь — для Android переписывать все на Java — это абсолютно несерьезно.

Восемь месяцев назад мы отказались от всех сторонних контрактов и начали работать над CrystaX NDK в режиме full time. Мы абсолютно уверены, что сможем сделать наш проект основой для полноценной разработки под Android — в идеале, на любом языке, без обязательного использования Java, как это происходит сегодня. Эффективность работы в режиме full time очевидна — за эти восемь месяцев мы продвинулись больше, чем за последние три года. Мы хотим продолжать и уверены, что найдем поддержку среди огромного количества программистов.

Готов ответить на любые вопросы.
Tags:
Hubs:
+15
Comments 13
Comments Comments 13

Articles