Android: Rust wins
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 14.11.25 12:51
Оценка: 2 (1)
Rust побеждает C/C++ в коде Android.

В настоящее время в Android на Rust написано около 5 млн строк кода, в которых выявлена лишь одна потенциальная уязвимость, вызванная проблемами при работе с памятью. Таким образом плотность подобных уязвимостей в коде на Rust составила 0.2 уязвимости на миллион строк кода. Для сравнения в коде на языках C и C++ данный показатель составляет около 1000 уязвимостей на миллион строк кода. Ключевым источником проблем в Rust является код, находящийся в unsafe-блоках. Доля подобного кода оценивается в 4% от всего кода, написанного на Rust.


Круто, что сказать. С++ потихоньку уходит и из системного программирования?
Re: Android: Rust wins
От: mike_rs Россия  
Дата: 14.11.25 13:22
Оценка: :)))
Здравствуйте, Nuzhny, Вы писали:

N>Rust побеждает C/C++ в коде Android.

N>Круто, что сказать. С++ потихоньку уходит и из системного программирования?

где андроид и где системное программирование
Re: Android: Rust wins
От: BlackEric http://black-eric.lj.ru
Дата: 14.11.25 13:35
Оценка: :)
Здравствуйте, Nuzhny, Вы писали:

N>Круто, что сказать. С++ потихоньку уходит и из системного программирования?


Ничего удивительного. Новый, безопасный язык. C++ очень сложен и следовательно позволяет допускать множество ошибок при написании кода. ТО что было хорошо в 90е-10е, сейчас уже не годится.
https://github.com/BlackEric001
Re[2]: Android: Rust wins
От: Shmj Ниоткуда  
Дата: 14.11.25 15:19
Оценка: +1
Здравствуйте, mike_rs, Вы писали:

_>где андроид и где системное программирование


Так там же речь не про приложения для Android, которые на Kotlin пишут, а имменно про саму ОС Android.
=сначала спроси у GPT=
Re[2]: Android: Rust wins
От: Shmj Ниоткуда  
Дата: 14.11.25 15:21
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Ничего удивительного. Новый, безопасный язык. C++ очень сложен и следовательно позволяет допускать множество ошибок при написании кода. ТО что было хорошо в 90е-10е, сейчас уже не годится.


Чего-то там идут дискусси по memory safety и в C++ https://www.infoworld.com/article/4065702/safe-c-proposal-for-memory-safety-flames-out.html
=сначала спроси у GPT=
Re[2]: Android: Rust wins
От: B0FEE664  
Дата: 14.11.25 17:30
Оценка: +2
Здравствуйте, BlackEric, Вы писали:

N>>Круто, что сказать. С++ потихоньку уходит и из системного программирования?

BE>Ничего удивительного. Новый, безопасный язык. C++ очень сложен и следовательно позволяет допускать множество ошибок при написании кода. ТО что было хорошо в 90е-10е, сейчас уже не годится.

Не годится, потому что плюшевые ламеры освоить не могут, а не потому, что что-то хорошо или плохо.
И каждый день — без права на ошибку...
Re[3]: Android: Rust wins
От: Shmj Ниоткуда  
Дата: 14.11.25 18:03
Оценка: :)
Здравствуйте, B0FEE664, Вы писали:

BFE>Не годится, потому что плюшевые ламеры освоить не могут, а не потому, что что-то хорошо или плохо.


Беда в том что Rust как раз на порядок сложнее в освоении, нежели C++ С++ бери и пиши — никто по рукам не бьет. То что прога дырявая или падает — уже проблемы пользователей. А Rust же бьет по голове за каждую потенциальную ошибку.
=сначала спроси у GPT=
Re[4]: Android: Rust wins
От: Великий Мессия google
Дата: 14.11.25 18:29
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, B0FEE664, Вы писали:


BFE>>Не годится, потому что плюшевые ламеры освоить не могут, а не потому, что что-то хорошо или плохо.


S>Беда в том что Rust как раз на порядок сложнее в освоении, нежели C++ С++ бери и пиши — никто по рукам не бьет. То что прога дырявая или падает — уже проблемы пользователей. А Rust же бьет по голове за каждую потенциальную ошибку.


поэтому растоманы скоро останутся без еды
их заменит ИИ
потому что натренить модель которая по ошибке может выдавать исправление — проще
Re: Android: Rust wins
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.11.25 18:48
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>

N>В настоящее время в Android на Rust написано около 5 млн строк кода, в которых выявлена лишь одна потенциальная уязвимость, вызванная проблемами при работе с памятью. Таким образом плотность подобных уязвимостей в коде на Rust составила 0.2 уязвимости на миллион строк кода. Для сравнения в коде на языках C и C++ данный показатель составляет около 1000 уязвимостей на миллион строк кода. Ключевым источником проблем в Rust является код, находящийся в unsafe-блоках. Доля подобного кода оценивается в 4% от всего кода, написанного на Rust.


N>Круто, что сказать. С++ потихоньку уходит и из системного программирования?


Для C и C++ это суммарный, средний, какой показатель? Не может быть такого, что 999.8 уязвимостей — это сишные, а 0.2 — плюсовые?

И ещё вопрос — как там C++ используется? Как сишечка с синтаксическим сахаром, или нормально?
Маньяк Робокряк колесит по городу
Re[5]: Android: Rust wins
От: Shmj Ниоткуда  
Дата: 14.11.25 19:04
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

ВМ>поэтому растоманы скоро останутся без еды

ВМ>их заменит ИИ

Та кто его знает. Вот C++ выдает ошибку на 3 экрана, мне лень читать все это. Копирую простыну ИИ — а ему эти 3 экрана — 1 секунда его внимания — сразу говорит в чем дело.

Тут как раз может быть обратный эффект — то что сложно человеку (как то запомнить 2 Гб. документации) — легко для ИИ. И наоборот — то что сложно ИИ (часть из) — человеку может быть легко и очевидно.

В любом случае пока работы непочатый край и вряд ли кто-то останется прямо уж без еды...
=сначала спроси у GPT=
Re[3]: Android: Rust wins
От: wl. Россия  
Дата: 14.11.25 19:09
Оценка:
Здравствуйте, B0FEE664, Вы писали:

N>>>Круто, что сказать. С++ потихоньку уходит и из системного программирования?

BE>>Ничего удивительного. Новый, безопасный язык. C++ очень сложен и следовательно позволяет допускать множество ошибок при написании кода. ТО что было хорошо в 90е-10е, сейчас уже не годится.
BFE>Не годится, потому что плюшевые ламеры освоить не могут, а не потому, что что-то хорошо или плохо.

да, похоже на то. Главное, что я увидел в статье:

При включении в состав Android изменений сопоставимого размера, изменения на Rust требуют примерно на 20% меньше ревизий, чем их эквиваленты на C++.
Данные показатели объясняются упрощением тестирования и смещением выявления ошибок на ранние стадии разработки, на которых ошибки становятся заметны ещё до того, как разработчик приступает к проверке кода. Кроме того, за счёт исключения накладных расходов на sandbox-изоляцию в коде на Rust удалось добиться повышения производительности.

Язык Rust загоняет разрабов в некое стойло, не дающее делать вещи подобные:
-        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface*)));
+        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface)));
Re: Android: Rust wins
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.25 21:01
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Rust побеждает C/C++ в коде Android.

N>

N>В настоящее время в Android на Rust написано около 5 млн строк кода, в которых выявлена лишь одна потенциальная уязвимость, вызванная проблемами при работе с памятью. Таким образом плотность подобных уязвимостей в коде на Rust составила 0.2 уязвимости на миллион строк кода. Для сравнения в коде на языках C и C++ данный показатель составляет около 1000 уязвимостей на миллион строк кода. Ключевым источником проблем в Rust является код, находящийся в unsafe-блоках. Доля подобного кода оценивается в 4% от всего кода, написанного на Rust.


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

N>Круто, что сказать. С++ потихоньку уходит и из системного программирования?


Мне кажется, в долгосрочной перспективе C++ вообще уходит. Но это может занять еще очень много времени.
Re[4]: Android: Rust wins
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.25 21:04
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Беда в том что Rust как раз на порядок сложнее в освоении, нежели C++


Почему он сложнее?
Re[4]: Android: Rust wins
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.25 21:12
Оценка:
Здравствуйте, wl., Вы писали:

wl.>

wl.>При включении в состав Android изменений сопоставимого размера, изменения на Rust требуют примерно на 20% меньше ревизий, чем их эквиваленты на C++.


Всего на 20%? А топик начинался так, словно в расте вообще ошибок не делают.

wl.>

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


Хм. А обещали нативную скорострельность, как у Си. А не за счет исключения sandbox-га.

wl.>Язык Rust загоняет разрабов в некое стойло, не дающее делать вещи подобные:

wl.>
wl.>-        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface*)));
wl.>+        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface)));
wl.>


А зачем делать подобные вещи? В Rust-е нет способа зааллоцировать типизованный кусок памяти?
Re[5]: Android: Rust wins
От: Shmj Ниоткуда  
Дата: 14.11.25 21:36
Оценка:
Здравствуйте, Pzz, Вы писали:

wl.>>Язык Rust загоняет разрабов в некое стойло, не дающее делать вещи подобные:

wl.>>
wl.>>-        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface*)));
wl.>>+        const auto interface = static_cast<libusb_interface*>(calloc(1, sizeof(libusb_interface)));
wl.>>


Pzz>А зачем делать подобные вещи? В Rust-е нет способа зааллоцировать типизованный кусок памяти?


В Rust можно в небезопасном (unsafe) коде:

let layout = Layout::new::<*mut MyStruct>(); // выделяем размер указателя
let ptr = alloc_zeroed(layout) as *mut MyStruct;


А вот в C++ даже не придумали пока концепции unsafe — весь код находится в равных условиях без разделения.

В Rust-команде можно договориться что unsafe пишет только тимлид, а всем остальным это слово запрещено использовать.
=сначала спроси у GPT=
Re[6]: Android: Rust wins
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.25 21:40
Оценка:
Здравствуйте, Shmj, Вы писали:

S>В Rust можно в небезопасном (unsafe) коде:


S>
S>let layout = Layout::new::<*mut MyStruct>(); // выделяем размер указателя
S>let ptr = alloc_zeroed(layout) as *mut MyStruct;
S>


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

S>В Rust-команде можно договориться что unsafe пишет только тимлид, а всем остальным это слово запрещено использовать.


И как же все остальные достигнут нормальной квалификации, если им запрещено программировать?
Re[5]: Android: Rust wins
От: SkyDance Земля  
Дата: 14.11.25 21:47
Оценка:
Pzz>Почему он сложнее?

Потому что заставляет тебя заранее исправить всю кривизну (ту самую, что ведет к уязвимостям). Заставляет разобраться до того, как все будет работать в проде. Еще на этапе компиляции. Понятное дело, что первоначальные затраты заметно выше. И так же понятно, что потом это поддерживать проще.

Примерно как с тестами. Если их не написать с самого начала, то зачастую можно быстрее отправить какой-то код в прод. Зато потом...
Re[6]: Android: Rust wins
От: wl. Россия  
Дата: 14.11.25 21:58
Оценка: :)
Здравствуйте, SkyDance, Вы писали:

Pzz>>Почему он сложнее?


SD>Потому что заставляет тебя заранее исправить всю кривизну (ту самую, что ведет к уязвимостям). Заставляет разобраться до того, как все будет работать в проде. Еще на этапе компиляции. Понятное дело, что первоначальные затраты заметно выше. И так же понятно, что потом это поддерживать проще.


SD>Примерно как с тестами. Если их не написать с самого начала, то зачастую можно быстрее отправить какой-то код в прод. Зато потом...


у меня вообще никаких тестов нет в коде, тестеры вручную тестируют. ПМИ будет в понедельник, боюсь будет эпик фэйл.
ладно, надеюсь, потом дадут время на рефакторинг, чтобы привести код к такому виду, чтобы тестовый фреймворк в целом к этому легаси можно было бы прикрутить
Re[7]: Android: Rust wins
От: SkyDance Земля  
Дата: 15.11.25 01:01
Оценка:
wl.>у меня вообще никаких тестов нет в коде, тестеры вручную тестируют. ПМИ будет в понедельник, боюсь будет эпик фэйл.
wl.>ладно, надеюсь, потом дадут время на рефакторинг, чтобы привести код к такому виду, чтобы тестовый фреймворк в целом к этому легаси можно было бы прикрутить

Rust по сути представляет набор определенных тестов, которые код должен пройти на этапе компиляции (тот самый borrow checker, ага). Поэтому на нем сложнее писать, но зато меньше ошибок.

В этом плане также интересен OCAml, его система типизации тоже заставляет программиста более серьезно подойти к проблеме. В итоге заметно меньше багов на строку кода.


Но сам этот параметр (багов на строку кода) неверный, т.к. некоторые языки уж очень многословные. Есть известное исследование от Ericsson, когда они свою С/С++ систему переписали на Erlang, и там стало в 4 раза меньше строк кода (при той же плотности багов на строку, то есть общее количество багов снизилось в 4 раза). То самое подтверждение формулы Эйнштейна, E=m*C^2.
Errors = More * Code ^ 2.
Re[5]: Android: Rust wins
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 15.11.25 06:25
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Всего на 20%? А топик начинался так, словно в расте вообще ошибок не делают.


Это же разные штуки: ревизии в коде и число уязвимостей.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.