Priekšlikums, lai apspriestu jautājumu par Rust izstrādes rīku pievienošanu Linux kodolam

Niks Dezanjē (Niks Desaulniers), kurš strādā uzņēmumā Google, lai nodrošinātu atbalstu Linux kodola izveide, izmantojot kompilatoru Clang, kā arī palīdzot labojiet Rust kompilatora kļūdas, ierosināja rīkot konferencē Linux santehniķu konference 2020 sesija, lai apspriestu iespēju izstrādāt kodola komponentus Rust. Niks rīko LLVM veltītu mikrokonferenci, un uzskata, ka būtu jauki apspriest Rust atbalsta iespējamās integrācijas kodolā tehniskos aspektus (viņš jau ir sagatavojis KBuild darba prototipu) un saprast, vai šādam atbalstam vajadzētu būt. vispār jāpievieno un kādi Rust lietošanas ierobežojumi būtu jāpieņem.

Atcerēsimies, ka nesenā diskusijā Open Source Summit un Embedded Linux konferencē Linuss Torvalds to neizslēdza saišu parādīšanās kodola apakšsistēmu (piemēram, draiveru) izstrādei tādās valodās kā Rust. Spēja izstrādāt draiverus programmā Rust ļautu mums izveidot drošākus un labākus draiverus ar minimālu piepūli, bez problēmām, piemēram, piekļuvi atmiņai pēc atbrīvošanas, nulles rādītāju novirzēm un bufera pārtēriņu. Šīs funkcijas ieviešanai jau ir vairāki trešo pušu projekti:

  • Izstrādātāji no uzņēmuma “Fish in a Barrel” sagatavots rīku komplekts ielādējamu moduļu rakstīšanai Linux kodolam Rust valodā, izmantojot abstraktu slāņu kopu virs saskarnēm un kodola struktūrām, lai palielinātu drošību. Slāņi tiek automātiski ģenerēti, pamatojoties uz esošajiem kodola galvenes failiem, izmantojot utilītu bindgen. Clang tiek izmantots slāņu veidošanai. Papildus starpslāņiem saliktajos moduļos tiek izmantota staticlib pakotne.
  • Pētnieki no Honkongas Ķīnas universitātes attīstīties projekts iegulto sistēmu un lietu interneta ierīču draiveru izstrādei Rust, kas arī izmanto bindgen, lai ģenerētu slāņus, kuru pamatā ir kodola galvenes faili. Ietvars ļauj uzlabot draiveru drošību, neveicot izmaiņas kodolā - tā vietā, lai radītu papildu izolācijas līmeņus draiveriem kodolā, tiek piedāvāts bloķēt problēmas kompilācijas stadijā, izmantojot drošāko Rust valodu. Tiek pieņemts, ka šādu pieeju varētu pieprasīt iekārtu ražotāji, kuri steigā izstrādā patentētus draiverus, neveicot atbilstošu auditu.
  • Ietvaru izstrādātāji C2Rust C koda pārraidīšanai uz Rust, izturēšanās eksperimenti kodola moduļu konvertēšanai ar minimālu manuālu rediģēšanu. Viena no atzīmētajām problēmām ir tāda koda izmantošana daudzās kodola daļās, kas izmanto GCC paplašinājumus, kas C2Rust vēl netiek atbalstīti. Lai atrisinātu šo problēmu, C2Rust plāno pievienot atbalstu GCC atribūtiem inline, cold, alias, used un section, kā arī paplašināt iekšējās montētāja iespējas un atrisināt problēmas ar struktūrām, kas ir gan izlīdzinātas, gan iepakotas (piemēram, xregs_state). . Būtiskas problēmas, kurām nepieciešams manuāls darbs, ir nespēja pārvērst netriviālos C makro par Rust makro un nepieciešamību atkārtoti definēt tipus, jo C2Rust pārvērš C tipus definīcijās libc pakotnē, taču šo pakotni nevar izmantot kodola moduļos.

Avots: opennet.ru

Pievieno komentāru