В състава на клон linux-next, на базата на който ще бъде оформен релиза на ядрото Linux 5.13, е включен начален комплект компоненти за разработка на драйвери на устройства на езика Rust. Отделно е публикувана документация относно използването на Rust в ядрото Linux и пример за модул на ядрото с драйвер за символно устройство на езика Rust. Кодът е добавил Стивън Ротвелл (Stephen Rothwell), поддържаща структура на клона Linux-next. Обикновено клонът Linux-next включва код, готов за приемане в следващия цикъл на приемане на изменения в ядрото, но все още не е ясно дали поддръжката на Rust ще бъде приета от Линус Торвалдс в състава на Linux 5.13, тъй като кодът не е преминал през рецензиране от широк кръг разработчици.
Поддръжката на разработката на драйвери на ядрото Linux на езика Rust активно се обсъжда през миналата година, включително с участието на Линус Торвалдс, който не изключваше такава възможност. Идеята също беше подкрепена от Грег Кроа-Хартман (Greg Kroah-Hartman), отговорен за поддръжката на стабилния клон на ядрото Linux. Използването на Rust за разработка на драйвери ще позволи с минимални усилия да се създават безопасни и по-качествени драйвери, освободени от проблеми като достъп до паметта след освобождаването ѝ, разыменоване на нулеви указатели и излизане извън границите на буфера.
За активиране на поддръжката на Rust в клона linux-next в KConfig е добавена опция CONFIG_RUST ("Поддръжка на Rust" в менюто "Обща настройка"), при активиране на която се проверява наличието на компилатора rustc в системата и при неговото присъствие се предоставя възможност за включване на останалите компоненти, свързани с Rust (например в менюто "Хакване на ядрото" се появява секция "Хакване на Rust"). Използването на Rust се разглежда като опция, която не е активна по подразбиране и не води до включване на Rust в задължителните сборки на зависимости за ядрото.
Сборката на компонентите на ядрото на Rust е възможна както при използване на GCC, така и при компилиране с помощта на Clang. За използването на Rust в ядрото е необходима инсталация на свежи нощни сборки на компилатора rustc, не по-стари от клона nightly-2021-02-20 (по възможност обещават да добавят поддръжка за стабилни клонове на Rust, но в момента има привързаност към някои експериментални възможности). Освен това е необходимо наличието на стандартни библиотеки на Rust, доставяни в пакета rust-src, и генератор на привързвания bindgen. Поддръжката все още е ограничена до платформите x86_64 и ARM64.
Източник: opennet.ru
