Google ha anunciado la compatibilidad del lenguaje de programación Rust con Android con el objetivo de solucionar algunos errores de seguridad.
El sistema operativo para móviles está escrito en varios lenguajes, pero no todos se aplican en todos sus niveles. Cuando hablamos del desarrollo de Android, muchos suelen pensar en Java – como bien hizo saber Oracle– y Kotlin como los lenguajes predominantes.
Sin embargo, esto no es del todo cierto porque las opciones que estos ofrecen no son suficientes en los niveles inferiores del sistema operativo; y ahí es donde entran en juego C y C++, a los que se acaba de sumar Rust para intentar resolver las limitaciones de seguridad allí donde Java y Kotlin no pueden llegar. Por eso, ahora este lenguaje será compatible con el Proyecto de código abierto de Android (AOSP), una idea en la que lleva trabajando durante los últimos 18 meses.
Tal y como comentan Jeff Vander Stoep y Stephen Hines del equipo de Android en el comunicado oficial de Google, “los niveles inferiores del sistema operativo requieren lenguajes de programación de sistemas como C, C ++ y Rust. Estos lenguajes están diseñados con el control y la previsibilidad como objetivos. Proporcionan acceso a hardware y recursos del sistema de bajo nivel. Son livianos en recursos y tienen características de rendimiento más predecibles.”
La siguiente imagen sirve para ejemplificar cual es la jerarquía de los lenguajes de programación para el desarrollo de Android según sus distintas funcionalidades.
Como podemos observar, Java y Kotlin se utilizan en las capas superiores sobre todo para el desarrollo de aplicaciones y frameworks, en cambio, C y C++ se implementan en las inferiores para ejecutar las funciones más básicas e internas del sistema operativo. Por este motivo, sería imposible que Android funcionará si no estuvieran presentes.
¿Por qué se utilizará Rust?
Como ya mencionamos anteriormente, en las capas más bajas del sistema, donde se utilizan C y C++, son los desarrolladores los que deben gestionar la vida útil de la memoria. Debido a su complejidad, esto puede dar lugar a errores de seguridad que pueden ser aprovechados para realizar ciberataques.
Según la compañía de Mountain View, el 70% de las vulnerabilidades de seguridad de alta gravedad están relacionadas con errores de memoria. Y es que, al igual que C y C++, Rust también puede utilizarse para el desarrollo de Android, pero además incluye protección de memoria, por lo que es la opción ideal para reducir ese porcentaje.
Así lo explican en el comunicado: “Rust proporciona garantías de seguridad de la memoria mediante el uso de una combinación de comprobaciones en tiempo de compilación para hacer cumplir la vida útil / propiedad del objeto y las comprobaciones en tiempo de ejecución para garantizar que los accesos a la memoria sean válidos. Esta seguridad se logra al tiempo que proporciona un rendimiento equivalente a C y C ++.”
El gigante tecnológico considera que la mejor manera de hacer frente a estos errores de memoria no es corregirlos, sino prevenirlos. Este es su principal objetivo con Rust ya que ofrece comprobaciones tanto en tiempo de compilación como de ejecución, facilitando la detección de errores rápidamente.
Si Rust es un lenguaje más seguro para la memoria, se podría esperar que reescribieran todo su código en este lenguaje. No obstante, Google considera que esta sería una tarea prácticamente imposible e innecesaria.
Principalmente, la razón es que la mayoría de los errores de memoria no ocurren en el código viejo, sino en el nuevo o modificado recientemente, y aproximadamente el 50% tiene menos de un año. Así que, ante todo, han decidido centrarse en implementar Rust en los proyectos recientes o futuros, sin realizar ningún tipo de revisión del código antiguo desarrollado en C y C++.