Pakkumine arutada küsimust Rusti programmeerimise keele arendamise vahendite lisamist Linuxi tuumasse

Nik DeSanje (Nick Desaulniers), kes Google'is vastutab toetuseks Linuxi tuuma kokkupaneku eest Clang-kompilaatori abil ja samuti aitab vigu Rusti kompilaatoris parandada, soovitust viis konverentsil Linux Plumbers Conference 2020 sessiooni, et arutada tuuma komponentide arendamise võimaluse pakkumist Rust keeles. Nik korraldab LLVM-ile pühendatud mikro-konverentse ja arvab, et oleks hea arutada tehnilisi aspekte Rusti toetuse võimaliku integreerimise kohta tuuma (nad on juba KBuild jaoks töötava prototüübi valmistanud) ja mõista, kas on vajalik sellise toetuse lisamine ning millised piirangud Rusti kasutamisele tuleks kehtestada.

Tuletame meelde, et hiljutises arutelus konverentsil "Open Source Summit ja Embedded Linux" ütles Linus Torvalds, et ei välistata keele Rust sõlmede tekkimist mitte põhifunktsioonide (nt draiverite) töötamiseks. Rust keeles draiverite arendamise võimalus võimaldaks minimaalse vaevaga luua ohutumaid ja kvaliteetsemaid draivereid, mis on vabad probleemidest, nagu mälu vabastamise järgsed juurdepääsud, nullnäidikute dereferentsimine ja mälupiiride ületamine. Sellise võimaluse rakendamiseks on juba olemas mitu kolmandast osapoolsest projekti:

  • Arendajad ettevõttest "Fish in a Barrel" valmis 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 bindgen. Kihtide kokkupanekuks kasutatakse Clangit. Kogutavad moodulid kasutavad lisaks kihtidele ka staatilist paketti.
  • Uurijad Hongkongi Ülikoolist arendada projekt draiverite arendamiseks Rust keeles integreeritud süsteemidele ja asjade interneti seadmetele, mis samuti kasutab bindgen'i tuuma päistest genereeritud vahekihtide loomisel. Raamistik võimaldab suurendada draiverite ohutust ilma tuuma muutmiseta — lisataseme isolatsiooni loomise asemel draiveritele tuumas pakutakse probleemide blokeerimist kompileerimise etapis, kasutades ohutumat Rust keelt. Eeldatakse, et selline lähenemine võib osutuda nõutuks seadme tootjate seas, kes töötavad patenteeritud draiveritega kiirusel, ilma nõuetekohase auditeerimiseta.
  • Raamistiku arendajad C2Rust C-koodi tõlkimiseks Rusti, korraldavad eksperimentide läbiviimine tuumamoodulite muutmiseks minimaalse käsitsi sekkumisega. Probleemide seas on märgitud kood, kus kasutatakse GCC laiendusi, mis ei ole veel C2Rustis toetatud. Selle probleemi lahendamiseks plaanib C2Rust lisada GCC atribuutide inline, cold, alias, used ja section toe ning laiendada inline-assembleri võimalusi ja lahendada probleemid struktuuridega, mis on samaaegselt joondatud ja pakendatud (näiteks xregs_state). Oluliste probleemide hulka, mis vajavad käsitsi sekkumist, kuulub keeruliste C-makrode transpileerimise võimatus Rusti makrodeks ja tüüpide ümberdefineerimise vajadus, kuna C2Rust transpileerib C-tüübid libc paketi määratlusteks, kuid seda paketti ei saa kasutada tuumamoodulites.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster