В основной ветке ядра Linux появился первый полноценный драйвер сетевого адаптера, полностью написанный на Rust. Код прошёл ревью мейнтейнеров подсистемы и включён в очередной релиз-кандидат. Авторы утверждают, что это первый случай, когда драйвер устройства такого уровня написан не на C.
Драйвер поддерживает 10- и 25-гигабитные интерфейсы и реализует базовые операции: инициализацию, обработку прерываний, передачу и приём пакетов. По словам разработчиков, переход на Rust позволил исключить целый класс ошибок работы с памятью, которые чаще всего приводили к падениям при отладке сетевых драйверов.
Работа заняла около года. Основная сложность была не в самом языке, а в интеграции с существующими абстракциями ядра: подсистемам пришлось добавить несколько новых обёрток. Мейнтейнеры отметили, что накладные расходы оказались в пределах погрешности по сравнению с C-версией в синтетических тестах пропускной способности.
Проект намерен перенести на Rust ещё несколько драйверов. Сообщество относится к инициативе неоднозначно: часть разработчиков опасается роста сложности сборки и увеличения времени компиляции. Итоговое решение о включении в стабильную ветку будет принято после цикла тестирования.