Заголовок: Rust обошёл C/C++ по объёму нового кода в Android: как это повлияло на безопасность и производительность
В 2025 году язык программирования Rust занял лидирующую позицию в Android, впервые превзойдя C и C++ по объёму нового кода, добавленного в платформу. Такой поворот стал результатом целенаправленной стратегии Google по внедрению безопасных методов разработки и переходу на современные языки, способные минимизировать уязвимости, связанные с управлением памятью.
С момента начала использования Rust в системных компонентах Android в 2020 году, компания Google последовательно расширяла его применение. Уже к 2025 году доля новых уязвимостей, связанных с ошибками управления памятью, снизилась до рекордных 20%, тогда как в 2019 году этот показатель составлял 76%. Для сравнения, средний уровень таких уязвимостей в индустрии по-прежнему держится на уровне около 70%.
Google подчёркивает, что основной источник уязвимостей — это новый код. Существующий (старый) код с течением времени становится безопаснее, поскольку большая часть потенциальных ошибок в нём уже выявлена и устранена. Поэтому компания приняла решение не переписывать старые модули на Rust или других безопасных языках, а сосредоточиться на написании нового функционала с нуля, используя Rust.
Помимо повышения безопасности, переход на Rust оказался выгоден и с точки зрения производительности и эффективности разработки. Количество откатов изменений, вызванных скрытыми ошибками, для кода на Rust оказалось в четыре раза ниже по сравнению с аналогичным кодом на C++. Также было зафиксировано сокращение времени на рецензирование кода примерно на 25%, а число необходимых ревизий при добавлении изменений сопоставимого объёма — на 20% меньше.
Эти улучшения объясняются тем, что Rust позволяет обнаруживать большинство проблем на ранней стадии разработки. Благодаря строгой системе типов и управлению памятью без сборщика мусора, разработчики могут замечать ошибки ещё до того, как код попадает на ревью. Это не только ускоряет процесс, но и значительно уменьшает нагрузку на команду тестирования.
Дополнительное преимущество Rust — возможность обойтись без изоляции в песочнице (sandbox). Это особенно важно для системного и низкоуровневого кода, где любые накладные расходы критичны. За счёт этого удалось повысить общую производительность Android без ущерба для безопасности.
Из значимых проектов, реализованных с использованием Rust, можно отметить драйвер в ядре Linux 6.12 — первый широко применяемый системный драйвер, написанный на Rust. Также язык активно используется при разработке прошивок, пользовательских приложений и компонентов сервисов Google Play. В частности, протокол Nearby Presence, обеспечивающий обнаружение устройств по Bluetooth, реализован на Rust. Ожидается, что в ближайшем обновлении Google Messages появится новая версия протокола MLS, также написанная на Rust.
В браузерном движке Chromium Rust используется для написания парсеров различных форматов, включая PNG, JSON и веб-шрифты. Такой подход позволяет улучшить безопасность даже в таких сложных и критичных к ошибкам подсистемах, как рендеринг веб-контента.
Общая база кода на Rust в Android уже превысила 5 миллионов строк. При этом выявлена лишь одна потенциально опасная ошибка, связанная с переполнением буфера — уязвимость CVE-2025-48530. Она была обнаружена в библиотеке Crabby Avif, реализующей парсинг и декодирование изображений в формате Avif. Ошибка возникла в блоке unsafe, который допускает ручное управление памятью — единственный источник риска в Rust. Однако благодаря системе защиты Scudo, применяемой в прошивках Pixel и некоторых других устройств, даже при эксплуатации уязвимость была бы блокирована.
Важно отметить, что только 4% всего кода на Rust в Android используют unsafe-блоки. Это означает, что подавляющее большинство кода остаётся в рамках безопасной модели памяти, что и обеспечивает столь низкую плотность уязвимостей — всего 0.2 на миллион строк. Для сравнения, в коде на C и C++ этот показатель достигает примерно 1000 уязвимостей на миллион строк.
Переход на Rust стал не просто шагом в сторону модного языка, а осознанным решением, основывающимся на конкретных метриках и результатах. Инженеры Google делают ставку на Rust как на инструмент, способный изменить подход к системному программированию — безопасно, эффективно и с минимальными издержками.
Однако важно понимать, что Rust — не панацея. Его внедрение требует изменения инфраструктуры, обучения разработчиков и пересмотра подходов к ревью. Тем не менее, опыт Android показывает, что подобные усилия окупаются многократно, особенно в контексте масштабных и критически важных проектов.
С растущей популярностью Rust в других проектах с открытым исходным кодом — от системных компонентов до браузеров — можно ожидать, что его влияние на индустрию будет только усиливаться. Фактически, Rust становится новым стандартом безопасности на уровне ядра и инфраструктуры, и его интеграция в Android — лишь одно из подтверждений этого тренда.
Переход на Rust также открывает новые возможности для разработчиков. Благодаря строгой типизации, отсутствию неопределённого поведения и мощной системе заимствований, программисты могут писать надёжный код без необходимости постоянно бороться с утечками памяти, гонками данных и другими типичными проблемами C/C++.
С учётом растущего объёма кода на Rust в Android, можно ожидать расширения области его применения. В ближайшие годы язык, вероятно, будет использоваться не только в системных компонентах, но и в пользовательских приложениях, библиотеках и даже в интерфейсных слоях. Это приведёт к более стабильной и защищённой экосистеме Android в целом.
Таким образом, успех Rust в Android — это не просто замена одного языка другим, а фундаментальное изменение подхода к разработке безопасного и надёжного программного обеспечения.



