Мейнтейнер Linux отверг поддержку Rust в DMA без аргументов, назвав его «раком» для ядра. Это ставит под вопрос будущее Rust в Linux
Разработчики Rust for Linux (R4L) предложили патч, позволяющий коду на Rust использовать DMA (Direct Memory Access).
Эта технология критически важна для быстрого взаимодействия с периферией — видеокартами, сетевыми картами и другими устройствами, работающими с большими объемами данных.
Патч, отправленный 8 января 2025 года, добавляет RAII-обертку над выделенной памятью и базовые операции чтения-записи.
Он не меняет C-код ядра, а лишь добавляет новую абстракцию для Rust-драйверов.
Категорический отказ без аргументов
Однако мейнтейнер DMA в Linux Кристоф Хэллвиг сразу отверг предложение без объяснений:
Никакого rust-кода в ядре/dma, пожалуйста.
Обсуждение не продвинулось дальше. Хэллвиг не предоставил технических аргументов, но продолжал настаивать, что Rust в ядре мешает его поддержке.
Когда мейнтейнеры R4L попытались уточнить, в чем проблема, последовал ответ:
Интерфейсы к DMA API должны оставаться в читаемом Си-коде, а не в странных биндингах, чтобы он оставался удобным для поиска и сопровождения.
«Rust — это рак для ядра»
По его мнению, добавление второго языка делает Linux «неподдерживаемым», а код на Rust — это «раковая опухоль» в проекте. Хэллвиг заявил:
Если хотите сделать Linux невозможным для поддержки из-за кода на двух языках, делайте это в своих драйверах, но не тащите этот рак в системные подсистемы.
Он также выразил уверенность, что Linux выжил так долго именно потому, что не имел языковых барьеров внутри.
Rust уже в ядре — но кому-то это не нравится
Стоит отметить, что Rust в ядре уже давно используется. В R4L есть абстракции для множества API ядра и никто не заставляет мейнтейнеров C-кода разбираться в Rust.
Патч с абстракцией DMA оборачивает всего один C-тип и две функции, но даже это вызвало жесткое сопротивление.
Разработчик пробежал полумарафон с помощью Strava API и IoT-кормушки с M&M’stproger.ru
Позиция Хэллвига ставит под вопрос дальнейшую интеграцию Rust в ядро. Если мейнтейнеры критически важных подсистем будут блокировать любые Rust-решения, это может серьезно затормозить развитие R4L.