Pár napja, Miguel Ojeda, ezen javaslatok kidolgozásáért és benyújtásáért felelős, valamint a Rust-for-Linu projekt szerzőjex bemutatta a hetedik komponensjavaslatot eszközillesztő fejlesztéshez Rozsda a Linux kernel fejlesztői számára.
Ez a javítások hetedik kiadása és amihez még a Rust támogatás is kísérletinek számít, de már benne van a linux-next ágban, és eléggé kiforrott ahhoz, hogy elkezdjen dolgozni a kernel alrendszerek feletti absztrakciós rétegek létrehozásán, valamint vezérlők és modulok írásán. A fejlesztést a Google és az ISRG (Internet Security Research Group) finanszírozza, amely a Let's Encrypt projekt alapítója, és a HTTPS-t és az internet biztonságát növelő technológiák fejlesztését népszerűsíti.
A javasolt változtatások lehetővé teszik a Rust második nyelvként való használatát illesztőprogramok és kernelmodulok fejlesztéséhez. A Rust támogatása olyan opcióként jelenik meg, amely alapértelmezés szerint nincs engedélyezve, és nem eredményezi, hogy a Rust szerepeljen a kernel szükséges összeépítési függőségei között. A Rust használata az illesztőprogramok fejlesztésére lehetővé teszi jobb és biztonságosabb illesztőprogramok létrehozását minimális erőfeszítéssel, anélkül, hogy olyan problémákat okozna, mint a memóriaterület elérése a felszabadítás után, a nulla mutatók hivatkozásának megszüntetése és a puffer túlcsordulása.
Főbb újdonságok a hetedik javaslatban
Ez az új javaslat rávilágít erre az eszközkészlet és az alloc könyvtár egy változata, amely kiküszöbölte a hibák esetleges "pánik" állapotát, frissítve a Rust 1.60-as verzióra és ezáltal stabilizálja a kernelfoltokban használt "may_uninit_extra" mód támogatását.
Ezen kívül meg kell jegyezni, hogy hozzáadott lehetőség tesztek futtatására a dokumentációból (a dokumentációban példaként egyidejűleg használt tesztek) a kernel API-hoz kötött fordítási idejű tesztek KUnit tesztekké való konvertálásával, amelyek a kernel indításakor futnak. A teszteknek nem kell Clippy linter-figyelmeztetést kiadniuk, ahogy az az alapvető Rust kód is.
Másrészt javasolt a «net» modul kezdeti megvalósítása hálózati funkciókkal. A Rust kód hozzáférést biztosít olyan kernelhálózati struktúrákhoz, mint a "Namespace" (a "struct net" kernelstruktúra alapján), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) és IPv6 megfelelői.
a hátsó vége rustc_codegen_gcc, megvalósította a rustc fordító elindításának képességét. A fordító üzembe helyezése a rustc azon képességére utal, hogy GCC-alapú kódgenerátort használhat a rustc fordító felépítéséhez.
Ezenkívül a GCC 12.1 legutóbbi kiadása tartalmazza a libgccjit javításait, amelyek szükségesek a rustc_codegen_gcc megfelelő működéséhez. Folyamatban vannak az előkészületek a rustc_codegen_gcc telepítésének lehetőségének biztosítására a rustup segédprogrammal.
A egyéb kiemelkedő változások ennek az új verziónak:
- Az aszinkron programozási módszerek kezdeti támogatása (async), a kasync modul formájában megvalósítva.
- Net::filter modul hozzáadva a hálózati csomagszűrők kezeléséhez. Hozzáadott példa a rust_netfilter.rs szűrő implementációjával Rust nyelven.
- Egy egyszerű mutex smutex::Mutex megvalósítása hozzáadva, amely nem igényel rögzítést.
- Hozzáadott egy NoWaitLock zárolást, amely soha nem vár a feloldásra, és ha azt egy másik szál foglalja el, akkor nem sikerül megszereznie a zárolást a hívó leállítása helyett.
- Hozzáadott egy RawSpinLock zárolást, amelyet a raw_spinlock_t a kernelben azonosít, és amely azokra a szakaszokra vonatkozik, amelyek nem lehetnek tétlen.
- ARef típus hozzáadva azokhoz az objektumhivatkozásokhoz, amelyekre a hivatkozásszámláló mechanizmust alkalmazzák (mindig cáfolva).
- Előrelépés látható a GCC gccrs frontendjének fejlesztésében a GCC-n alapuló Rust nyelvi fordító megvalósításával. Jelenleg két főállású fejlesztő dolgozik a gccrs-n.
Végül Ha érdekel, hogy többet tudjon meg róla, ben ellenőrizheti a részleteket a következő link.