Josh Triplett, egy Intel-alapú vállalat és a Crates.io fejlesztési felügyeleti bizottságának tagja, néhány napja már bemutatott egy munkacsoportot a nyílt forráskódú technológiai csúcstalálkozón tartott beszédében amelynek célja a Rust C-vel egyenértékűvé tétele a Linux kernel programozásában.
A létrehozás alatt álló munkacsoportban A rozsda fejlesztői az Intel mérnökeivel együtt elkészítik a specifikációkat ez kiemelheti azt a funkcionalitást, amelyre Rustnak szüksége van a Linux kernelen belüli programozáshoz. A rendszer programozása gyakran alacsony szintű manipulációkat igényel, például kiváltságos processzor-utasítások végrehajtását és részletes információk beszerzését a processzor állapotáról.
A Rust számára már fejlesztett hasonló képességek közül a név nélküli struktúrák támogatása támogatott, szakszervezetek (szakszervezet), az összeállító beszúrások (az "asm!" makró) és a BFLOAT16 lebegőpontos számformátum.
Josh úgy véli, hogy a rendszerprogramozás jövője Rustot rejti, és a modern nyelvben a C nyelv azt állítja, hogy Assembler helye a múltban. A rozsda nemcsak enyhíti a fejlesztőket az alacsony memóriával végzett munka miatt felmerülő speciális C nyelvi problémákban, hanem alkalmazhatóságot nyújt a modern programozási paradigmák fejlesztésében is.
Josh beszédének megvitatása során az ötlet kifejeződött:
hozzáadhatja a Rust nyelvű illesztőprogramok fejlesztésének képességét a Linux kernelhez, ami minimális erőfeszítéssel lehetővé tenné jobb és biztonságosabb illesztőprogramok létrehozását, amelyek enyhítik a problémákat, például a memóriaterülethez való hozzáférést a felszabadítás után, a nullpontos hivatkozások és a határokon túli kilépés a puffer.
Greg Kroah-Hartman, - felelős a Linux kernel stabil ágának fenntartásáért, ésx kifejezte hajlandóságát hozzáadni a Rust driver keretrendszert a kernelhez, ha annak valódi előnyei vannak a C-vel szemben, például biztonságos összekapcsolást biztosít a mag API-n keresztül, valamint Greg ezt a keretrendszert csak olyan opciónak tekinti, amely alapértelmezés szerint nem aktív, nehogy a Rust bekerüljön az alapszerelvény-függőségek számába.
Kiderült, hogy már több csapat is dolgozik ebben az irányban. Például a Fish in a Barrel fejlesztők eszközkészletet készítettek a Linux kernel betölthető moduljainak Rust nyelvű írásához, absztrakt rétegek felhasználásával a kernelfelületek és struktúrák tetején a biztonság növelése érdekében.
A köztes rétegek automatikusan létrejönnek a bindgen segédprogram segítségével elérhető kernel fejlécfájlok alapján. A Clangot közbenső rétegek építésére használják. Az összeszerelt modulok a rétegek mellett a staticlib csomagot is használják.
Ezzel párhuzamosan újabb projekt készül, amelynek középpontjában a beágyazott rendszerek vezérlőinek fejlesztése áll és a tárgyak internete eszközei, amelyek szintén a bindgen segítségével nyakörveket állítanak elő a kernel fejlécfájljai alapján.
A keretrendszer lehetővé teszi az illesztőprogram biztonságának javítását a kernel megváltoztatása nélkül; Ahelyett, hogy további izolációs szinteket hozna létre az illesztőprogramok számára a kernelben, azt javasoljuk, hogy blokkolja a kérdéseket a fordítás szakaszában egy biztonságosabb Rust nyelv használatával.
Feltételezzük, hogy a berendezésgyártók megfelelő ellenőrzés nélkül sietve fejleszthetik ezt a megközelítést.
Még nem hajtották végre az összes tervezett funkciót, de a keretrendszer már elég alkalmas a feladatra, és arra használják, hogy egy működő illesztőprogramot írjon a mellékelt LAN9512 USB Ethernet vezérlőhöz a Raspberry Pi 3 táblára.
A meglévő smsc95xx illesztőprogramot írták referencia megvalósításként amikor a Rust illesztőprogramot C nyelven írta.
Megjegyzendő, hogy a modulméret és a futásidejű komponensek általános költségei nem jelentősek a Rust illesztőprogramjának fejlesztésekor, amely lehetővé teszi a keretrendszer használatát korlátozott erőforrású eszközökhöz.
forrás: https://hub.packtpub.com
Nem találok információt az smsc95xx illesztőprogramról a forrásból, illetve arról, hogy valami megvalósul a Linux Rust rendszerében.