LINUX.ORG.RU
ФорумTalks

Rust теперь будет использоваться для разработки Android

 , ,


1

4

В общем, разработчики запарились с уязвимостями, связанными с ошибками работы с памятью на C и C++, которые стабильно составляют ~70% всех найденных уязвимостей на Android высокой степени опасности. И вместо того, чтобы вкладывать ресурсы и усилия на их поиски, предупреждение и предотвращение, разработчики в первую очередь решили избегать эти ошибки. В связи с этим, разработчики объявили о поддержке языка программирования Rust для платформы AOSP (Android Open Source Project) для разработки самой ОС.

https://security.googleblog.com/2021/04/rust-in-android-platform.html

★★★★★

ошибками работы с памятью на C и C++, которые стабильно составляют ~70% всех найденных уязвимостей

Раз уж платиновая тема в семисот миллиардный раз поднимается, может кто-нибудь внятно обьяснить, почему в случае с крестами это не косяки с типами и не ошибки типов? Достать данные из указателя с кастом и начать ломиться туда, где ничего нет и пытаться достать из них то, чего там быть не может – это случайно не те самые пресловутые ошибки «работы с памятью»?

inb4 расовые кондиции, выход буфера из берегов, и прочие ругательства из методичек

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

Посмотри в предыдущей платиновой теме или в методичке.

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

Потому, что невозможно на C++ полностью решить эту проблему системой типов. По крайней мере пока никто не решил.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

Rust теперь будет использоваться для разработки Android

Отлично. Осталось оттуда выкинуть Java и заживём.

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

Они же там флюттер уже должен всех победить был.

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

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

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

unsafe легче контролировать. Кроме того, unsafe тоже накладывает некоторые ограничения. Хотя конечно как говорится нет преград для идиотов и при желании и большом старании и на rust можно выстрелить себе в ногу.

WatchCat ★★★★★
()

Rust теперь будет использоваться для разработки Android

Сегодня не первое апреля.

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

Не совсем он. Это часть кода, которая передаётся от Гугла в открытый доступ проекту AOSP. В частности, там 6ет ряда драйверов.

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

Раст тебе не позволит сделать 95% ошибок. Не говоря уж о том, что он в любом отношении превосходит ЦПП. Хотя бы не надо держать в голове, к какому конструктору надо приписать explicit, чтобы он случайно неявно не приводился к какому-нибудь unsigned long int.

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

Не говоря уж о том, что он в любом отношении превосходит ЦПП.

В «любом», конечно, не превосходит. По количеству написанного и отлаженного ПО у C и C++ вряд ли есть равные. А с растом ведь как, если требуется реализация алгоритма, - давно уже написанного на C, и вылизанного до блеска, - есть два базовых варианта:

  1. использовать C’шную библиотеку, завернутую для вызова из раста;
  2. использовать библиотеку на расте, которую позавчера написал Васян, изучивший синтаксис модного языка, и которую не проверял даже его друг Толян, не говоря уже о профессионалах.

И кривая обучения у C++ плавнее оной для раста. Все проблемы работы с памятью в C++ можно изучать постепенно, либо постепенно читая о них в литературе, либо постепенно наступая на грабли самостоятельно. А в расте на человека сразу выливают ушат технических помоев, все подробности упраления памятью необходимо явно выражать в коде. В том числе и те, которые на начальном этапе разработки вообще не играют роли и только мешают создавать прототип системы. В итоге с C++ человек пробует, экспериментирует, ошибается, но создает систему быстрее, чем на расте.

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

Раст тебе не позволит сделать 95% ошибок.

Поправочка, 95% ошибок из той зловещей категории, ради которой раст создавался. Но это не все ошибки, и даже больше, это не всегда самые дорогие для исправления ошибки. Ошибки в дизайне никакой раст не исправит.

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

В итоге с C++ человек пробует, экспериментирует, ошибается, но создает систему быстрее, чем на расте.

В итоге с Rust человек пробует, получает люлей от компилятора, исправляет и создает систему быстрее, чем на С++

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

В итоге с Rust человек пробует, получает люлей от компилятора, исправляет и создает систему быстрее

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

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

Поправочка, 95% ошибок из той зловещей категории, ради которой раст создавался

ну правильно
вот только эти 95% тебе раст отловит при компиляции и у тебя будет куча времени отловить оставшиеся 5% в рантайме.
а в С++ ты все 100% будешь вылавливать в рантайме.

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

что может быть дороже продакшена упавшего на сегфолте или зависшего на дедлоке?

Ошибки в дизайне никакой раст не исправит.

угу, тут без редактора днк не обойтись.

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

google еще в fuchsia предпринимал какие-то попытки в rust, но и там доля его вовлеченности весьма невелика и вовсе не в том сегменте кода который бы однозначно был заменой С. Посмотрим что там из всего этого выйдет, обычно много разговоров, а потом выясняется что смотреть особо не на что.

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

что может быть дороже продакшена упавшего на сегфолте или зависшего на дедлоке?

отсутствие продакшена. За твой дедлок или сегфолт ты или твой начальник уже получил деньги, дал тебе зарплату, ты потратил ее на себя и своих близких, купил товары и услуги, экономика развилась дальше, не говоря уже о том, что ты получил опыт разработки системы, который далеко не ограничивается борьбой с race conditions и сегфолтами. Если ты оглядишься вокруг, большая часть всего, что программируется и позволяет нам жить в современном мире, создавалось и до сих пор создается на таких вот небезопасных технологиях. Раст на фоне всей индустрии видно только в микроскоп, и появился он только потому что часть прибыли, полученной применением небезопасных языков (мизерную), решили бросить на еще один эксперимент.

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

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

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

ты занимаешься демагогией и рассуждаешь как говнокодер.

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

в фуксии его разрешено применять везде, кроме микроядра.
пока так, может в будущем и там разрешат.

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

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

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

я мыслю как инженер, а ты как г-инженер (менеджер).
«Не умеешь работать? Управляй! Не умеешь управлять? Учи!»

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

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

По количеству написанного и отлаженного ПО у C и C++ вряд ли есть равные.

Ну и что теперь? Деды воевали и нам велели? Выкинем к чёрту всю цивилизацию, ведь по количеству растопленных костров огниво в 1к раз превосходит газовую плиту!

Разумеется, переход с технологий, которые полвека в крови и слезах создавались, не бывает бесшовным. Но это не повод становиться раком поперёк прогресса.

кривая обучения у C++ плавнее оной для раста

Чушь. Для С++ надо обмазаться чем-нибудь вроде учебника Праты на 1200 страниц и потом ещё раздрачиваться новыми стандартами до полной готовности. Для Раст есть «Язык программирования Раст» на 600 страниц, прямо от авторов языка, и этого обычно достаточно. Не спорю, надо заглядывать порой в Растономикон, или в справочник по API, но это уже рабочий процесс. Кривая входа у Раст чуть сложнее, чем у Питона.

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

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

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

О, а вот и пользователи аргумента «шо всё на своих еропланах литаити вы просто дилежанс ниосилеле» подъехали)

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

Ну так… есть же люди, которые не могут использовать новую фичу стандарта, потому, что IDE о новой фича пока не знает и автодополнение не срабатывает.

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