Josh Triplett, kes töötab Intelis ja kuulub Crates.io arenduse supervisioonikomiteesse, rääkis Open Source Technology Summit'i konverentsil töörühmast, mille eesmärk on viia Rusti keel pariteeti C keelega süsteemiprogrammeerimise valdkonnas.
Uues töörühmas, mis on moodustamisel, töötavad Rusti arendajad koos Intel'i inseneridega välja spetsifikatsioonid, määratledes funktsionaalsuse, mida tuleb Rustis korraldada süsteemiprogrammeerimiseks. Süsteemiprogrammeerimine nõuab sageli madala taseme manipuleerimist, nagu privileege omavad protsessori käsud ja detailse teabe saamine protsessori seisundi kohta. Rustile arendatavaid sarnaseid võimalusi on juba märgitud, sealhulgas nimeta struktuurid, liidendid (union), assembleri sisestused (makro „asm!”) ja BFLOAT16 ujukomaarvude formaat.
Josh usub, et süsteemse programmeerimise tulevik kuulub Rustile ning C-keel püüab kaasaegsetes oludes koha, mille eelnevatel aastatel oli hõivanud Assembly. Rust
ei vabasta arendajaid mitte ainult C-keele täiendavatest probleemidest, mis tulenevad madala tasemega mälu haldamisest, vaid ka pakub võimalusi kaasaegsete programmeerimisparadigmade rakendamiseks.
Arutelul esinemisest
Josh tõi välja idee lisada Linuxi tuumale võimalus arendada draivereid Rusti keeles, mis võimaldaks luua ohutuid ja kvaliteetsemaid draivereid minimaalse vaevaga, vältides probleeme nagu vabastatud mälu alale juurdepääs, null viidete kasutamine ja puhvri piiridest väljumine.
Greg Kroah-Hartman, kes vastutab Linuxi stabiilse tuuma toetamise eest, on väljendanud valmidust lisada tuuma raamistik Rusti keeles draiverite arendamiseks, kui see pakub reaalseid eeliseid võrreldes C-ga, näiteks kui see pakub turvalisi sidumisi tuuma API üle. Lisaks peab Greg seda raamistikku vaid võimaluseks, mitte vaikimisi aktiivseks, et mitte lisada Rusti tuuma kogumisse sõltuvused.
Selgus, et mitu meeskonda töötab juba selles suunas. Näiteks ettevõtte "Fish in a Barrel" arendajad on loonud tööriistakomplekti Linuxi tuuma laaditavate moodulite kirjutamiseks Rusti keeles, kasutades kaitse suurendamiseks tuuma liideste ja struktuuride kohalolevate abstraktsete kihtide komplekti. Kihtide loomine toimub olemasolevate tuuma päistefailide põhjal utiliidi . Kihtide koostamiseks kasutatakse Clangit. Koostatavad moodulid kasutavad lisaks kihtidele ka paketti staticlib.
Samaaegselt veel üks projekt, mis keskendub draiverite arendamisele sisseehitatud süsteemidele ja asjade interneti seadmetele ning kasutab ka bindgen'i, et genereerida kihte põhinedes kernel'i päistele. Raamistik võimaldab tõsta draiverite turvalisust ilma tuuma muutmiseta — selle asemel, et luua tuumas täiendavaid isoleerimise tasandeid draiverite jaoks, pakutakse välja võimalus probleemide blokeerimine kompileerimise etapil, rakendades turvalisemat keelt Rust. Eeldatakse, et selline lähenemine võib osutuda nõudlikuks riistvaratootjate seas, kes arendavad kiirusel omandiõigusega draivereid ilma nõuetekohase auditeerimiseta.
Kuigi kõik planeeritud funktsionaalsused pole veel realiseeritud, on raamistik juba piisavalt töökorras ja seda on kasutatud Ethernet-kontrolleri LAN9512 USB juhtme rakendamiseks, mis on kaasas Raspberry Pi 3 plaadiga. Rust-draiveri kirjutamisel kasutati olemasolevat smsc95xx draiverit, mis on kirjutatud C keeles. Märgitakse, et mooduli suurus ja runtime-komponentide ülejääk Rust-draiveri arendamisel on ebaolulised, mis võimaldab raamistikku kasutada piiratud ressurssidega seadmetes.
Allikas: opennet.ru
