A Microsoft lançou um código no Github que permite aos desenvolvedores escrever drivers do Windows em Rust, um passo fundamental para permitir a programação segura de memória para o sistema operacional. O CTO do Azure, Mark Russinovich, postou o link no X com o comentário: “Trabalhando duro para desenvolver drivers do Windows em Rust”.

Este trabalho remonta a muitos anos. Em julho de 2019, a Microsoft Research postou que queria “eliminar uma classe inteira de vulnerabilidades antes que elas ocorressem”, defendeu uma linguagem segura para memória e disse que “uma das linguagens de programação de sistemas mais recentes mais promissoras que atende a esses requisitos é a linguagem de programação Rust originalmente inventada pela Mozilla”.

A empresa promove o Rust não apenas por sua segurança de memória, mas também por sua segurança na corrida de dados – garantindo que “dois ou mais threads não possam acessar um trecho de memória de forma assíncrona”.

Em 2022, Russinovich anunciou: "É hora de parar de iniciar quaisquer novos projetos em C/C++ e usar Rust quando precisar usar uma linguagem não-GC. Por uma questão de segurança e confiabilidade, a indústria deveria declarar essas linguagens obsoletas." GC ou linguagens com coleta de lixo, como C# e Java, são adequadas para aplicativos comerciais, mas não para o código do sistema subjacente.

Embora o Windows seja escrito principalmente em C e C++. "Devido a várias razões técnicas e históricas, a maior parte do código do modo de usuário agora é escrita em C++, mas a maior parte do código do kernel ainda é escrita em linguagem C." Em 2018, Raymond Chen, um engenheiro de software da Microsoft que está envolvido no desenvolvimento de software há muito tempo, disse que embora o Windows 11 tenha aparecido desde então, o sistema operacional não foi reescrito durante o desenvolvimento de novas versões. O kit de ferramentas de driver do Windows usado pelos fabricantes de hardware para fazer seus dispositivos rodarem no Windows ainda é um kit de ferramentas C/C++.

De acordo com as notas de lançamento do novo kit de ferramentas de driver baseado em Rust, ele visa oferecer suporte a drivers WDM (Windows Driver Model) e WDF (Windows Driver Framework). Os drivers WDM são de nível inferior e fortemente vinculados ao sistema operacional, enquanto os drivers WDF interagem com o sistema por meio de bibliotecas de estrutura. O repositório inicial concentra-se no WDK.

A descrição acrescenta: “O projeto ainda está nos estágios iniciais de desenvolvimento e ainda não é recomendado para uso comercial. A Microsoft incentiva a experimentação e o feedback, observando que os desenvolvedores podem buscar feedback no fórum de discussão do GitHub no repositório.”

Uma questão inicial é como lidar com exceções. Um desenvolvedor disse: “O tratamento estruturado de exceções é parte integrante do desenvolvimento do Windows para o kernel do Windows (e do sistema operacional como um todo) e é um obstáculo real para tornar o Rust uma realidade para o desenvolvimento do kernel do Windows.

O desenvolvedor Johnny Shaw cita LinuxTorvalds no kernel Linux (que também usa Rust): "Porque o código do kernel é diferente das ferramentas de sistema aleatórias do espaço do usuário. O esgotamento da memória não deve causar um aborto. Ele só precisa causar um retorno de erro." Torvalds vê isso como um “problema fundamental”.

O código inicial do novo repositório da Microsoft inclui os seguintes comentários:

//FIXME:Deveria acionar Bugcheck via KeBugCheckEx?

Este problema mostra que introduzir Rust no código subjacente do Windows não é tão simples quanto adicionar ligações de linguagem Rust ao WDKAPI. No entanto, a resposta inicial foi geralmente positiva. Os problemas de segurança da memória são responsáveis ​​por uma grande proporção dos problemas de segurança e estabilidade do Windows, portanto, adotar o Rust é uma solução viável.