LINUX.ORG.RU

Вышел CrystaX NDK 10.3.0

 , ,


1

1

Новая версия CrystaX NDK 10.3.0 (набор инструментов для разработки на C/C++/Objective-C под Android) доступна для скачивания.

Наиболее важные изменения в этом выпуске:

  • Новые GCC и LLVM/clang.
  • Сильно улучшена поддержка Objective-C v2.
  • Добавлена поддержка Python (2.7 и 3.5) для Android.
  • Улучшена поддержка POSIX.
  • Добавлены готовые к использованию библиотеки Boost 1.59.0.

Новые GCC и LLVM/clang

В версии 10.3.0 добавлены новые тулчейны, основанные на gcc-5.3 и llvm-3.7. Старые gcc-4.9 и llvm-3.6 также присутствуют для совместимости, но будут удалены в следующем релизе.

$ $NDK/toolchains/arm-linux-androideabi-5/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --version
arm-linux-androideabi-gcc (GCC) 5.3 20151204
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ $NDK/toolchains/llvm-3.7/prebuilt/linux-x86_64/bin/clang -target armv7-none-linux-androideabi --version
clang version 3.7
Target: armv7-none-linux-android
Thread model: posix

Улучшенный Objective-C v2

Очень сильно улучшен рантайм Objective-C v2, в связи с чем теперь доступны все современные языковые возможности Objective-C, такие как Automatic Reference Counting, Objective-C Literals syntax и т.д.

Также в этом выпуске добавлены Objective-C фреймворки CoreData, CoreText, CoreGraphics и CoreVideo, в дополнение к добавленным в 10.2.0 Foundation и CoreFoundation.

На github доступен пример, показывающий, как можно использовать Objective-C для разработки проекта сразу для iOS и Android.

Python для Android

В состав CrystaX NDK включены бинарники (исполняемые файлы, библиотеки и заголовочные файлы) Python 2.7 и 3.5, собранные для всех доступных целевых ABI. Как и все остальные подобные пакеты в CrystaX NDK, Python был собран из официальных исходников, без единого изменения в его коде. Это прямое следствие подхода, используемого в проекте CrystaX NDK: когда что-либо не собирается, никто не правит собираемый код, добавляя обходные пути. Вместо этого чинится сам CrystaX NDK, делая поведение нижнеуровневых библиотек соответствующим стандартам (POSIX и стандартам де-факто, таким как поведение современных GNU/Linux систем). Таким образом достигается весьма высокая степень повторного использования кода и новые POSIX-ориентированные библиотеки и программные пакеты портируются на Android со значительно меньшими усилиями.

Поддержка Python в CrystaX NDK появилась главным образом благодаря усилиям Виталия Мурашева ( vet), взявшегося за эту работу на общественных началах. Именно так и работает open source - сделать что-либо для удовольствия и поделиться результатами с сообществом. Виталий, огромное спасибо!

Поддержка POSIX

Поддержка POSIX в CrystaX NDK продолжает улучшаться. В этом выпуске в libcrystax.so (сердце CrystaX NDK) было перенесено еще больше POSIX интерфейсов, поэтому теперь она зависит от Google libc еще меньше. Фактически, единственная большая часть POSIX, еще не реализованная в libcrystax.so - это POSIX threads. Это - то, что планируется исправить в следующем релизе. Тем самым CrystaX NDK избавится от зависимости от Google libc, полностью заменив ее на libcrystax.so.

В рамках работы по улучшению поддержки POSIX был интегрирован Open POSIX Test Suite в процесс автоматического тестирования CrystaX NDK. В том числе и благодаря этому, можно с определенной уверенностью утверждать, что libcrystax.so предоставляет реализацию, действительно соответствующую POSIX.

Boost 1.59.0

В состав CrystaX NDK 10.3.0 включены собранные библиотеки и заголовочные файлы Boost 1.59.0. Теперь они собираются в двух вариантах - с использованием GNU libstdc++ и LLVM libc++ реализаций стандартной библиотеки C++. Ранее, в 10.2.0, предоставлялись библиотеки Boost, собранные только с GNU libstdc++, тем самым вынуждая пользователей указывать gnustl в своих проектах. Теперь разработчики вольны указывать любую из двух: ndk-build автоматически определит предпочтительный вариант и подключит правильные версии библиотек Boost.

Также, в связи с тем, что в CrystaX NDK теперь включен Python для Android, были начаты работы по сборке и тестированию Boost.Python. Эта работа еще не доведена до конца, но со временем ситуация будет улучшаться.

CrystaX - официально одобренный тестер для проекта Boost. Это означает, что в рамках проекта CrystaX NDK в непрерывном режиме тестируются библиотеки Boost, и результаты публикуются результаты на официальном сайте (master, develop). Это работает на пользу как Boost, так и CrystaX NDK. Пользователи Boost получают возможность использовать оттестированные библиотеки Boost на Android, а пользователи CrystaX NDK выигрывают оттого, что CrystaX NDK в свою очередь тестируется Boost тестами и тем самым на практике доказывается хорошая степень соответствия стандартам POSIX и C++.

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

Для меня что андроид, что айос - оба мертвы. Была надежда на UbuntuPhone, но пока что-то медленно идет все, я так понимаю приложений мало, хотя наличие сотен тысяч треша в маркетах тоже никогда не понимал. Нет сейчас на рынке золотой середины.

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

Для меня что андроид, что айос - оба мертвы. Была надежда на UbuntuPhone, но пока что-то медленно идет все, я так понимаю приложений мало, хотя наличие сотен тысяч треша в маркетах тоже никогда не понимал. Нет сейчас на рынке золотой середины.

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

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

Ценю ваши старания, хоть и не имею андроида! :)

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

С помощью CrystaX NDK уже портировано много открытого ПО на Android

Знаете, портирование на Android ПО написанного на C/C++ - это понятно, т.к. оно в несколько раз быстрее аналогов на Java, плюс ещё и энергопотребление уменьшается. Но вот зачем на Android нужен Python? Чтобы уменьшить в несколько раз время работы от батареи, плюс привнести перманентное неустранимое подтормаживание?

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

Но вот зачем на Android нужен Python?

Это не нам решать. Мы только даем возможность, а использовать ее или нет - решают разработчики.

Чтобы уменьшить в несколько раз время работы от батареи, плюс привнести перманентное неустранимое подтормаживание?

И тем не менее, несмотря на указанные минусы, ниша для Python есть, в том числе и на Android.

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

Не вижу ниши, более того все ниши что сейчас есть у Android на компьютерах созданы искусственно - те кто продвигает это тормозное, интерпретируемое «ненужно» воспользовались тем что некоторые ниши были не заполнены C++ и заполнили их Python, так что его якобы нужность проистекает только из-за того что уже создан большой задел на языке Python, кроме задела нет вообще никаких преимуществ перед C++, одни недостатки.

Вдумайтесь в это: Python выбирают не из-за скорости/качества работы или разработки, а только из-за наличия задела.

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

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

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

Не вижу ниши, более того все ниши что сейчас есть у Android на компьютерах созданы искусственно - те кто продвигает это тормозное, интерпретируемое «ненужно» воспользовались тем что некоторые ниши были не заполнены C++ и заполнили их Python, так что его якобы нужность проистекает только из-за того что уже создан большой задел на языке Python, кроме задела нет вообще никаких преимуществ перед C++, одни недостатки.

Мне неинтересно спорить на эту тему. Я не любитель Python, но то, что у него есть ниша, для меня очевидно. Впрочем, убеждать вас не собираюсь. Если вы считаете, что это не так - замечательно, на том и поладим.

Вдумайтесь в это: Python выбирают не из-за скорости/качества работы или разработки, а только из-за наличия задела.

В контексте нашего проекта не имеет ни малейшего значения, из-за чего его выбирают. Имеет значение только, что его выбирают.

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

Python выбирают не из-за скорости/качества работы или разработки

Во прохиндей, всей корпорацией ржали)))

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

s/ниши что сейчас есть у Android/ниши что сейчас есть у Python

anonymous ()

Я недавно столкнулся с тем, что в Android 5 поменяли ABI стандартной библиотеки (а именно заинлайнили некоторые функции). CrystalX решает эту проблему?

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

Я недавно столкнулся с тем, что в Android 5 поменяли ABI стандартной библиотеки (а именно заинлайнили некоторые функции). CrystalX решает эту проблему?

Да, решает. У нас эти функции - часть libcrystax, которая пакуется вместе с приложением, и поэтому такого вопроса просто не возникает. Иными словами, приложение всегда работает с той версией базовой библиотеки (перегружающей функции из libc), с которой оно было собрано.

crystax ()

круто

Удачи вашему проекту, возможно именно вашими стараниями из андроида и получится удобная система, для разработчика на с++

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

Так так так :-) Снова цепепе? :-)

С++ уже давно стал самым кроссплатформенным языком (в смысле именно он используется для написания кроссплатформенного софта).

anonymous ()

Молодцы, удачно продолжать. Не многие сегодня будут заниматься базовыми библиотеками.

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

С++ уже давно стал самым кроссплатформенным языком (в смысле именно он используется для написания кроссплатформенного софта).

Особенно библиотек с нэйм-манглингом. Бугага :-)

anonymous ()

Правильно ли я поняла, что теперь снимается проблема сборки любой версии python под андроид, без каких либо ограничений?

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

Правильно ли я поняла, что теперь снимается проблема сборки любой версии python под андроид, без каких либо ограничений?

Правильно. Ведь Python был собран из upstream пакетов, ни единого байта в них изменено не было. Это означает, что в дальнейшем мы будем так же просто обновлять исходники Python и собирать их.

В двух словах, принцип у нас такой - то, что собирается и работает на GNU/Linux, должно собираться и работать в точно таком же виде, без изменений в исходниках, и на Android.

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

Особенно библиотек с нэйм-манглингом. Бугага :-)

- Только у неумелых садовников, почтенный старец, - только у них!..

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

- Только у неумелых садовников, почтенный старец, - только у них!..

А что, у умелых садовников, уважаемый юноша, код генерируется без нэйм-манглинга? :-)

anonymous ()

Спасибо за ваш труд. Пользуемся.

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

А что, у умелых садовников, уважаемый юноша, код генерируется без нэйм-манглинга? :-)

Умелые садовники на то и умелые, что умеют справляться со своими инструментами, не позволяя им диктовать свою волю, о почтенный старец!

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

Умелые садовники на то и умелые, что умеют справляться со своими инструментами, не позволяя им диктовать свою волю, о почтенный старец!

Умелы садовники свои инструменты делают сами. А вот справляться или бороться в неравной битве со своими инструментами, не позволяя последним диктовать свою волю, - это удел любителей цепепе и им подобных :-)

anonymous ()

Супер-круто. Рад, что развиваетесь. Такими темпами скоро можно будет VPN-сервер со всей обвязкой в APK запаковывать!

Напишу про вас на реддите.

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

А вот справляться или бороться в неравной битве со своими инструментами, не позволяя последним диктовать свою волю, - это удел любителей цепепе и им подобных :-)

- Старость хотя и покрыла серебром его голову, но обогатила ее лишь снаружи, не превратив в золото то, что находится внутри головы. Он не смог вместить в себя мою мудрость.

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

Супер-круто. Рад, что развиваетесь. Такими темпами скоро можно будет VPN-сервер со всей обвязкой в APK запаковывать!

Непременно!

Напишу про вас на реддите.

А мы уже. Но если хочется написать своими словами, то я обеими руками за!

crystax ()

Хорошее дело делаете. Вам бы да финансирование от Гугла. Желаю вам удачи и широкой известности проекту!

densss ★★★ ()

Ваш проект — стартап? Финансирование — только с доната?

Развиваете проект, с прицелом, что крупная компания(интел\гугл\etc) раскошелится и поглотит??

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

Хорошее дело делаете. Вам бы да финансирование от Гугла. Желаю вам удачи и широкой известности проекту!

Уж кто-кто, а Google точно нас финансировать не будет. Ведь наш проект - это живой укор им.

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

Ваш проект — стартап?

Нет, по крайней мере в современном понимании этого слова. У нас нет инвесторов.

Финансирование — только с доната?

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

Развиваете проект, с прицелом, что крупная компания(интел\гугл\etc) раскошелится и поглотит??

Нет, такого прицела нет. Более того, этого как раз не хотелось бы. Этот проект - мое личное детище. Я в него вкладываю душу. Продавать кому-то, кто рассматривал бы его исключительно как источник бабла, не хочу.

А зарабатывать на нем хотелось бы, конечно, но исключительно по принципу «я делаю хорошую работу, а вы платите мне хорошие деньги». Как конкретно - вопрос пока открытый, но могу точно сказать, что проект всегда будет полностью открытым и бесплатным для использования. Это принципиальная позиция.

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

Как конкретно - вопрос пока открытый, но могу точно сказать, что проект всегда будет полностью открытым и бесплатным для использования. Это принципиальная позиция.

Благодаря такой вот заразной «принципиальной позиции», многим и приходится хлебать борщ. Поборники «открытого и бесплатного» софта (аля любители халявы и/или борщехлёбы) никак не поймут, что программирование на вольных хлебах превратилось в дешёвый или вовсе неблагодарный труд. Нет такой другой профессии, где можно проработать, не вставая, полгода перед монитором, заработав геморрой и остеохондроз шейного отдела, не заработать ни копейки непосредственно за разработанный программный продукт. Потому как в тренде «бесплатно и открыто», приходится придумывать, а как бы теперь заработать на лекарства для восстановления подпорченного здоровья, потому что коммерческий софт нынешним борщехлёбам/фонатикам свободного софта не двинуть. Потому то все эти NDK, фреймворки и т.п. выживают, именно, выживают, только за счёт того, что кто-то когда-то вдруг обратит внимание на их поделие и, о чудо, соизволит оплатить поддержку. И всё благодаря всеобщей такой вот «принципиальной позиции». Сантехнику или штукатуру заработать куда проще - работу сделал - деньги получил. Вот это вот позиция, так позиция.

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

Потому то все эти NDK, фреймворки и т.п. выживают, именно, выживают, только за счёт того, что кто-то когда-то вдруг обратит внимание на их поделие и, о чудо, соизволит оплатить поддержку. И всё благодаря всеобщей такой вот «принципиальной позиции».

Вы так за нас не переживайте. Мы-то как раз не «выживаем», а вполне себе «живем». Если вы не заметили, мы не полагаемся на пожертвования, и обеспечиваем себя сами. Мы не вьюноши с горящими глазами, а очень даже взрослые дядьки, давно попробовавшие этот мир на вкус и знающие, почем фунт лиха.

CrystaX NDK - открытый и будет открытым. Точка. Это принципиальная и осознанная позиция. Мы знаем, почему и зачем мы это делаем. Это не работа на публику и не «стремление угодить нищебродам», как вы это называете. Это часть нашей бизнес стратегии.

Ограниченные умы часто противопоставляют открытую работу для удовольствия и коммерческую работу за деньги. Но если есть стремление сделать мир лучше (и еще сколько-нибудь немножечко мозгов), вполне можно делать бесплатные открытые проекты, зарабатывая на них как деньги, так и карму.

crystax ()

Интересно, а swift уже пробовали собирать? По идеи ведь если obj-c рантайм есть, то и он должен легко и просто собраться.

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

Интересно, а swift уже пробовали собирать? По идеи ведь если obj-c рантайм есть, то и он должен легко и просто собраться.

Еще не пробовали, т.к. были очень заняты выпуском 10.3.0, но скоро попробуем.

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

И ещё вопрос, а почему вы не юзаете libhybris с glibc а пилите свою libc по сути?

libhybris - это другое. Это проект, позволяющий использовать Android-специфичные низкоуровневые HW адаптации на системах с glibc. У нас же цель некоторым образом обратная - запускать POSIX софт на Android.

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

А разве нельзя статически скомпилировать приложение с glibc и libhybris чтобы оно потом на ванильном андроиде запускалось?

И ещё, можно ли этим NDK, к примеру, пересобрать cyanogenmod целиком?

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

А разве нельзя статически скомпилировать приложение с glibc и libhybris чтобы оно потом на ванильном андроиде запускалось?

Теоретически можно. Но это подходит только для GPL ПО из-за лицензии glibc.

И ещё, можно ли этим NDK, к примеру, пересобрать cyanogenmod целиком?

Не могу ничего на этот счет сказать, т.к. просто не пробовал. Да и вообще в этом направлении никто не думал, т.к. не совсем понятно, зачем это может быть нужно.

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

Там же вроде есть исключение, позволяющее закрытый код линковать. Libhybris же вообще под apache лицензией выпускается.

Не могу ничего на этот счет сказать, т.к. просто не пробовал. Да и вообще в этом направлении никто не думал, т.к. не совсем понятно, зачем это может быть нужно.

Ну на самом деле тогда проще будет использовать gnu компоненты вместо android. Может быть даже получилось бы сделать gnu/android, который бы при этом мог ещё и закрытые приложения запускать.

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

Там же вроде есть исключение, позволяющее закрытый код линковать.

Исключение же не работает для статической линковки, разве нет?

Ну на самом деле тогда проще будет использовать gnu компоненты вместо android. Может быть даже получилось бы сделать gnu/android, который бы при этом мог ещё и закрытые приложения запускать.

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

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

На худой конец есть ещё musl.

Да, на musl мы смотрели. Это интересный проект, но, к сожалению, неидеальный, и поэтому просто взять musl и использовать вместо libcrystax не получилось. В частности, там нет полноценной поддержки локалей. Также там еще нет поддержки ARM64.

Но мы на него поглядываем и возможно в будущем попробуем его к нам интегрировать (мысль такая - дать возможность использовать на выбор несколько реализаций libc, как есть возможность использовать несколько реализаций libstdc++).

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

Старость хотя и покрыла серебром его голову, но обогатила ее > лишь снаружи

А до тебя не доходит что цепепе выбирают унылые кодеры-негры? Хотя что я. Конечно доходит, ведь ты на них неплохо заработаешь. Дальновидненько да!

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

Во прохиндей, всей корпорацией ржали)))

+100500 :)

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

Лососан, ты что ли? Хапни вялого и спокойся, гнилушка.

Я просто улыбаюсь :-) А кто такой Лососан? :-) Единственное, что приходит на ум, это некто под псевдонимом lovesan (или lovesun, не помню). Если имеется в виду этот персонаж, то нет, мимо. Так что иди себе дальше, кодь на своём цепепе очередную фабрику звёзд по паттерну мост-одиночка-посетитель :-)

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

Вы так за нас не переживайте.

Вах, какое самомнение :-) По-мимо вас к индустрии имеют отношения ещё очень многие, в т.ч., и улыбчивый анонимус, которому нравится создавать софт, но не нравится быть использованным за тарелку борща, пусть даже и с хлебом да с маслом. :-)

Мы-то как раз не «выживаем», а вполне себе «живем». Если вы не заметили, мы не полагаемся на пожертвования, и обеспечиваем себя сами.

И, судя по сказанному, это за счёт выполнения отдельных заказов с помощью своего NDK. Вашим клиентам не нужен ваш NDK, им нужен готовый продукт. Какой тогда смысл делать ПО открытым и бесплатным? :-) Чтобы завладеть аудиторией? Чтобы показать, что вы умеете делать софт? Чтобы поделиться с миром своим ноу-хау?

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

Ну и почем нынче фунт лиха? :-)

CrystaX NDK - открытый и будет открытым. Точка. Это принципиальная и осознанная позиция. Мы знаем, почему и зачем мы это делаем. Это не работа на публику и не «стремление угодить нищебродам», как вы это называете. Это часть нашей бизнес стратегии.

Ага, значит, пункт «чтобы завладеть аудиторией» :-) Т.е. вы реально планируете (мечтаете) набрать «критическую массу» пользователей, которая вас и будет кормить прямо или косвенно? :-) Такие «бизнес стратегии», пожалуй, у многих разработчиков свободного софта :-)

Но если есть стремление сделать мир лучше (и еще сколько-нибудь немножечко мозгов), вполне можно делать бесплатные открытые проекты, зарабатывая на них как деньги, так и карму.

Стремление сделать мир лучше - достойно, без сомнения. И всякий нормальный человек таким желанием обладает от природы. Но вот «делать бесплатные открытые проекты, зарабатывая на них как деньги, так и карму» - звучит как обман, ибо, или проект бесплатен, или платен. А зарабатывать на «бесплатном» - это как воздух продавать. Ложь кармы не добавляет :-)

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