Nick DeSaulniers (), kes tegeleb Google'is Linuxi tuuma ehitamise tagamisega Clangi kompilaatori abil ning lahendada Rusti kompilaatori vigu, pidas konverentsil sessiooni, et arutada Rusti keeles tuumakomponentide arendamise võimalust. Nick korraldab LLVM-ile pühendatud mikro-konverentsi ja peab vajalikuks arutada tehnilisi aspekte, mis on seotud Rusti toe integreerimise võimalusega tuuma (tal on juba KBuildi jaoks tööprototüüp valmistatud) ning mõista, kas sellist tuge on üldse vaja ja millised on Rusti kasutuse piirangud.
Tuletame meelde, et hiljutises arutelus konverentsil "Open Source Summit and Embedded Linux" ütles Linus Torvalds tuumikomponentide kõrvaliste alamsüsteemide, nagu draiverite, arendamiseks seotud sidemete ilmumine keeles Rust. Draiverite arendamine keeles Rust võimaldaks minimaalse vaevaga luua turvalisi ja kvaliteetseid draivereid, vabastades need probleemidest, nagu mälu ala juurde pääsemine pärast selle vabastamist, nullviidatud de-referentseerimine ja puutumatuse ületamine. Sellise võimaluse rakendamiseks on juba olemas mitmeid kolmandate osapoolte projekte:
- Arendajad ettevõttest «Fish in a Barrel» 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.
- Hongkongi Ülikooli teadlased projekt Rust-põhiste draiverite arendamiseks sisseehitatud süsteemide ja asjade Interneti seadmete jaoks, mis kasutab ka bindgen'i, et genereerida vahelähteid tuumakäskude põhjal. Raamistik võimaldab suurendada draiverite turvalisust ilma tuuma muutmist — selle asemel, et luua lisatasemeid isolatsiooniks draiveritele, pakutakse probleemide blokeerimist kompileerimise etapil, kasutades turvalisemat keelt Rust. Eeldatakse, et selline lähenemine võib olla nõutud seadme tootjate seas, kes arendavad omandiõigusega draivereid kiirusel, ilma korralikku auditeerimist tegemata.
- Raamistik arendajad C-koodi Rusti tõlkimiseks, eksperimendid tuumamoodulite ümberkujundamiseks minimaalse käsitsi sekkumisega. Probleemid, mida on märkida, hõlmavad koodi mitmes osas tuumas, kus kasutatakse GCC laiendusi, mida C2Rust veel ei toeta. Selle probleemi lahendamiseks on C2Rustis plaanis lisada GCC atribuute inline, cold, alias, used ja section, samuti laiendada inline-assembleri võimalusi ja lahendada probleemid struktuuridega, mis on samal ajal joondatud ja pakendatud (näiteks xregs_state). Oluliste probleemide seas, mis vajavad käsitsi sekkumist, on märgitud võimetus edastada mittetriviaalseid C-makrosid Rusti makrosse ja vajadus tüüpide ülekirjutamiseks, kuna C2Rust edastab C-tüübid libc paketi definitsioonidesse, kuid seda paketti ei saa kasutada tuumamoodulites.
Allikas: opennet.ru
