Miguel Ojeda, autor projektu Rust-for-Linux, navrhl vývojářům jádra Linux vydání v10 komponent pro vývoj ovladačů zařízení v jazyce Rust. Jedná se o jedenáctou edici patchů s ohledem na první variantu, zveřejněnou bez čísla verze. Začlenění podpory Rust bylo schváleno Linusem Torvaldu pro zařazení do jádra Linux 6.1, pokud se nevyskytnou neočekávané problémy. Vývoj je financován společností Google a organizací ISRG (Internet Security Research Group), zakladatelem projektu Let’s Encrypt, která podporuje propagaci HTTPS a rozvoj technologií pro zvýšení bezpečnosti internetu.
Stejně jako předchozí varianta patchů je vydání v10 omezeno na nezbytné minimum potřebné pro sestavení jednoduchého modulu jádra napsaného v jazyce Rust. Rozdíly od předchozí verze se týkají drobných úprav, nahrazení sizeof za ARRAY_SIZE v kallsyms.c a přizpůsobení patchů jádru v6.0-rc7. Předpokládá se, že minimální patch, jehož velikost byla zkrácena z 40 na 13 tisíc řádků kódu, usnadní přijetí podpory Rust do hlavního jádra. Po zajištění minimální podpory se plánuje postupné zvyšování existující funkčnosti, přesunem dalších změn z větve Rust-for-Linux.
Navrhované změny umožňují použít Rust jako druhý jazyk pro vývoj ovladačů a modulů jádra. Podpora Rustu je prezentována jako volba, která není aktivní ve výchozím nastavení a nevyžaduje zahrnutí Rustu mezi povinné závislosti pro sestavení jádra. Použití Rustu pro vývoj ovladačů umožní s minimálním úsilím vytvářet bezpečné a kvalitnější ovladače, zbavené problémů jako je přístup do oblasti paměti po jejím uvolnění, dereference nulových ukazatelů a přetečení bufferu.
Bezpečná práce s pamětí je zajištěna v Rustu během kompilace prostřednictvím kontroly odkazů, sledování vlastnictví objektů a zohlednění doby života objektů (oblastí viditelnosti), stejně jako hodnocením správnosti přístupu k paměti během vykonávání kódu. Rust také poskytuje prostředky k ochraně před přetečením celočíselných hodnot, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, aplikuje koncept neměnnosti (immutable) odkazů a proměnných ve výchozím nastavení, a nabízí silnou statickou typizaci pro minimalizaci logických chyb.
Zdroj: opennet.ru
