La plataforma Android brinda soporte para el desarrollo de componentes nativos del sistema operativo en Rust, un lenguaje de programación de sistemas moderno que brinda garantías de seguridad de la memoria con un rendimiento equivalente a C/C++. Rust utiliza una combinación de comprobaciones en tiempo de compilación que hacen cumplir la vida útil y la propiedad de los objetos, y comprobaciones en tiempo de ejecución que garantizan accesos válidos a la memoria, eliminando así la necesidad de un recolector de basura.
Rust proporciona una variedad de características de lenguaje moderno que permiten a los desarrolladores ser más productivos y tener más confianza en su código:
- Programación concurrente segura : la facilidad con la que esto permite a los usuarios escribir código eficiente y seguro para subprocesos ha dado origen al lema Fearless Concurrency de Rust.
- Sistema de tipos expresivos : Rust ayuda a prevenir errores de programación lógica al permitir tipos altamente expresivos (como envoltorios Newtype y variantes de enumeración con contenido).
- Comprobaciones más estrictas en tiempo de compilación : más errores detectados en tiempo de compilación aumentan la confianza del desarrollador en que cuando el código se compila correctamente, funciona según lo previsto.
- Marco de pruebas integrado : Rust proporciona un marco de pruebas integrado donde las pruebas unitarias se pueden colocar junto con la implementación que prueban, lo que facilita la inclusión de las pruebas unitarias.
- Aplicación del manejo de errores : las funciones con fallas recuperables pueden devolver un tipo de resultado , que será una variante de éxito o una variante de error. El compilador requiere que las personas que llaman verifiquen y manejen la variante de error de una enumeración
Result
devuelta por una llamada de función. Esto reduce la posibilidad de que se produzcan errores resultantes de fallos no controlados. - Inicialización : Rust requiere que cada variable se inicialice con un miembro legal de su tipo antes de su uso, lo que evita una inicialización no intencionada con un valor inseguro.
- Manejo de enteros más seguro : todas las conversiones de tipo entero son conversiones explícitas. Los desarrolladores no pueden realizar conversiones accidentalmente durante una llamada de función cuando asignan una variable o cuando intentan hacer aritmética con otros tipos. La comprobación de desbordamiento está activada de forma predeterminada en Android para Rust, lo que requiere que las operaciones de desbordamiento sean explícitas.
Para obtener más información, consulte la serie de publicaciones de blog sobre compatibilidad con Android Rust:
- Óxido en la plataforma Android
Proporciona una descripción general de por qué el equipo de Android introdujo Rust como un nuevo lenguaje de plataforma. - Integrando Rust en el proyecto de código abierto de Android
Analiza cómo se introdujo el soporte de Rust en el sistema de construcción y por qué se tomaron ciertas decisiones de diseño. - Interoperabilidad Rust/C++ en la plataforma Android
Analiza el enfoque de la interoperabilidad de Rust/C++ dentro de Android.