Pendekezo la kujadili suala la kuongeza zana za ukuzaji wa kutu kwenye kinu cha Linux

Nick Desagnier (Nick Desaulniers), ambaye anafanya kazi katika Google kutoa msaada kujenga kernel ya Linux kwa kutumia mkusanyaji wa Clang na pia kusaidia rekebisha mende kwenye mkusanyaji wa kutu, alipendekeza kushikilia katika mkutano Mkutano wa Mabomba wa Linux 2020 kikao cha kujadili kuwezesha kukuza vifaa vya kernel huko Rust. Nick anaandaa mkutano mdogo uliowekwa kwa LLVM, na anaamini kuwa itakuwa vizuri kujadili masuala ya kiufundi ya ujumuishaji unaowezekana wa msaada wa Rust kwenye kernel (tayari ameandaa mfano wa kufanya kazi kwa KBuild) na kuelewa ikiwa msaada kama huo unapaswa. iongezwe kabisa na ni vikwazo gani vya matumizi ya Rust vinapaswa kukubaliwa.

Tukumbuke kwamba katika mjadala wa hivi majuzi kwenye Mkutano wa Open Source na mkutano uliopachikwa wa Linux, Linus Torvalds. haikukataza kuibuka kwa vifungo vya ukuzaji wa mifumo ndogo ya kernel isiyo ya msingi (kwa mfano, viendeshaji) katika lugha kama vile Rust. Uwezo wa kutengeneza viendeshaji katika Rust utaturuhusu kuunda viendeshaji salama na bora zaidi kwa juhudi kidogo, bila matatizo kama vile ufikiaji wa kumbukumbu baada ya kukomboa, vielekezo visivyofaa vya vielelezo, na ziada ya bafa. Tayari kuna miradi kadhaa ya wahusika wengine wa kutekeleza kipengele hiki:

  • Watengenezaji kutoka kampuni "Samaki kwenye Pipa" tayari zana ya kuandika moduli zinazoweza kupakiwa za kerneli ya Linux katika lugha ya Rust, kwa kutumia seti ya tabaka dhahania juu ya violesura na miundo ya kernel ili kuongeza usalama. Tabaka huzalishwa kiotomatiki kulingana na faili zilizopo za vichwa vya kernel kwa kutumia matumizi bindgen. Clang hutumiwa kujenga tabaka. Mbali na interlayers, modules zilizokusanywa hutumia mfuko wa staticlib.
  • Watafiti kutoka Chuo Kikuu cha China cha Hong Kong kuendeleza mradi wa kutengeneza viendeshaji vya mifumo iliyopachikwa na Mtandao wa vifaa vya Mambo katika Rust, ambayo pia hutumia bindgen kutoa tabaka kulingana na faili za vichwa vya kernel. Mfumo huo hukuruhusu kuboresha usalama wa dereva bila kufanya mabadiliko kwenye kernel - badala ya kuunda viwango vya ziada vya kutengwa kwa madereva kwenye kernel, inapendekezwa kuzuia shida katika hatua ya mkusanyiko, kwa kutumia lugha salama zaidi ya Kutu. Inachukuliwa kuwa njia hiyo inaweza kuwa katika mahitaji ya wazalishaji wa vifaa vinavyoendeleza madereva ya wamiliki kwa haraka bila kufanya ukaguzi sahihi.
  • Watengenezaji wa mfumo C2Kutu kwa kutangaza msimbo wa C hadi Rust, kutekeleza majaribio ya kubadilisha moduli za kernel na uhariri mdogo wa mwongozo. Mojawapo ya shida zilizobainishwa ni matumizi katika sehemu nyingi za kernel ya msimbo ambayo hutumia viendelezi vya GCC ambavyo bado havitumiki katika C2Rust. Ili kutatua tatizo hili, C2Rust inapanga kuongeza usaidizi kwa sifa za GCC zilizo ndani, baridi, pak, zilizotumika na sehemu, na pia kupanua uwezo wa kiunganishi cha ndani na kutatua shida na miundo ambayo imeunganishwa na imefungwa (kwa mfano, xregs_state) . Matatizo makubwa yanayohitaji kazi ya mikono ni pamoja na kutokuwa na uwezo wa kutafsiri macros yasiyo ya kawaida ya C hadi Rust macros na haja ya kufafanua upya aina, kwa kuwa C2Rust hutafsiri aina za C katika ufafanuzi katika kifurushi cha libc, lakini kifurushi hiki hakiwezi kutumika katika moduli za kernel.

Chanzo: opennet.ru

Kuongeza maoni