Разработчикам, стремящимся писать драйверы для операционной системы Windows на языке программирования Rust, предстоят непростые задачи, несмотря на появление улучшенных инструментов и образцов кода. Старший инженер-программист Нейт Дайзинджер поделился своими взглядами на текущую ситуацию с использованием Rust для создания драйверов. На данный момент существуют библиотеки, называемые crates, которые позволяют разработчикам создавать валидные драйверы для Windows 11, используя такие модели, как WDM (модель Windows-драйвера), KMDF (фреймворк драйверов режим ядра) и UMDF (фреймворк драйверов пользовательского режима). Хотя WDM представляет собой более старый и низкоуровневый подход, KMDF и UMDF обеспечивают более высокоуровневую абстракцию, на которую разработчики обращают особое внимание.
Тем не менее, Дайзинджер предупредил, что драйверам всё ещё необходимо использовать небезопасные блоки кода для взаимодействия с операционной системой Windows, что снижает преимущества Rust по безопасности. Однако, логика бизнеса сохраняет гарантию безопасности, которую даёт этот язык. В команде WDF (фреймворки драйверов Windows) ведётся работа над безопасными абстракциями Rust, что позволит снизить объём небезопасного кода. К тому же, существует работа по внедрению Rust непосредственно в ядро Windows; некоторые её элементы уже были внедрены в Windows 11 24H2.
Расширение cargo, известное как cargo-wdk, развивается в сторону формирующегося инструмента для разработки драйверов на языке Rust. Например, команда "cargo wdk new --kmdf" создаёт шаблон KMDF драйвера. Будущие планы по развитию cargo-wdk включают поддержку ARM64, автоматическую установку зависимостей и развёртывание драйверов на тестовых машинах.
Тем не менее, внедрение драйверов на Rust в продакшен не является простым процессом. Проект описывается как находящийся на ранней стадии и «не рекомендованный к использованию в продакшене» на текущий момент. Некоторые ответственные разработчики отмечают, что используют предоставленный код в соответствии с обычными процедурами, необходимыми для подписания драйверов Microsoft. Один из тестов требует анализа с помощью инструмента CodeQL от GitHub, который теперь поддерживает Rust в режиме открытого просмотра. Однако версии, признанные приемлемыми для использования вместе с программой совместимости оборудования Windows (WHCP), остаются ограниченными. Дайзинджер пообещал опубликовать больше информации о подаче драйверов Rust в WHCP в ближайшие месяцы.
Ещё в 2019 году интерес к надёжности Rust для устранения проблем, связанных с безопасностью памяти, был зафиксирован в Microsoft Research, а в 2022 году технический директор Azure Марк Руссинович подчеркнул важность использования Rust вместо начала новых проектов на C/C++. Четыре года спустя становится всё более возможным разрабатывать драйверы Windows на Rust, однако всё ещё остаются значительные преграды на пути к применению в продакшене.



