Введение в ржавчину Android

Платформа Android обеспечивает поддержку разработки собственных компонентов ОС на Rust, современном языке системного программирования, который обеспечивает гарантии безопасности памяти с производительностью, эквивалентной C/C++. Rust использует комбинацию проверок во время компиляции, обеспечивающих время жизни и владение объектами, и проверок во время выполнения, обеспечивающих правильный доступ к памяти, тем самым устраняя необходимость в сборщике мусора.

Rust предоставляет ряд современных языковых функций, которые позволяют разработчикам быть более продуктивными и уверенными в своем коде:

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

Для получения дополнительной информации см. серию сообщений в блоге о поддержке Android Rust: