Платформа 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.