В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust

Candellmans

Мастер
Сообщения
7,955
Реакции
8,482
В состав ветки linux-next, на основе которой будет сформирован выпуск ядра Linux 5.13, включён начальный набор компонентов для разработки драйверов устройств на языке Rust. Отдельно опубликована документация по использованию Rust в ядре Linux и пример модуля ядра с драйвером символьного устройства на языке Rust. Код добавил Стивен Ротвелл (Stephen Rothwell), мэйнтейнер ветки Linux-next. Обычно ветка Linux-next включает код, готовый для принятия в следующем цикле приёма изменений в ядро, но пока точно не ясно будет ли поддержка Rust принята Линусом Торвальдсом в состав Linux 5.13, так как код не прошёл рецензирование широким кругом разработчиков.

1616227355366.png


Поддержка разработки драйверов ядра Linux на языке Rust активно обсуждалась в прошлом году, в том числе с участием Линуса Торвальдса, который не исключал такую возможность. Идею также поддержал Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.

Для активации поддержки Rust в ветке linux-next в KConfig добавлена опция CONFIG_RUST ("Rust support" в меню "General setup"), при включении которой проверяется наличие в системе компилятора rustc и при его присутствии даётся возможность включить остальные компоненты, завязанные на Rust (например, в меню "Kernel hacking" появляется секция "Rust hacking"). Использование Rust рассматривается как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.

Сборка компонентов ядра на Rust возможна как при использовании GCC, так и при сборке с помощью Clang. Для использования Rust в ядре требуется установка свежих ночных сборок компилятора rustc, не старее ветки nightly-2021-02-20 (по возможности обещают добавить поддержку стабильных веток Rust, но пока имеется привязка к некоторым экспериментальным возможностям). Также необходимо наличие в системе стандартных библиотек Rust, поставляемых в пакете rust-src, и генератора привязок bindgen. Поддержка пока ограничена платформами x86_64 и ARM64.

Opennet
 
Последнее редактирование:
Назад
Сверху Снизу