Boost C++ libraries на Android

Отже, ми запустили регулярне регресійне тестування бібліотек 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 очевидна - за ці вісім місяців ми просунулися більше, ніж за останні три роки. Ми хочемо продовжувати і впевнені, що знайдемо підтримку серед величезної кількості програмістів.

Готовий відповісти на будь-які питання.