Rust лидирует, но есть свои нюансы.
На платформе Github появился код от Microsoft, который позволит разработчикам создавать Windows-драйверы на языке Rust. Это важный шаг на пути к повышению безопасности операционной системы.
Еще в 2019 году исследователи из Microsoft обсуждали методы устранения уязвимостей на ранних этапах. Особое внимание уделялось языкам программирования, обеспечивающим безопасное управление памятью. В числе лидеров оказался Rust, изначально разработанный командой Mozilla.
Rust не только экономит память, но и предотвращает ошибки, которые могут возникнуть при одновременном доступе нескольких потоков к одним и тем же данным.
В 2022 году Марк Руссинович, главный технический директор Azure, подчеркнул, что нужно отходить от создания новых проектов на C/C++ и активнее использовать Rust, особенно в случаях, когда требуется высокая производительность без автоматической сборки мусора.
Большая часть действующих систем Windows написана на C и C++. Многие современные компоненты переписываются и оптимизируются, но основной код остается прежним. Например, в инструментах для создания драйверов, таких как Windows Driver Kit .
С Rust разработчики смогут создавать драйверы как для WDM (Windows Driver Model), так и для WDF (Windows Driver Framework). Но стоит учитывать, что проект все еще находится на ранней стадии и пока не предназначен для коммерческого использования.
Ранний код в новом репозитории Microsoft содержит комментарий: // FIXME: Should this trigger Bugcheck via KeBugCheckEx?
Одна из главных сложностей — обработка ошибок. В отличие от других языков, Rust не использует классическую схему исключений. Вместо этого он сообщает о возможных проблемах через переменную "Result" и прекращает работу в критических ситуациях, активируя режим "panic".
Это серьезный недостаток, особенно если речь идет о разработке ядра системы. Основатель Linux, Линус Торвальдс, когда-то говорил, что код ядра должен отличаться от пользовательских инструментов. Если ядро сталкивается с нехваткой памяти, это ни в коем случае не должно вызывать крах системы. В таких случаях ядро должно корректно обработать исключение и вернуть соответствующий статус.
Тем не менее, для специалистов переход к Rust кажется перспективным шагом. В целом прогнозы положительные, поэтому остается только наблюдать за тем, как сработает новый метод.
Лечим цифровую неграмотность без побочных эффектов