27.09.2023 | C++ против Rust: Windows решает, какой язык прокачает ее драйверы |
На платформе 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 кажется перспективным шагом. В целом прогнозы положительные, поэтому остается только наблюдать за тем, как сработает новый метод. |
Проверить безопасность сайта