Google теперь поддерживает Rust для разработки базовой ОС Android

В течение последних нескольких лет Google призывал разработчиков писать приложения для Android на Kotlin. Однако базовая ОС по-прежнему использует C и C++, хотя сегодня Google объявил о поддержке Rust в Android Open Source Project (AOSP).

Это часть усилий Google по устранению ошибок безопасности памяти в операционной системе:

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

Компания считает, что языки с безопасной памятью, такие как Rust, являются «наиболее экономически эффективным средством для предотвращения ошибок памяти» в загрузчике, fastboot, ядре и других низкоуровневых частях ОС. В отличие от C и C++, где разработчики управляют временем жизни памяти, Rust «обеспечивает гарантии безопасности памяти, используя комбинацию проверок во время компиляции для обеспечения времени жизни/владения объектами и проверок во время выполнения для обеспечения допустимости доступа к памяти». Google работал над добавлением этой поддержки в AOSP последние 18 месяцев.

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

Реклама — прокрутите, чтобы увидеть больше контента

Что касается существующего кода, Google больше сосредоточен на новой разработке на Rust, а не на переписывании зрелого кода. Это связано с тем, что большинство «ошибок памяти возникают в новом или недавно измененном коде, причем около 50% из них возрастом менее года».

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

Google представит несколько первых проектов в ближайшие месяцы, а масштабирование Rust на большее количество частей Android является «многолетним проектом».