Три года назад возможность разработки драйверов и модулей на языке Rust была добавлена в ядро 6.1. В тех пор в состав ядра были включены абстракции для разработки на Rust драйверов для GPU, ФС, блочных устройств, сетевых адаптеров и USB-устройств. На языке Rust развивается драйвер Nova для GPU NVIDIA, asahi для GPU Apple AGX, Tyr для GPU ARM Mali, rust_ext2 c ФС Ext2. В состав ядра принята написанная на Rust реализация IPC Binder. Проект RROS развивает real-time подсистему для ядра Linux, написанную на Rust.
Поддержка Rust неактивна по умолчанию и не приводит к включению Rust в число обязательных сборочных зависимостей к ядру.
По мнению сторонников продвижения Rust, данный язык исключает появление большинства ошибок, выявляемых в ядре и вызванных особенностями языка Си (corner case), что позволяет при рецензировании сосредоточиться на логических ошибках и состояниях гонки. Rust помогает избавиться от таких проблем, как обращение к памяти после её освобождения, выход на границу буфера, некорректное освобождение ресурсов при обработке ошибок и забытые проверки возвращаемых кодов ошибок. Применение Rust для нового кода также даёт возможность сократить время разработки, благодаря снижению трудозатрат на отладку и наличию в языке строгих гарантий, выявляющих ошибки на ранней стадии написания кода.
Противники внедрения Rust я ядро считают недопустимым использование нескольких языков программирования в сложных проектах — смешанные кодовые базы усложняют работу мэйнтейнеров, так как ставят их в зависимость от кода на другом языке. Например, при наличии обвязок на Rust разработчики подсистем, написанных на Си, должны учитывать влияние изменений на продолжение работоспособности обвязок.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64401
