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