Нет сомнений, что язык программирования Rust набирает серьезные обороты в мире открытого исходного кода. Мы видим, как все больше и больше проектов принимают его — например, COSMIC desktop environment от System76 , которая полностью построена на Rust, и Fish Shell 4.
Rust даже начал проникать в ядро Linux. Ubuntu недавно также объявила о планах заменить GNU Coreutils на альтернативу на основе Rust в предстоящем релизе 25.10. И теперь еще один важный компонент экосистемы Linux присоединяется к движению Rust: культовый загрузчик GRUB.
Один из ведущих разработчиков, Владимир Сербиненко, начал экспериментировать с интеграцией кода Rust в GRUB. Его первоначальная работа доступна в двух репозиториях GitHub: один посвящен простому модулю Rust «hello world» для GRUB, а другой содержит соответствующие изменения в самом GRUB.
Эксперимент Сербиненко сосредоточен на платформе i386-pc — понятная отправная точка, поскольку порт GRUB i386-pc исторически был более широко используемой конфигурацией. Однако он подчеркивает, что нет никакого внутреннего технического барьера, препятствующего интеграции Rust в другие архитектуры.
На данный момент реализован только i386-pc, но это не технический предел, просто другие пока не реализованы.
Интересно, что Сербиненко переключил модули GRUB с использования .o
двоичных файлов ET_REL ( ) на .so
двоичные файлы ET_DYN ( ). Такой подход позволяет модулям на основе Rust функционировать более естественно в тандеме с существующей инфраструктурой GRUB.
Еще одна техническая деталь, заслуживающая внимания, — это решение компилировать с помощью panic=abort
. Для устранения паник потребовалось бы реализовать rust_eh_personality
, что не было рассмотрено в этом раннем прототипе.
На практике это ограничение означает, что паники Rust не распространяются корректно через среду GRUB, поэтому код полагается на прерывание выполнения при возникновении серьезной ошибки.
Как и ожидалось, не все разработчики полностью согласны с переносом Rust в GRUB. В ответ на объявление другой разработчик, Максим Фомин, поделился некоторыми опасениями по поводу этого перехода:
Я нашел показательным, что пост о внедрении Rust в проект не содержит никаких технических обсуждений о достоинствах этого. Это согласуется с критикой Rust, что внедрение Rust в проект часто вызвано желанием программистов похвастаться («я/проект крутые, потому что в них есть Rust»), а не техническими достоинствами.
Однако большинство отзывов были положительными, и многие разработчики ожидали, что внедрение Rust в GRUB повысит надежность программного обеспечения.
Напоминаем, что аудит, проведенный еще в феврале, выявил список уязвимостей в коде GRUB, многие из которых были связаны с управлением памятью. Это именно тот тип проблем, которые Rust призван предотвращать по умолчанию.
Более подробную информацию можно найти в объявлении Сербиненко.