A közelmúltban megrendezett Maintainers Summit konferencián a Linux kernelbe Rust nyelven végzett komponensfejlesztés lehetőségének hozzáadásáról folytattak diskurzust. A résztvevők elismerték a kísérlet sikerességét, és úgy döntöttek, hogy a Rust támogatását a kernel egyik alapvető részévé teszik, eltávolítva a kísérleti funkció címkét róla.
Három évvel ezelőtt a Rust nyelven történő illesztőprogramok és modulok fejlesztésének lehetősége bekerült a 6.1-es kernelbe. Azóta a kernelbe olyan absztrakciók kerültek, amelyek lehetővé teszik Rust nyelven írt illesztőprogramok fejlesztését GPU-k, fájlrendszerek, blokk eszközök, hálózati adapterek és USB-eszközök számára. A Rust nyelven készül a Nova illesztőprogram az NVIDIA GPU-hoz, az asahi az Apple AGX GPU-hoz, a Tyr az ARM Mali GPU-hoz és a rust_ext2 az Ext2 fájlrendszerhez. A kernelbe elfogadták a Rust nyelven írt IPC Binder implementációt. A RROS projekt egy valós idejű alrendszert fejleszt a Linux kernelhez, Rust nyelven írva. A Rust alapértelmezés szerint inaktív, és nem vezet a Rust kötelező compile-time függőségei közé sorolásához.
A Rust népszerűsítése mellett érvelő támogatók véleménye szerint ez a nyelv kizárja a legtöbb, a kernelben megjelenő hibát, amely a C nyelv sajátosságaiból adódik (corner case), így a felülvizsgálat során a logikai hibákra és a versenyhelyzetekre lehet összpontosítani. A Rust segít megszabadulni az olyan problémáktól, mint a memóriához való hozzáférés a felszabadítása után, a pufferméret határának átlépése, az erőforrások nem megfelelő felszabadítása hiba kezelés közben, valamint az elfelejtett hiba visszatérési kódok ellenőrzése. A Rust alkalmazása az új kód esetében szintén lehetőséget biztosít a fejlesztési idő csökkentésére, mivel csökkenti a hibakereséshez szükséges munkát és merev garanciákat nyújt, amelyek lehetővé teszik a hibák korai észlelését a kód írásának fázisában.
A Rust kernelbe való bevezetésének ellenzői elfogadhatatlannak tartják több programozási nyelv használatát összetett projektekben — a kevert kódalapok megnehezítik a karbantartók munkáját, mivel a más nyelven írt kódoktól való függőségre kényszerítik őket. Például, ha Rust wrapper-ek állnak rendelkezésre, a C nyelven írt alrendszerek fejlesztőinek figyelembe kell venniük a változtatások hatását a wrapper-ek folytatható működésére.
Forrás: opennet.ru
