21 февраля 2025 года Линус Торвальдс публично прояснил, как он смотрит на Rust в ядре Linux. Тема и так была горячей несколько лет, а спор вокруг подсистемы DMA и переписка с Грегом Крокха-Хартманом добавили конкретики. Коротко: Rust не выталкивает Си и не обязателен для всех, но и заблокировать его «потому что мне не нравится» нельзя. Ниже разбор с инженерной стороны: кто за что отвечает, что случилось с DMA и куда это всё катится.
Rust и Си: выбор, а не принудительный переход
Торвальдс снова подчеркнул: внедрение Rust не значит, что все мэйнтейнеры обязаны учить новый язык. Кто хочет жить только в Си, может не трогать Rust-код, не сопровождать обвязки и не лезть в синтаксис. При этом Линус сразу очертил обратную сторону: если вы не участвуете в развитии Rust-части, вы и не можете диктовать, как она стыкуется с вашими подсистемами.
Тем, кто готов разобраться, открывается роль «моста»: проектировать и сопровождать интерфейсы между Си и Rust. Получается естественное разделение труда. Одни остаются в зоне Си, другие связывают старое и новое. По словам Грега Крокха-Хартмана, многие сопровождающие уже учитывают Rust-обвязки, даже если сами язык глубоко не осваивают. Это скорее эволюция процесса, чем революция в коде.

Конфликт вокруг DMA: где граница полномочий
Острый эпизод: мэйнтейнер Кристоф Хелвиг пытался заблокировать Rust-обвязки над DMA, ссылаясь на свою зону ответственности. Линус и Грег этот подход раскритиковали. Код на Rust лежал в отдельном подкаталоге, подсистему DMA напрямую не переписывал и лишь пользовался её API. Торвальдс по сути сравнил это с попыткой запретить драйверу вызывать DMA только из-за стиля кода.
Крокха-Хартман уточнил: Хелвиг накладывал вето на изменения за пределами своей подсистемы, а это расходится с правилами ядра. Мэйнтейнер отвечает за свой код, но не за то, как другие разработчики его используют. В итоге протест не устоял, изменения на Rust прошли. Кейс показательный: локальные амбиции не должны тормозить принятую архитектурную линию.
Зачем ядру Rust с технической точки зрения
Си мощный, но опасный: переполнения буферов, гонки, ошибки с указателями в ядре живут десятилетиями. Rust даёт строгую модель памяти на этапе компиляции и убирает часть undefined behavior в типовых сценариях. Для кода, где одна ошибка роняет систему, это не маркетинг, а снижение класса дефектов.
Полной замены Си никто не обещает. Как отмечал Грег, цель сейчас — новые драйверы и модули на Rust, а миллионы строк на Си остаются как есть. Обвязки DMA — пример: современный слой без переписывания всей подсистемы. Ядро становится гибридным: старое и новое стыкуются через явные интерфейсы, а не через «перепишем всё завтра».
Реакция сообщества и что дальше
Споры о Rust вскрыли раскол среди мэйнтейнеров. Отдельные участники, в том числе Хектор Мартин из Asahi Linux, уходили из проекта на фоне напряжения. Линус и Грег при этом держат курс: ядро должно развиваться, даже если кому-то это некомфортно. Из переписки видно, что код на Rust могут принимать и при локальном вето, если он вписывается в архитектуру и проходит ревью. Сопротивление отдельных людей процесс не отменит.
Для инженеров, которые следят за Linux, вывод простой. Rust — инструмент надёжности и способ писать новые части безопаснее, а не «модный язык ради моды». Кто игнорирует эту ветку, постепенно теряет влияние на новые участки. Кто адаптируется, может влиять на интерфейсы и драйверы. В ближайшие годы Rust-элементов в драйверах и подсистемах станет больше; сообществу придётся жить в мультиязыковой реальности.
Итог
Позиция Торвальдса и Крокха-Хартмана — не фанатизм по Rust, а прагматизм. Си и Rust идут параллельно, мэйнтейнеры свободны в выборе стека, но не вольны блокировать чужой корректный код за границей своей зоны. Инцидент с DMA показал, что Линус готов давить на прогресс, когда локальное вето противоречит правилам. Исходники дискуссии — в переписке на lore.kernel.org и в обзоре на OpenNET.

