Programovací jazyk Rust si vždy klade za cíl nahradit C ve vývoji linuxového jádra A tím, jak Rust dospěl, několik vývojářů vyjádřilo rostoucí zájem o jeho použití v linuxovém jádře.
Ve virtuální konferenci dne Linux Plumbers 2020, tok mikrokonferencí podle LLVM uspořádal zasedání k otevřeným otázkám a bariéry pro upstreamové přijetí Rustu v linuxovém jádře.
Zájem o toto téma je viditelný, protože toto sezení bylo nejrušnější událostí roku 2020.
Měli bychom tedy nyní přepsat celé jádro Linuxu jazykem Rust? Tato diskuse nepochází od dnešního dne a byla zdůrazněna od objevení se první stabilní verze Rustu v roce 2015.
S ohledem na možnosti, které nabízí Rust, někteří navrhují to udělat. Letos na srpnové konferenci Linux Instalatéři řečníci měli čas znovu o tom diskutovat.
A překvapivé je to zdá se, že souhlasí jednomyslně ne ne přepsat existující kód v Rustu, ale aby vývoj jádra pokračoval v používání Rustu. To znamená, že si představují svět, ve kterém by bylo možné v Rustu psát nové části kódu.
Toto zasedání navázalo na předchozí práci mnoha vývojářů, včetně přednášky, kterou minulý rok přednesli Alex Gaynor a Geoffrey Thomas na bezpečnostním summitu o Linuxu.
Na konferenci představili svou práci na prototypování modulů jádra Rust a zasazovali se o přijetí Rustu v jádře.
Citovali práci, která ukazuje, že zhruba dvě třetiny chyb zabezpečení jádra přiřazených CVE v systémech Android a Ubuntu souvisí s problémy se zabezpečením paměti.
Nakonec to vysvětlili Rust se tomuto druhu chyby může zcela vyhnout díky bezpečnějším API povoleno vaším typem systému a ověřovatelem vaší půjčky.
Tato studie již dokázala přesvědčit několik správců Linus Torvalds, který podpořil zavedení Rustu do jádra. Diskuse na toto téma se zúčastnili Thomas a Gaynor, Josh Triplett, spolupředseda jazykového týmu Rust a dlouholetý vývojář linuxových jader.
Krátce se dotkli jeho dosavadní práce a některých jeho prvních myšlenek a otázek, než většinu času otevřeli k diskusi.
Jedná se o použití existujících API v jádře, podporu architektury a otázku kompatibility ABI mezi Rust a C.
Ve skutečnosti tomu původně věří zavedení Rustu do stromové struktury musí respektovat stávající C API.
Každý však cítí, že ďábel je v detailech, a jak dosud vykonaná práce, tak konverzace během zasedání odhalily některé otevřené výzvy.
Například Linux hojně využívá preprocesorová makra a vložené funkce, které nástroj bindgen a rozhraní externích funkcí Rustu tak snadno nepodporují.
Podle nich, v současné době je jedinou vyspělou implementací Rust kompilátor rustc, který vydává kód prostřednictvím LLVM.
Linuxové jádro podporuje širokou škálu architektur, z nichž mnohé nemají k dispozici back-end LLVM.
Pokud jde o jeho část, Triplett navrhl, že přidání Rustu do jádra by pomohlo zvýšit architektonickou podporu Rustu, citujíc jeho zkušenosti s projektem Debian. Zmínil, že zavedení softwaru Rust v Debianu pomohlo motivovat nadšence a uživatele specializovaných architektur ke zlepšení podpory Rust, a doufá, že přidá podporu jádra, aby měla podobný účinek.
Zejména byl přesvědčen, že jakákoli architektura s back-endem LLVM bude rychle kompatibilní s Rustem. Diskuse se také zaměřila na alternativní implementace Rust jako cestu k podpoře širší architektury.
Zasedání skončilo bez dalších konkrétních milníků, ale zdá se, že panuje celkové nadšení pro podporu Rust Mods a rostoucí shodu ohledně obecných požadavků na tuto podporu.
Zdá se, že je to začátek nové éry, přichází nepohyblivé C.
Ahoj Rusti, čau Linus Torvalds!