Разделы

Системное ПО Техника

Microsoft переписывает ядро и библиотеки Windows на языке Rust. Кое-что уже готово и даже не тормозит

Вице-президент Microsoft рассказал о том, что разработчики Windows 11 заняты переписыванием отдельных модулей ядра и системных библиотек ОС на современном типобезопасном языке программирования Rust. Некоторые успехи на этом направлении у компании уже есть, и оценить наработки Microsoft сможет самый широкий круг пользователей, причем совсем скоро.

Код Windows 11 постепенно переводят на Rust

Разработчики из корпорации Microsoft намерены переписать основные библиотеки и часть ядра операционной системы Windows 11 на языке программирования Rust. Об этом сообщил Дэвид Уэстон (David Weston), вице-президент Microsoft по безопасности, в рамках конференции BlueHat IL 2023, прошедшей в конце марта 2023 г. в Тель-Авиве (Израиль).

Уэстон заявил, что код, написанный на Rust, вероятно, появится в ядре ОС «в течение нескольких недель или месяцев», что, по его мнению, «по-настоящему классно». Учитывая сроки проведения мероприятия, на момент публикации данного материала Windows 11 на компьютерах массового пользователя в теории уже может иметь в своем составе модули, код которых был переведен на модный типобезопасный язык программирования.

Microsoft достаточно давно проявляет интерес к Rust как инструменту, дающему возможность предотвратить возникновение ошибок управления памятью в программных продуктах корпорации. Согласно собственной статистике компании, около 70% от всех уязвимостей, выявленных в софтверных продуктах Microsoft с 2006 г., приходится на ошибки управления оперативной памятью.

Что уже переписано

В своем выступлении Уэстон упомянул некий системный вызов, который полностью реализован на Rust и уже присутствует в ядре Windows 11. Какой именно из доступных разработчиков системных вызовов переписан на Rust, спикер не уточнил.

Windows 11 частично перепишут на модном языке Rust

По словам представителя Microsoft, основной целью конвертации кода ядра актуальной версии ОС специалистами Microsoft было «преобразование некоторых из внутренних типов данных C++ в их эквиваленты из Rust».

Уэстон также рассказал, что специалисты Microsoft, в частности, заняты переводом кода Win32k GDI – одной из основных подсистем Windows, которая отвечает за отрисовку приложениями графики и текста, на Rust. К настоящему моменту этот системный компонент содержит 36 тыс. строк Rust-кода. Последняя версия Windows 11 способна корректно загружаться с обновленной версией GDI и проходит все необходимые тесты, однако Rust-порт подсистемы пока не используется на практике на компьютерах конечных пользователей.

Еще один компонент Windows, подвергнувшийся переработке со стороны Microsoft, стал DWriteCore – реализация DirectWrite (API библиотеки DirectX для высококачественной отрисовки текста). Работы по его переводу на Rust стартовали еще в 2020 г. На данный момент, по словам Уэстона, около 152 тыс. строк кода, составляющих DWriteCore, написаны на Rust и лишь 96 тыс. строк – на C++.

Разработчики из Microsoft хвастаются не только возросшей защищенностью компонента в следствие его частичного перевода на Rust, но и повысившейся производительностью в отдельных операциях. Выигрыш в скорости шейпинга (вычисления глифов и их положений), по их оценке, составил от 5 до 15%.

Windows целиком на Rust не предвидится

Несмотря на интерес Rust, браться за амбициозную задачу портирование всей Windows 11 в обозримой перспективе в Microsoft не намерены.

«Хоть мы и любим Rust, нам нужна стратегия, которая также включает в себя защиту нашего нативного кода», – отметил Уэстон.

Microsoft давно в теме

Задумываться о переносе кода Windows на современные типобезопасные языке в Microsoft начали не позднее 2019 г.

Так, в декабре 2019 г. CNews писал о том, что специалисты «Редмондского гиганта» разрабатывают новый язык программирования под кодовым названием Verona, который базируется на Rust.

Конкретно же с Rust в Microsoft начали экспериментировать летом 2019 г., а в ноябре того же года Адам Берч (Adam Burch), программист из команды разработчиков Hyper-V (системы аппаратной виртуализации для x64-систем на основе гипервизора), написал в корпоративном блоге о том, что ему поручили переписать на Rust некий низкоуровневый компонент Windows, назвать который он пока не может. По его словам, несмотря на незавершенность проекта, опыт применения Rust в целом оказался позитивным.

Несколько фактов о Rust

Rust появился в 2006 г. как личный проекта Грейдона Хоара (Graydon Hoare), сотрудника Mozilla. В 2009 г. Mozilla начала спонсировать разработку Rust для собственных нужд, а также расширила команду для дальнейшего развития языка.

Интерес Mozilla к Rust был вызван наличием огромного числа критических уязвимостей в разрабатываемом компанией браузере Firefox, в реализации которого присутствовало свыше 4 млн строк на языке C++. Rust был создан с учетом требований безопасности и параллелизма, что сделало его подходящим выбором для переписывания многих компонентов Firefox в рамках проекта Quantum по полной переработке архитектуры браузера. Кроме того, Mozilla использовала Rust для разработки Servo, движка рендеринга HTML, который должен был заменить действующий движок рендеринга Firefox.

Помимо Mozilla и Microsoft в своих проектах Rust применяют Google, Facebook, Amazon, Dropbox, Fastly, Baidu.

В августе 2019 г. в рамках саммита по технологиям с открытым исходным кодом (Open Source Technology Summit) Джош Триплетт (Josh Triplett), ведущий инженер Intel, рассказал о том, что его компания заинтересована в том, чтобы в ближайшем будущем Rust достиг «паритета» с доминирующим в области системной и низкоуровневой разработки языком C.

В том же месяце Грег Кроа-Хартман (Greg Kroah-Hartman), один из ключевых разработчиков ядра Linux, заявил, что не станет препятствовать включению в ядро фреймворка для написания драйверов на языке Rust.

В рейтинге популярности языков программирования Tiobe за декабрь 2022 г. Rust занял 20 строчку, за год продвинувшись вверх на семь позиций.

Дмитрий Степанов



CNews Forum 2024 CNews Forum 2024

erid:

Рекламодатель:

ИНН/ОГРН:

byteoilgas_conf 2024 byteoilgas_conf 2024

erid:

Рекламодатель:

ИНН/ОГРН:

LANSOFT: время комплексных бизнес-решений LANSOFT: время комплексных бизнес-решений

erid:

Рекламодатель:

ИНН/ОГРН:

Orion Digital Day Orion Digital Day

erid:

Рекламодатель:

ИНН/ОГРН:

ELMA DAY ELMA DAY

erid:

Рекламодатель:

ИНН/ОГРН: