Microsoft ha publicado un código en Github que permite a los desarrolladores escribir controladores de Windows en Rust, un paso clave para permitir la programación segura de la memoria para el sistema operativo. El CTO de Azure, Mark Russinovich, publicó el enlace en X con el comentario: "Trabajando duro para desarrollar controladores de Windows en Rust".

Este trabajo se remonta a muchos años atrás. En julio de 2019, Microsoft Research publicó que quería "eliminar toda una clase de vulnerabilidades antes de que ocurran", defendió un lenguaje seguro para la memoria y dijo que "uno de los lenguajes de programación de sistemas más nuevos más prometedores que cumple con estos requisitos es el lenguaje de programación Rust inventado originalmente por Mozilla".

La compañía promueve Rust no solo por la seguridad de su memoria, sino también por su seguridad en la carrera de datos, garantizando que "dos o más subprocesos no puedan acceder a una parte de la memoria de forma asincrónica".

En 2022, Russinovich anunció: "Es hora de dejar de iniciar nuevos proyectos en C/C++ y usar Rust cuando necesites usar un lenguaje que no sea GC. Por razones de seguridad y confiabilidad, la industria debería declarar obsoletos estos lenguajes". GC o lenguajes de recolección de basura como C# y Java son adecuados para aplicaciones comerciales, pero no para el código del sistema subyacente.

Aunque Windows está escrito principalmente en C y C++. "Debido a diversas razones técnicas e históricas, la mayor parte del código en modo de usuario ahora está escrito en C++, pero la mayor parte del código del kernel todavía está escrito en lenguaje C". En 2018, Raymond Chen, un ingeniero de software de Microsoft que se dedica al desarrollo de software durante mucho tiempo, dijo que aunque Windows 11 apareció desde entonces, el sistema operativo no se ha reescrito al desarrollar nuevas versiones. El conjunto de herramientas de controladores de Windows utilizado por los fabricantes de hardware para hacer que sus dispositivos funcionen en Windows sigue siendo un conjunto de herramientas C/C++.

Según las notas de la versión del nuevo kit de herramientas de controladores basado en Rust, su objetivo es admitir controladores WDM (Windows Driver Model) y WDF (Windows Driver Framework). Los controladores WDM son de nivel inferior y están estrechamente vinculados al sistema operativo, mientras que los controladores WDF interactúan con el sistema a través de bibliotecas de marco. El repositorio inicial se centra en el WDK.

La descripción agrega: "El proyecto aún se encuentra en las primeras etapas de desarrollo y aún no se recomienda para uso comercial. Microsoft fomenta la experimentación y la retroalimentación, y señala que los desarrolladores pueden buscar comentarios en el foro de discusión de GitHub en el repositorio".

Una de las primeras preguntas es cómo manejar las excepciones. Un desarrollador dijo: "El manejo estructurado de excepciones es una parte integral del desarrollo de Windows para el kernel de Windows (y el sistema operativo en su conjunto), y es un obstáculo real para hacer de Rust una realidad para el desarrollo del kernel de Windows. Rust no tiene excepciones, prefiere usar variables de resultado para informar errores recuperables, y en errores irrecuperables sale con una falla. En el código del kernel, tal falla no es deseable porque hará que el sistema falle en su conjunto".

El desarrollador Johnny Shaw cita LinuxTorvalds en el kernel de Linux (que también usa Rust): "Debido a que el código del kernel es diferente de las herramientas del sistema de espacio de usuario aleatorio, el agotamiento de la memoria no debe provocar un aborto. Sólo debe provocar un retorno de error". Torvalds ve esto como un "problema fundamental".

El código inicial en el nuevo repositorio de Microsoft incluye los siguientes comentarios:

//FIXME: ¿Debería activar BugcheckviaKeBugCheckEx?

Este problema muestra que introducir Rust en el código subyacente de Windows no es tan simple como agregar enlaces de lenguaje Rust a WDKAPI. Sin embargo, la respuesta inicial ha sido en general positiva. Los problemas de seguridad de la memoria representan una gran proporción de los problemas de seguridad y estabilidad de Windows, por lo que adoptar Rust es una solución viable.