Microsoft reescribe el código principal de Windows en Rust
La gente de Microsoft está reescribiendo actualmente el código principal de Windows empleando el lenguaje de programación Rust. Con esta transición se mejorará la seguridad del querido por unos y odiado por otros, sistema operativo Windows, ya que este lenguaje de programación evita que se incluya código mal escrito en la compilación final. Analicemos a continuación el alcance que tiene hasta ahora Rust en Windows y qué expectativas se tienen para el futuro.
¿Cuándo comenzó el amor de Microsoft hacia Rust?
Si bien desde el año 2019, el equipo de seguridad y defensa de Windows destacó la importancia de comenzar a utilizar el lenguaje de programación Rust por ser más moderno y seguro, la compañía ha estado buscando soluciones para ayudar a los desarrolladores a escribir código más seguro. En efecto, el equipo de seguridad de Windows evaluó todas las vulnerabilidades reportadas y corregidas desde el 2004 hasta el 2019 y se encontraron con el hecho de que más del 70 % de las vulnerabilidades eran causadas por sus mismos desarrolladores.
El problema radica en que, inadvertidamente, los desarrolladores insertaban códigos erróneos que, posteriormente, provocaban corrupción de memoria y otras vulnerabilidades. Todos estos códigos están construidos en C y C++, lenguajes de programación heredados que ya están siendo considerados como inseguros.
¿Por qué Rust y no C#?
Es importante reseñar que esta no es la primera vez que Microsoft se plantea abandonar progresivamente C y C++ en favor de lenguajes más modernos y seguros. Durante el desarrollo de Windows Vista, conocido en ese entonces bajo el nombre clave «Longhorn», la compañía intentó reescribir componentes principales del sistema con C# y WPF (Windows Presentation Foundation): la shell y el explorador de Windows.
¿Cuál fue el resultado de ese intento? Un sistema increíblemente lento e inestable y fue la razón principal del famoso «reset». Luego de esta terrible experiencia, Microsoft se moderó y desde entonces comenzó a explorar soluciones de forma más metódica. Con Rust, Microsoft ha dado en el blanco, pues se trata de un lenguaje de programación enfocado en la velocidad, protección de la memoria y seguridad en los subprocesos.
Es importante reseñar que cuando se trabaja con un lenguaje de programación seguro como lo es Rust, se exime de la seguridad del software al desarrollador de funciones y características. Actualmente, los desarrolladores de Microsoft tienen que lidiar con numerosas herramientas (muchas de ellas, sumamente complejas) lo cual retrasa el desarrollo de nuevas características. Con Rust, el desarrollador podrá centrarse en crear nuevas funcionalidades sin tener que lidiar con todo lo que implica la seguridad.
¿Cómo ha avanzado Rust en Windows?
La evolución hacia Rust comenzó propiamente en el 2020 con DWriteCore, una implementación del SDK de Windows para el motor DWrite. Actualmente, DWriteCore tiene unas 152.000 líneas hechas en Rust y 96.000 en C++. Otro componente que también presenta avances en la reescritura hacia Rust es la interfaz del dispositivo gráfico de Windows (Win32 GDI).
Pero sin duda, uno de los avances más notorios es el kernel del sistema, el cual, también está siendo reescrito en Rust. De hecho, y de acuerdo con David Weston, director del equipo de seguridad de Windows, en las próximas semanas Windows 11 estará arrancando con Rust. «Windows 11 estará en las próximas semanas iniciando con Rust en el kernel, lo cual es realmente genial. El objetivo aquí fue convertir varios tipos de datos internos de C++ a sus equivalentes en Rust. De hecho, ahora hay un SysCall en el kernel de Windows que está implementado en Rust.» Indicó Weston en el reciente evento BlueHat 2023.
¿Qué expectativas hay en cuanto a Rust en Windows?
Por lo pronto no se vislumbra un Windows completamente reescrito en Rust, ya que la gran mayoría de los desarrolladores de Microsoft aún están muy anclados a C++ y la compañía aún requiere de una estrategia que le permita asegurar su código nativo. Sin embargo, Microsoft está muy entusiasmada con Rust y en efecto, el CTO de Microsoft Azure, Mark Russinovich, ha recomendado que los nuevos proyectos de software deberían utilizar Rust en lugar del lenguaje heredado C/C++.