V súčasti vetvy linux-next, na základe ktorej bude vytvorená verzia jadra Linux 5.13, bol zahrnutý úvodný súbor komponentov pre vývoj ovládačov zariadení v jazyku Rust. Samostatne bola zverejnená dokumentácia o používaní Rust v jadre Linux a príklad modulu jadra s ovládačom symbolického zariadenia v jazyku Rust. Kód pridal Stephen Rothwell, správca vetvy Linux-next. Zvyčajne vetva Linux-next obsahuje kód pripravený na prijatie v nasledujúcom cykle akceptovania zmien v jadre, ale zatiaľ nie je jasné, či bude podpora Rust prijatá Linusom Torvaldsom do verzie Linux 5.13, keďže kód neprešiel recenziou širokým okruhom vývojárov.
Podpora vyvoja ovládačov jadra Linux v jazyku Rust sa aktívne diskutovala minulý rok, vrátane účasti Linusa Torvaldsa, ktorý nevyviedol túto možnosť. Myšlienku tiež podporil Greg Kroah-Hartman, zodpovedný za podporu stabilnej vetvy jadra Linux. Použitie Rustu na vývoj ovládačov umožní s minimálnym úsilím vytvárať bezpečné a kvalitnejšie ovládače, zbavené problémov ako prístup k pamäti po jej uvoľnení, dereferencovanie nulových ukazovateľov a prekročenie hranice bufra.
Na aktiváciu podpory Rust v vetve linux-next bola do KConfig pridaná možnosť CONFIG_RUST ("Podpora Rust" v menu "Všeobecné nastavenia"), pričom po jej aktivovaní sa skontroluje prítomnosť kompilátora rustc v systéme a pri jeho prítomnosti sa umožní aktivovať ďalšie komponenty závislé od Rustu (napríklad v menu "Ladenie jadra" sa objaví sekcia "Ladenie Rustu"). Použitie Rustu sa považuje za voľbu, ktorá nie je predvolene aktívna a nevedie k zahrnutiu Rustu medzi povinné závislosti na zostavenie jadra.
Zostavenie komponentov jadra na Rust je možné ako pri použití GCC, tak aj pri zostavovaní pomocou Clang. Na používanie Rustu v jadre je potrebné nainštalovať čerstvé nočné zostavy kompilátora rustc, ktoré nie sú staršie ako vetva nightly-2021-02-20 (po možnosti sľubujú pridať podporu stabilných vetiev Rustu, ale momentálne je viazaná na niektoré experimentálne funkcie). Taktiež je potrebná prítomnosť v systéme štandardných knižníc Rustu dodávaných v balíku rust-src a generátora viazaní bindgen. Podpora je zatiaľ obmedzená na platformy x86_64 a ARM64.
Zdroj: opennet.ru
