LINUX.ORG.RU

Запущено регулярное регрессионное тестирование Boost под Android

 , ,


1

1

В рамках проекта CrystaX NDK запущено регулярное регрессионное тестирование библиотек Boost C++ под Android. С результатами тестов можно ознакомиться на официальной странице Boost (develop branch) или на сайте CrystaX.NET - master, develop.

В соответствии с идеологией проекта CrystaX NDK, в код Boost никаких изменений не вносилось - портирование на Android происходит благодаря более полному соответствию стандартам C, C++ и POSIX, обеспечиваемым библиотеками в составе CrystaX NDK (в отличие от Android NDK от Google, где нижележащие библиотеки, такие как libc, не обеспечивают стандартного поведения).

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

>>> Подробности

Я ничего не понял. Кто все эти люди? Зачем это нужно и чем оно полезно лично мне?

jekader ★★★★★ ()

Я так и не понял - буст под андроид готов или нет?

Почему в таблице нет результатов для гуглового СДК? Хотелось бы сравнить разницу.

AF ★★★ ()

Надеюсь буст в CrystaX NDK будет сбоку и необязателен?

andreyu ★★★★★ ()
Ответ на: комментарий от jekader

Зачем это нужно и чем оно полезно лично мне?

Вам лично скорее всего ничем, проходите мимо.

andreyu ★★★★★ ()

Б-г с ним, с бустом, стл бы работал…

anonymous ()
Ответ на: комментарий от AF

Я так и не понял - буст под андроид готов или нет?

Готов в том смысле, что включен в состав CrystaX NDK - вы можете его начинать использовать прямо сейчас: 1, 2.

Однако для того, чтоб поддерживать какой-либо софт (в том числе и Boost), его нужно регулярно тестировать. До сих пор Boost на Android никто не тестировал - прежде всего потому, что Boost, собранный гугловским NDK, часто просто не работал (не все библиотеки, конечно), а некоторые библиотеки так и вовсе не собирались.

Почему в таблице нет результатов для гуглового СДК? Хотелось бы сравнить разницу.

Результатов нет потому что собрать Boost с помощью гуглового NDK - это та еще проблема. И даже если собрать, порезав много чего, все равно многие библиотеки не будут работать вовсе. Мы же намерены довести Boost до полностью рабочего состояния (иными словами, сделать так, чтобы _все_ библиотеки работали на Android) с помощью нашего CrystaX NDK. Делаем мы это, обеспечивая стандартное поведение нижележащего уровня (libc, STL и т.д.), и не трогая код Boost вовсе. Это хорошо не только для Boost, но и для нашего NDK, т.к. если Boost, собранный нашим NDK, будет работать на Android, то, очевидно, будет работать и много другого софта, ожидающего честного POSIX поведения от libc и прочих нижнеуровневых библиотек.

crystax ()
Ответ на: комментарий от andreyu

Надеюсь буст в CrystaX NDK будет сбоку и необязателен?

Во-первых, он не «будет», он уже есть. Во-вторых - конечно же необязателен. Используйте его, только если он нужен. Навязывать никто не собирается.

crystax ()
Ответ на: комментарий от anonymous

Б-г с ним, с бустом, стл бы работал…

STL работает. А Boost - это хороший test suite в том числе и для STL.

crystax ()

Тестирование - это хорошо. А зачем бусту CrystaxNDK, он же прекрасно собирается официальным NDK?

anonymous ()
Ответ на: комментарий от anonymous

А зачем бусту CrystaxNDK, он же прекрасно собирается официальным NDK?

Во-первых, вовсе не прекрасно. Некоторые библиотеки не собираются гугловским NDK. Попробуйте собрать Boost.Serialization, к примеру - ей нужны wide characters, с которыми у гугловского NDK напряженка.

Во-вторых, собирать библиотеки недостаточно. Было бы еще очень неплохо, чтоб они работали, а не только собирались - а вот с этим проблема (разумеется, у тех библиотек, которым что-то нужно от нижнего уровня; чисто языковые вещи типа shared_ptr, конечно же, работают).

Ну и самое главное - мы чиним нижний уровень вместо того, чтоб править сам Boost. Это дает эффект, позволяющий починить не только Boost, но и любой другой софт, ожидающий честное стандартное поведение от libc и других низкоуровневых библиотек.

crystax ()

У меня Boost используют полтора приложения, которые стабильно «отваливаются» каждые несколько месяцев из-за обновления Boost с какой-нибудь 1.55 до 1.56. То же самое с ICU.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

У меня Boost используют полтора приложения, которые стабильно «отваливаются» каждые несколько месяцев из-за обновления Boost с какой-нибудь 1.55 до 1.56. То же самое с ICU.

Да, есть такое. Тем не менее, Boost используется в огромном количестве проектов, и разве плохо было бы иметь возможность переносить такие проекты на Android с минимальными усилиями?

crystax ()

если есть знающие - можно пару примеров того, зачем разработчикам под андроид нужен буст? Java чего-то глобального неумеет, что только с бустом кодится?

tranceGemini ★★ ()
Ответ на: комментарий от tranceGemini

Java чего-то глобального неумеет, что только с бустом кодится?

Java не умеет C++. А для переносимого между платформами кода пока ничего лучше нет. Вот например, на чем будете делать игру, которая нацелена на Windows, OS X, iOS и Android? Учтите, что во многих играх UI - это дай бог 1% от общего кода, а все остальное абсолютно реально сделать на C++, используя OpenGL для графики. «Написать для каждой платформы свой код - для Windows на C#, для OS X/iOS на Objective-C, а для Android - на Java» - такой ответ не принимается. Никакой разумный менеджер на это не пойдет, а разумный разработчик предпочтет так не делать, если есть возможность создать единое ядро, которое и чинить легче (т.к. чинить надо в одном месте и на одном языке а не в трех местах на трех разных языках), да и поведение самого кода в таком случае гораздо легче обеспечить одинаковое на всех платформах. Иными словами, просто меньше усилий на разработку потребуется. Ну и при таком раскладе Boost становится действительно нужным (не все его библиотеки, конечно же, но многие весьма удобны).

crystax ()
Ответ на: комментарий от crystax

во многих играх UI - это дай бог 1% от общего кода, а все остальное

Пишут на каком-нибудь питоне.

Xellos ★★★★★ ()
Ответ на: комментарий от tranceGemini

Java чего-то глобального неумеет

Она на рынке не одна

зачем разработчикам под андроид нужен буст?

Можно на крестах писать под кучу платформ разом и не заморачиваться.

bigc ()

ОП, ты это знаешь вероятно, подскажи, будет ли на Android работать функция temp_directory_path() из boost.filesystem, обязательна ли для этого CrystaxNDK и куда эта функция будет указывать?

anonymous ()
Ответ на: комментарий от anonymous

будет ли на Android работать функция temp_directory_path() из boost.filesystem, обязательна ли для этого CrystaxNDK

Будет. CrystaX NDK обязателен. Если использовать Google NDK, работать не будет. Мы это специально фиксили. Но фикс был сделан после релиза 10.1, так что пока доступен только в git репозитории, и для использования нужно ждать следующего релиза CrystaX NDK (недолго).

и куда эта функция будет указывать?

Туда же, куда будет указывать environment variable TMPDIR. По умолчанию это /data/local/tmp. Но можно выставить другой путь в своем коде.

crystax ()
Ответ на: комментарий от crystax

хмм.. понятно.. хотя те же игроделы, наверно, уже давно сидят на юнити или на unreal engine.

tranceGemini ★★ ()

буст неплохое экспериментальное поделие для экспериментов с экспериментальными фичами.

dinama ()
Ответ на: комментарий от crystax

Буст, как и Qt - на дух не переношу. Но править нижний уровень вместо абстракции над абстракцией - годно. Люто, бешено аплодирую.

CynicRus ()
Ответ на: комментарий от CynicRus

Буст, как и Qt - на дух не переношу.

Это дело ваше, мы никому его не навязываем. Но для нашего проекта Boost - замечательный test suite. Если работает Boost - то с очень высокой вероятностью будет работать и другой POSIX-ориентированный софт, а именно это и есть наша главная цель.

Но править нижний уровень вместо абстракции над абстракцией - годно. Люто, бешено аплодирую.

Спасибо.

crystax ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.