Платформа Android обеспечивает поддержку разработки нативных компонентов ОС на языке Rust, современном языке системного программирования, который гарантирует безопасность памяти и производительность, эквивалентную C/C++. Rust использует комбинацию проверок на этапе компиляции, обеспечивающих время жизни объектов и владение ими, и проверок на этапе выполнения, гарантирующих корректный доступ к памяти, что исключает необходимость в сборщике мусора.
Rust предоставляет ряд современных языковых возможностей, которые позволяют разработчикам быть более продуктивными и уверенными в своем коде:
- Безопасное параллельное программирование — простота, с которой это позволяет пользователям писать эффективный, потокобезопасный код, породила слоган Rust « Бесстрашная параллельность» .
- Выразительная система типов — Rust помогает предотвратить логические ошибки программирования, позволяя использовать очень выразительные типы (например, обертки Newtype и варианты перечислений с содержимым).
- Более строгие проверки на этапе компиляции — выявление большего количества ошибок на этапе компиляции повышает уверенность разработчиков в том, что успешно скомпилированный код работает должным образом.
- Встроенная среда тестирования — Rust предоставляет встроенную среду тестирования, в которой модульные тесты могут размещаться рядом с проверяемой реализацией, что упрощает включение модульного тестирования.
- Обеспечение обработки ошибок — функции с устранимыми сбоями могут возвращать тип Result , который может быть либо вариантом успешного выполнения, либо вариантом ошибки. Компилятор требует от вызывающих функций проверять и обрабатывать вариант ошибки перечисления
Result, возвращаемого при вызове функции. Это снижает вероятность возникновения ошибок, вызванных необработанными сбоями. - Инициализация — Rust требует, чтобы каждая переменная перед использованием была инициализирована допустимым членом своего типа, что предотвращает непреднамеренную инициализацию небезопасным значением.
- Более безопасная обработка целых чисел — все преобразования целочисленных типов выполняются явным приведением типов. Разработчики не смогут случайно выполнить приведение типа во время вызова функции при присваивании значения переменной или при попытке выполнить арифметические операции с другими типами. Проверка на переполнение включена по умолчанию в Android для Rust, что требует явного выполнения операций переполнения.
Для получения более подробной информации см. серию статей в блоге о поддержке Rust в Android:
- Rust на платформе Android
В статье дается обзор причин, по которым команда разработчиков Android представила Rust в качестве нового языка платформы. - Интеграция Rust в проект Android с открытым исходным кодом
В статье обсуждается, как в систему сборки была внедрена поддержка Rust и почему были приняты те или иные проектные решения. - Взаимодействие Rust и C++ на платформе Android
В статье обсуждается подход к обеспечению взаимодействия Rust и C++ в рамках Android.