В състава на клона 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 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.ru
