Ettepanek arutada Rusti arendustööriistade lisamist Linuxi tuumale

Nick Desagnier (Nick Desaulniers), kes töötab Google'is, et pakkuda Toetama Linuxi kerneli loomine Clangi kompilaatori abil ja ka abistamine parandage Rusti kompilaatori vead, ettepanek konverentsil pidama Linuxi torulukkseppade konverents 2020 istungil, et arutada, kuidas oleks võimalik Rustis tuumakomponente arendada. Nick korraldab LLVM-ile pühendatud mikrokonverentsi ja usub, et oleks tore arutada Rusti toe võimaliku tuumaga integreerimise tehnilisi aspekte (ta on juba KBuildi jaoks töötava prototüübi ette valmistanud) ja mõista, kas selline tugi peaks olema üldse lisada ja milliseid piiranguid Rusti kasutamisel tuleks aktsepteerida.

Tuletagem meelde, et hiljutisel arutelul avatud lähtekoodiga tippkohtumise ja manustatud Linuxi konverentsil rääkis Linus Torvalds ei välistanud seda sidemete tekkimine tuumaväliste alamsüsteemide (näiteks draiverite) arendamiseks sellistes keeltes nagu Rust. Draiverite arendamise võimalus Rustis võimaldaks meil luua minimaalse pingutusega turvalisemaid ja paremaid draivereid, ilma probleemideta, nagu juurdepääs mälule pärast vabastamist, nullkursori viited ja puhvri ülekoormus. Selle funktsiooni rakendamiseks on juba mitu kolmanda osapoole projekti:

  • Arendajad ettevõttest “Fish in a Barrel” ette valmistatud tööriistakomplekt Linuxi kerneli laaditavate moodulite kirjutamiseks Rust keeles, kasutades turvalisuse suurendamiseks abstraktsete kihtide komplekti liideste ja kerneli struktuuride kohal. Kihid genereeritakse automaatselt olemasolevate kerneli päisefailide põhjal utiliidi abil bindgen. Clangi kasutatakse kihtide ehitamiseks. Lisaks vahekihtidele kasutatakse kokkupandud moodulites paketti staticlib.
  • Hongkongi Hiina ülikooli teadlased areneda projekt, mille eesmärk on arendada draivereid manustatud süsteemide ja asjade Interneti seadmete jaoks Rustis, mis samuti kasutab bindgeni kerneli päisefailide põhjal kihtide genereerimiseks. Raamistik võimaldab teil parandada draiverite turvalisust tuumas muudatusi tegemata - selle asemel, et luua kernelis draiveritele täiendavaid isolatsioonitasemeid, tehakse ettepanek blokeerida probleemid kompileerimisetapis, kasutades turvalisemat Rusti keelt. Eeldatakse, et sellist lähenemist võivad nõuda seadmete tootjad, kes töötavad kiirustades välja patenteeritud draivereid ilma nõuetekohast auditit läbi viimata.
  • Raamistiku arendajad C2Rust C-koodi edastamiseks Rustile, käitumine katsed tuumamoodulite teisendamiseks minimaalsete käsitsi muudatustega. Üks täheldatud probleeme on see, et paljudes tuuma osades kasutatakse GCC laiendusi, mida C2Rust veel ei toeta. Selle probleemi lahendamiseks plaanib C2Rust lisada toe GCC atribuutidele inline, cold, alias, used ja sektsioon, samuti laiendada sisemise monteerija võimalusi ja lahendada probleeme struktuuridega, mis on nii joondatud kui ka pakitud (nt xregs_state) . Olulised probleemid, mis nõuavad käsitsi tööd, on võimetus tõlkida mittetriviaalseid C-makrosid Rust-makrodeks ja vajadus tüüpe uuesti määratleda, kuna C2Rust tõlgib C-tüübid libc-paketi definitsioonideks, kuid seda paketti ei saa kasutada kerneli moodulites.

Allikas: opennet.ru

Lisa kommentaar