Rust становится мейнстримом в ядре Linux

ТОКИО — На саммите разработчиков ядра Linux, который доступен только по приглашениям, ведущие специалисты по сопровождению Linux решили, как выразился Джонатан Корбет, разработчик ядра Linux: «Среди собравшихся разработчиков существует консенсус в том, что Rust в ядре больше не является экспериментальным — теперь он является основной частью ядра и останется здесь. Так что ярлык «экспериментальный» исчезнет». Как сказал мне специалист по сопровождению ядра Linux Стивен Ростед: «Не было никакого сопротивления».

Это произошло уже давно. Этот сдвиг завершает пять лет порой ожесточенных споров о том, принадлежит ли язык с безопасной памятью наряду с C в основе самой широко распространенной в мире операционной системы с открытым исходным кодом.

Знаки были там

Однако были признаки того, что этот шаг к принятию Rust приближается. На недавнем саммите Linux Foundation Open Source в Корее 2025 Торвальдс сказал: «Я думаю, мы достигли стадии [where] Rust действительно становится частью ядра, и это уже не просто экспериментальная вещь».

Нет, нет, это не так. Все началось с того, что Алекс Гейнор и Джеффри Томас на саммите по безопасности Linux 2019 года заявили, что около двух третей уязвимостей ядра Linux связаны с проблемами безопасности памяти. Теоретически Rust мог бы избежать этого, используя более безопасные интерфейсы прикладного программирования (API).

На последующей встрече Linux Plumbers в 2020 году разработчик Нельсон Эльхаге в своем резюме встречи Plumbers по Rust в Linux объяснил, что сторонники Linux Rust «не предлагают переписать ядро Linux на Rust; они сосредоточены только на продвижении к миру, где новый код может быть написан на Rust. Три области потенциальной озабоченности в отношении поддержки Rust: использование существующих API в ядре, поддержка архитектуры и работа с двоичным интерфейсом приложений». (ABI) совместимость между Rust и C».

Тем временем Мигель Охеда, разработчик ядра Linux, начал мигрировать код Linux с C на Rust. Он создал проект Rust for Linux, чтобы в 2019 году внедрить в Linux нестандартные модули Rust.

К началу 2021 года Rust, за пределами ядра Linux, стал ближе к любимой в мире операционной системе. Amazon Web Services (AWS) выпустила Bottlerocket Linux для контейнеров, частично основанный на Rust. Примерно в то же время Сильвестр Ледрю, разработчик Debian Linux, портировал версию Coreutils на Rust для Linux, используя инфраструктуру компилятора LLVM, а также интерфейсную часть и инструментальную инфраструктуру языка Clang C.

Дайте ржавчине шанс

В марте того же года Линус Торвальдс решил дать Расту шанс. В то время он сказал мне, что находился в лагере «подождем и посмотрим» — я заинтересован в проекте, но думаю, что им движут люди, которые очень воодушевлены Rust, и я хочу посмотреть, как он на самом деле работает на практике».

«Лично», — добавил Торвальдс, — он «никоим образом не «подталкивает» к Rust, [but] Я открыт для этого, учитывая обещанные преимущества и избегая некоторых ошибок безопасности, но я также знаю, что иногда обещания не оправдываются».

Как оказалось, эти обещания были выполнены. При финансовой поддержке со стороны Исследовательской группы интернет-безопасности (ISRG) и Google 20 сентября 2021 года Охеда подал первый запрос на включение проекта Rust для Linux. Это добавило начальную поддержку Rust, включая интеграцию Kbuild, начальную поддержку встроенных модулей и начало создания ядра с абстракциями Safe Rust от Алекса Гейнора и Джеффри Томаса.

В те дни в планы не входило переписывать Linux на Rust; это все еще не так, но следует применять его выборочно там, где он может обеспечить максимальную безопасность, не дестабилизируя зрелый код C. Короче говоря, первыми целями будут новые драйверы, подсистемы и вспомогательные библиотеки.

Это было непростое путешествие. Как сказал Охеда в июне 2022 года: «Ядро — это огромный проект с множеством заинтересованных сторон. С самого начала было ясно, что добавление второго «основного» языка в ядро ​​будет сопряжено как с техническими, так и с управленческими проблемами».

Он окажется прав. Внедрение Rust в ядро ​​вызвало споры в сообществе ядра. Некоторые специалисты по сопровождению поставили под сомнение стоимость смешивания парадигм программирования в Linux. Например, на саммите разработчиков ядра 2021 года сопровождающий Video4Linux Лоран Пиншар заявил, что у него нет времени «остановить все и изучить Rust в ближайшее время».

Сопротивление

Хотя Раст начал продвигаться вперед, он все еще сталкивался с сопротивлением. Как сказал Дэн Уильямс, старший главный инженер команды Intel по архитектуре ядра ядра Linux, на встрече Linux Plumbers 2024: «Сопровождающие ядра, как правило, очень консервативны. Они знают C вдоль и поперек, но не знают Rust». Таким образом, они «не знают, как просмотреть то или отладить то, потому что не понимают код».

Имейте в виду, у них есть причины. В споре о том, как заставить Rust работать с интерфейсом прикладного программирования (API) прямого доступа к памяти (DMA) ядра Linux, реальная проблема сводилась к тому, что, как заметил старший разработчик ядра Linux Тед Т, у сопровождающих нет неограниченного времени, и они не хотят увеличивать свою «бремя обслуживания кода».

Тем не менее, несмотря на суету, на Rust портировалось всё больше и больше программ. К апрелю 2025 года ядро ​​Linux содержало около 34 миллионов строк кода на языке C, из них только 25 тысяч строк были написаны на Rust. В то же время на Rust писалось все больше и больше драйверов и утилит более высокого уровня. Например, разработчики дистрибутива Debian Linux объявили, что в будущем Rust станет обязательной зависимостью в его базовом расширенном инструменте пакетов (APT),

C никуда не денется

Это изменение не означает, что всем придется использовать Rust. С никуда не денется. Тем не менее, как сказали мне несколько сопровождающих, они ожидают увидеть гораздо больше драйверов, написанных на Rust. В частности, Rust выглядит особенно привлекательным для «листовых» драйверов (сети, хранилища, NVMe и т. д.), где привязки Rust-for-Linux предоставляют безопасные оболочки над API ядра C.

Тем не менее, для потенциальных программистов ядра и систем новый статус Rust в Linux намекает на карьерный путь, сочетающий глубокое понимание C со свободным владением гарантиями безопасности Rust. Эта комбинация может определить следующее поколение низкоуровневых разработок.

ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Стивен Дж. Воан-Николс, он же sjvn, писал о технологиях и технологическом бизнесе с тех пор, как CP/M-80 была новейшей операционной системой для ПК, скорость 300 бит/с — высокоскоростное подключение к Интернету, WordStar — современный текстовый процессор, и он нам понравился. Узнайте больше от Стивена Дж. Воана-Николса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *