Miguel Ojeda, Rust-for-Linux projekti autor, on esitanud Linuxi tuuma arendajatele taastatud versiooni seadmete draiverite arendamise komponentidest Rusti keeles. Rusti tugi on praegu katsetamisfaasis, kuid on juba kinnitatud lisamiseks linux-next haru. Uues versioonis on arvesse vÔetud esimesest patƥist saadud mÀrkusi. Linus Torvalds on samuti arutelusse sekkunud ja soovitanud muuta mÔnede bititegevuste töötlemise loogikat.
Tulet meelde, et pakutud muudatused vÔimaldavad kasutada Rust'i teise keelena draiverite ja tuumamoodulite arendamiseks. Rust'i toetamist tutvustatakse valikuna, mis ei ole vaikimisi aktiivne ja ei too kaasa Rust'i lisamist tuuma kohustuslikesse kogumise sÔltuvustesse. Rust'i kasutamine draiverite arendamiseks vÔimaldab minimaalsete pingutustega luua turvalisemaid ja kvaliteetsemaid draivereid, vabastades need probleemidest nagu mÀlu kasutamine pÀrast selle vabastamist, nullviidete dereferenseerimine ja puhverserverist vÀlja minemine.
Rust tagab mĂ€lutöö turvalisust kompileerimise ajal viidatud linkide kontrollimise, objektide omaniku jĂ€lgimise ja objektide eluea arvestamise (nĂ€htavuse) kaudu, samuti pĂ€rast koodi kĂ€itamise ajal mĂ€lu juurdepÀÀsu Ă”igsuse hindamise kaudu. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude eest kaitsmiseks, nĂ”uab muutuja vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, haldab vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) kontseptsiooni linkide ja muutujate puhul vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade minimeerimiseks.
Uues patƥi versioonis on kÔige tÀhelepanuvÀÀrsemad muudatused:
- MĂ€lu jaotamise kood on vabastatud vĂ”imalusest genereerida âpanicâ olekuid, kui esinevad vead, nĂ€iteks mĂ€lu puudus. Koostisesse on lisatud Rusti teegiversioon alloc, kuhu on ĂŒmber kirjutatud vea töötlemise kood, kuid lĂ”ppeesmĂ€rk on kanda alloci pĂ”hiversioonisse kĂ”ik tuuma jaoks vajalikud funktsioonid (muudatused on juba valmis ja esitatud Rusti standardteegi koosseisu).
- Ăösel tuumade kompileerimiseks mĂ”eldud lokaliseeritud versioonide asemel saab nĂŒĂŒd kasutada beeta vĂ€ljaandeid ja rustc kompilaatori stabiilseid vĂ€ljalase. Praegu on standardkompilaatorina kasutusel rustc 1.54-beta1, kuid pĂ€rast 1.54 vĂ€ljaandmist kuu lĂ”pus hakatakse standardina toetama just seda.
- Lisatud tugi testide kirjutamiseks Rusti vaikimisi atribuudi â#[test]â abil ja doctestide rakendamise vĂ”imalus testide dokumenteerimiseks.
- Lisatud tugi ARM32 ja RISCV arhitektuuridele lisaks varasemalt toetatud x86_64 ja ARM64 arhitektuuridele.
- GCC Rusti rakendusi (GCC esifront) ja rustc_codegen_gcc (rustc tagumine osa GCC-le) on parendatud ning see lĂ€bib nĂŒĂŒd kĂ”ik pĂ”hitestid.
- Uus abstraktsioonitase on loodud Rusti programmides, et kasutada tuuma mehhanisme, mis on kirjutatud C-keeles, nagu punase-musta puu, viidatud objektid, failide descriptorite loomine, ĂŒlesanded, failid ja sisendi/vĂ€ljundi vektorid.
- Draiverite arenduse komponentides on parendatud mooduli âfile_operationsâ, makrode âmodule!â, makrode registreerimise ja algeliselt rakendatud draiverite (probe ja remove) toetust.
- Binder toetab nĂŒĂŒd failidesse viidatud descriptorite ja LSM-hookide edastamist.
- Pakutud on funktsionaalsem nĂ€ide Rust'i draiverist â bcm2835-rng Raspberry Pi riistvaralise juhuslike arvude generaatori jaoks.
Lisaks mainitakse mÔne ettevÔtte projekte, mis on seotud Rust'i kasutamisega kernelis:
- EttevÔte Microsoft on vÀljendanud huvi osaleda Rust'i toe integreerimise töös Linuxi kernelisse ning plaanib jÀrgmiste kuude jooksul esitada Hyper-V draiverite Rust'is rakendusi.
- EttevĂ”te ARM töötab Rust'i toe parandamise kallal ARM protsessoritel pĂ”hinevates sĂŒsteemides. Projektile Rust on juba pakkunud muudatusi, mis viivad 64-bitised ARM sĂŒsteemid esmaklassiliste tugiplatvormide (Tier-1) hulka.
- EttevĂ”te Google toetab otse Rust for Linux projekti, arendab uut Binder'i protsessidevahelise suhtluse mehhanismi rakendust Rust'is ning kaalub erinevate draiverite ĂŒmberehitust Rust'is. ISRG (Internet Security Research Group) kaudu on Google rahastanud tööde tegemist Rust'i toe integreerimiseks Linuxi kernelisse.
- EttevĂ”te IBM on rakendanud Rust'i toega kernelit PowerPC sĂŒsteemides.
- LSE (Systems Research Laboratory) labor koostas SPI-draiveri Rustis.
Allikas: opennet.ru
