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