Rust In Linux
18 February 2023
А что там с Rust в Linux?
В последний стабильный релиз ядра 6.1 заехала поддержка модулей на новомодном Rust. Я давно хотел на неё посмотреть, но подходящий момент подвернулся только сейчас. Она сразу была обозначена, как экспериментальная, так что больших ожиданий на этот счёт у меня не было. Я немного поэкспериментировал с этой поддержкой на нашем ядре на базе Linux 6.1 и увидел примерно следующее:
- Поддержка Rust конечно же опциональна. Она включается флагом
CONFIG_RUST
, который по умолчанию выключен и даже не показывается, если в системе нет тулчейна Rust; - Основной поддерживаемый вариант сборки с модулями на Rust сейчас - сборка с помощью LLVM. Ядро же чаще всего с помощью GCC, где поддержку Rust только-только запиливают;
- Ядру сейчас требуется вполне конкретная версия rustup/тулчейна, т. к. оно опирается на некоторые пока не стабилизированные аспекты языка. В ревизии, которая там запинена, нет, например,
rust-analyzer
, что бьёт по удобству разработки; - Однако на самом деле это и не такая большая проблема: разрабатывать попросту нечего. Сейчас (т. е. в 6.1.6) из ядра в Rust выведены только самые базовые абстракции в виде модуля, кода ошибки
ENOMEM
, аллокатора и других вещей, необходимых, чтобы пример в начале заработал. Ничего сложнее сейчас, по всей видимости, написать нельзя.
Казалось бы, в чём проблема? Если нужна поддержка, возьми да и напиши, верно? Идея в общем-то неплохая, но сейчас пока непонятно даже, куда копать, чтобы, например, написать хотя бы драйвер, который будет генерировать фиктивный девайс со своим интерфейсом. А кто-нибудь из вас уже пробовал эту поддержку, может, расскажете чего интересного?