Rust представляет собой язык программирования общего назначения, созданный для разработки быстрого и безопасного программного обеспечения. Его сильной стороной является устранение большинства связанных с памятью ошибок и уязвимостей в области безопасности. Язык отлично подходит для веб-сервисов и системного ПО и вскоре может сыграть ключевую роль и в разработке Windows.
Microsoft начала использовать Rust для базового программирования Windows несколько лет назад, назвав этот относительно новый язык важным инструментом для сокращения числа ошибок и повышения уровня безопасности. В недавнем посте в блоге Microsoft подробно рассказала о состоянии поддержки Rust для написания драйверов Windows. Традиционно разработчики использовали Windows Driver Kit, чтобы писать такие скрипты на языке C. При этом WDK предоставлял все необходимые библиотеки и инструменты. Теперь в компании работают над тем, чтобы дать разработчикам на Rust те же возможности, перенося эти библиотеки и заголовки в Rust.
Microsoft объединила эти инструменты в windows-drivers-rs — репозиторий на GitHub, содержащий «крэйты» Rust, то есть пакеты, управляемые Cargo, системой сборки и менеджером пакетов Rust. Разработчики теперь могут использовать эти инструменты для создания драйверов Windows.
Репозиторий windows-drivers-rs предоставляет все ресурсы, необходимые разработчикам для создания полнофункциональных драйверов на Rust. Среди них — библиотека для настройки скриптов сборки Cargo (wdk-build), глобальный аллокатор (wdk-alloc), набор макросов для упрощения взаимодействия с прямыми привязками WDK (wdk-macros) и другое. С помощью этих крэйтов разработчики уже могут создавать бинарные драйверы режима ядра и пользовательского режима, которые загружаются и работают в Windows 11.
Microsoft также представляет проект cargo-wdk, чтобы упростить разработку драйверов на Rust в Visual Studio. Программисты давно используют шаблоны VS, которые ускоряют начальную разработку на C. Расширение cargo-wdk предоставляет пользователям VS пустые проекты драйверов, уже заполненные всеми необходимыми связями, этапами сборки и зависимостями.