На проходящей в эти дни конференции Open-Source Summit
2022
в секции ответов на вопросы Линус Торвальдс
упомянул
о возможности скорой интеграции в ядро Linux
компонентов для
разработки драйверов устройств на языке Rust. Не исключается, что патчи
с поддержкой Rust будут приняты в ближайшем окне приёма изменений,
формирующем состав ядра 5.20, намеченного на конец сентября.
Запрос на включение изменений в ядро ещё не был отправлен Торвальдсу, но
набор патчей прошёл дополнительное рецензирование, избавлен от основных
замечаний, уже достаточно давно тестируется в ветке linux-next и доведён
до состояния, пригодного для создания слоёв абстракции над подсистемами
ядра, написания драйверов и модулей. Поддержка Rust преподносится как
опция, не активная по умолчанию и не приводящая к включению Rust в число
обязательных сборочных зависимостей к ядру.
Предложенные изменения дают возможность использовать Rust в качестве
второго языка для разработки драйверов и модулей ядра. Использование
Rust для разработки драйверов позволит с минимальными усилиями создавать
безопасные и более качественные драйверы, избавленные от таких проблем
как обращение к области памяти после её освобождения, разыменование
нулевых указателей и выход за границы буфера.
Безопасная работа с памятью обеспечивается в Rust во время компиляции
через проверку ссылок, отслеживание владения объектами и учёт времени
жизни объектов (области видимости), а также через оценку корректности
доступа к памяти во время выполнения кода. Rust также предоставляет
средства для защиты от целочисленных переполнений, требует обязательной
инициализации значений переменных перед использованием, лучше
обрабатывает ошибки в стандартной библиотеке, применяет концепцию
неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает
сильную статическую типизацию для минимизации логических ошибок.
>>> Подробности