Miguel Ojeda, Rust-for-Linux projekti autor, on pakkunud Linuxi kerneli arendajatele kaalumiseks uuendatud versiooni seadmejuhtide arendamiseks mÔeldud komponentidest Rusti keeles. Rusti toimetamine on eksperimenteeriv, kuid on juba nÔusolekud tehtud selle kaasamiseks linux-next haru. Uues versioonis on kÔrvaldatud esimeses versioonis patƥode arutamisel esitatud mÀrkused. Linus Torvalds on juba liitunud aruteluga ja tegi ettepaneku muuta mÔningate bititegevuste töötlemise loogikat.
Tuletame meelde, et ettepanekud muudatused vĂ”imaldavad kasutada Rusti teise keele kui draiverite ja tuuma moodulite arendamiseks. Rusti toetus on esitatud valikuna, mis pole vaikimisi aktiveeritud ja ei too kaasa Rusti lisamist tuuma kohustuslikesse koostamise sĂ”ltuvustesse. Rusti kasutamine draiverite arendamiseks vĂ”imaldab minimaalse vaevaga luua turvalisi ja kvaliteetseid draivereid, vabanedes sellistest probleemidest nagu mĂ€luprobleemide juurde pÀÀsemine pĂ€rast nende vabastamist, nullviidete de-referentsimine ja mĂ€lupuhvri piiride ĂŒletamine.
Rust tagab mĂ€luga ohutu töö kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise ja objektide eluea (nĂ€htavuse) arvestamise kaudu ning hindab koodi kĂ€ivitamise ajal mĂ€lule juurdepÀÀsu Ă”igust. Rust pakub ka vahendeid tĂ€isarvude ĂŒletĂ€itumise kaitsmiseks, nĂ”uab muutuja vÀÀrtuste kohustuslikku algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutujaid ja viiteid vaikimisi muutumatuks (immutable) ning pakub tugevat staatilist tĂŒĂŒbi mÀÀramist loogiliste vigade vĂ€hendamiseks.
Uue versiooni patƥode kÔige mÀrgatavamad muudatused:
- MĂ€lu jaotamise kood on vabanenud vĂ”imalikest 'panic' olekutest vigade korral, nagu nĂ€iteks mĂ€lu puudumine. NĂŒĂŒdseks on lisatud versioon Rusti kirjastoist alloc, milles on ĂŒmber kirjutatud rikete kĂ€sitlemise kood, kuid lĂ”ppeesmĂ€rk on tuua pĂ”hiversioonisse alloc kĂ”ik tuumale vajalikud vĂ”imalused (muudatused on juba ette valmistatud ja saadetud Rusti standardse kirjasto koostisesse).
- Ăökompileerimise asemel Rusti toe jaoks tuumade kokkupanemiseks saab nĂŒĂŒd kasutada betaversioone ja stabiilseid rustc kompilaatori vĂ€ljalaskmisi. Praegu kasutatakse viite kompilaatorina rustc 1.54-beta1, kuid pĂ€rast versiooni 1.54 vĂ€ljalaskmist kuus, jÀÀb see viite kompilaatoriks.
- Lisatud on tugi testide kirjutamiseks Rustis tavalise attribuudiga "#[test]" ja vÔimalus kasutada doctests testide dokumenteerimiseks.
- Lisatud on ARM32 ja RISCV arhitektuuride tugi, lisaks varasemalt toetatud x86_64 ja ARM64-le.
- GCC Rust (GCC front-end Rusti jaoks) ja rustc_codegen_gcc (rustc back-end GCC jaoks) teostusi on parendatud, nĂŒĂŒd lĂ€bitakse kĂ”ik pĂ”hitestid.
- Pakkutakse uus abstraktsioonitasand, mida saab kasutada Rusti keeles kirjutatud programmides, et kasutada C keeles kirjutatud sĂŒdamikemehhanisme, nagu punane-must puu, viidatud objektid, faili deskriptorite loomine, ĂŒlesanded, failid ja sisendi/vĂ€ljundi vektorid.
- Juhtide arendamiseks mÔeldud komponentides on parendatud mooduli "file_operations" tuge, makro "module!", makrode registreerimine ja algsed juhid (probe ja remove).
- Binderis on rakendatud failides deskriptorite ja LSM hookide edastamise tugi.
- Pakutud on funktsionaalsem Rusti draiveri nÀide - bcm2835-rng Raspberry Pi plaatide riistvaralise juhuslike arvude generaatori jaoks.
Lisaks mainitakse mÔnede ettevÔtete projekte, mis on seotud Rusti kasutamisega tuumas:
- EttevÔte Microsoft on vÀljendanud huvi osaleda Rusti toe integreerimise töös Linuxi tuumas ning on valmis lÀhiajal esitama Rusti Hyper-V draiverite teostuse.
- EttevĂ”te ARM töötab Rusti toe tĂ€iustamise kallal ARM arhitektuuri protsessoritel. Rust projekti jaoks on juba esitatud muudatused, mis tĂ”stavad 64-bitised ARM sĂŒsteemid esmaklassiliste toe platvormide (Tier-1) hulka.
- EttevĂ”te Google toetab otse Rust for Linux projekti, arendab uut Binder'i protsessidevahelise suhtluse mehhanismi teostust Rustis ning kaalub erinevate draiverite ĂŒmberkirjutamist Rustis. Google on ISRG (Internet Security Research Group) kaudu rahastanud tööde tegemist Rusti toe integreerimiseks Linuxi tuumas.
- EttevĂ”te IBM on rakendanud Rusti toe Linuxi tuumas PowerPC sĂŒsteemidele.
- LSE (Systems Research Laboratory) on vÀlja arendanud SPI-draiveri Rustis.
Allikas: opennet.ru
