Josh Triplett, Intel'i töötaja ja Crates.io arenduse komitee liige, rääkis oma esitluses Open Source Technology Summit konverentsil töörühmast, mille eesmärk on viia Rusti programmeerimiskeel süsteemiprogrammeerimise osas tasemele, mis on võrdne C keele tasemega.
Uues töörühmas, mis on moodustamisel, töötavad Rusti arendajad koos Intel'i inseneridega välja spetsifikatsioonid, mis määravad funktsionaalsuse, mida on vaja Rustis süsteemiprogrammeerimise jaoks rakendada. Süsteemiprogrammeerimine nõuab sageli madalamal tasemel manipulatsioone, nagu privileegitud protsessori juhiste täitmine ja üksikasjalike teabe saamine protsessori oleku kohta. Juba arendatavad sarnased võimalused Rustile sisaldavad nimetamata struktuure, ühendusi (union), assembler'i sisendeid (makro „asm!”) ja ujuvapunktnumbrite formaati BFLOAT16.
Josh usub, et süsteemiprogrammeerimise tulevik kuulub Rustile, ja C keel püüab tänapäeval saavutada positsiooni, mida pealegi varem oli omanud Assembly. Rust
ei aita mitte ainult arendajaid vabastada C keele madalama taseme mälutöötlusega seotud probleemidest, vaid pakub ka võimalust rakendada kaasaegseid programmeerimisparadigmasid.
Esitluse käigus esitas
Josh idee lisada Linuxi kerneli võimalus arendada draivereid Rusti keeles, mis võimaldab luua ohutumaid ja kvaliteetsemaid draivereid minimaalse vaevaga, vabastades taolised probleemid nagu mälu vabastamise järgne juurdepääs, nullviidete de-referentsimine ja puuteülemine.
Greg Kroah-Hartman, kes vastutab Linuxi kerneli stabiilse haru toe eest, väljendas valmisolekut lisada kärneli raamistik rusti keeles draiverite arendamiseks, kui see pakub reaalseid eeliseid võrreldes C-ga, näiteks pakkudes ohutuid ümbritsevaid teenuseid kärneli API-le. Lisaks peab Greg seda raamistikku vaid valikuks, mis pole vaikimisi aktiivne, et Rust ei muutuks kärneli sõltuvusteks.
Selgus, et mitmed meeskonnad töötavad juba selle suuna kallal. Näiteks arendajad ettevõttest "Fish in a Barrel" tööriistakomplekt, mis on mõeldud laaditavate moodulite kirjutamiseks Linuxi südamikku Rusti keeles, kasutades turvalisuse suurendamiseks abstraktsete kihtide komplekti südamiku liideste ja struktuuride kohal. Kihti genereeritakse automaatselt olemasolevate südamiku pealkirjade põhjal tööriista abil . Kihtide kokkupanekuks kasutatakse Clangit. Kogutavad moodulid kasutavad lisaks kihtidele ka staatilist paketti.
Samas on veel üks projekt, mis keskendub draiverite väljatöötamisele sisseehitatud süsteemidele ja asjade interneti seadmetele, mis samuti kasutab bindgeni kihtide genereerimiseks südamiku pealkirjade põhjal. Raamistik võimaldab suurendada draiverite turvalisust ilma muutmata südamikku — selle asemel, et luua südamikus täiendavaid isolatsioonitasandeid draivereid jaoks, soovitatakse probleeme blokeerida kompileerimise etapis, kasutades turvalisemat Rusti keelt. Eeldatakse, et sarnane lähenemine võib olla nõudlik seadmete tootjate seas, kes töötavad välja omandiõigusega draivereid kiiresti, ilma korraliku auditeerimise läbiviimata.
Kuid mitte kõik planeeritud funktsioonid pole veel ellu kutsutud, kuid raamistik on juba piisavalt töökindel ning seda on kasutatud töö draiveri kirjutamiseks Ethernet-kontrollerile LAN9512 USB, mis on varustatud Raspberry Pi 3 plaadil. Rusti draiveri kirjutamisel kasutati malli rakendamiseks olemasolevat C keeles kirjutatud smsc95xx draiverit. Märgitakse, et mooduli suurus ja runtime-komponentide kulud Rusti draiveri väljatöötamisel on ebaolulised, mis võimaldab raamistikku kasutada piiratud ressurssidega seadmetes.
Allikas: opennet.ru
