Mfumo wa kuandika viendeshi salama kwa kinu cha Linux huko Rust

Josh Triplett, anayefanya kazi katika Intel na yuko kwenye kamati inayosimamia maendeleo ya Crates.io, akizungumza kwenye Mkutano wa Teknolojia ya Open Source. kuletwa kikundi kazi kinacholenga kuleta lugha ya Rust kwa usawa na lugha C katika uwanja wa programu za mifumo.

Katika kikundi kazi ambacho kiko katika mchakato wa kuundwa, watengenezaji wa Rust, pamoja na wahandisi kutoka Intel, watatayarisha vipimo vinavyofafanua utendakazi unaohitaji kutekelezwa katika Rust kwa utayarishaji wa mifumo. Upangaji wa mfumo mara nyingi huhitaji upotoshaji wa kiwango cha chini, kama vile kutekeleza maagizo ya kichakataji na kupata maelezo ya kina kuhusu hali ya kichakataji. Kati ya vipengele sawa ambavyo tayari vinatengenezwa kwa ajili ya Rust, usaidizi wa miundo isiyo na majina, miungano, ingizo la lugha ya kusanyiko (jumla ya "asm!") na umbizo la nambari ya sehemu inayoelea ya BFLOAT16 imebainishwa.

Josh anaamini kwamba mustakabali wa upangaji programu wa mfumo ni wa Rust, na lugha ya C katika hali halisi ya kisasa inadai mahali ambapo katika miaka ya nyuma ilimilikiwa na Bunge. Kutu
sio tu hupunguza watengenezaji kutokana na matatizo yaliyomo katika lugha ya C ambayo hutokea kutokana na kazi ya kiwango cha chini na kumbukumbu, lakini pia hutoa fursa ya kuitumia katika maendeleo ya dhana za kisasa za programu.

Wakati wa majadiliano maonyesho
Josh alikuja na wazo la kuongeza uwezo wa kukuza madereva katika kernel ya Linux katika lugha ya Rust, ambayo ingewezekana kuunda madereva salama na bora kwa bidii kidogo, bila shida kama vile ufikiaji wa kumbukumbu baada ya kuachiliwa, null. marejeleo ya vielelezo na mwingiliano wa bafa.

Greg Kroah-Hartman, ambaye ana jukumu la kudumisha tawi thabiti la Linux kernel, alionyesha utayari wake wa kuongeza mfumo wa kukuza viendeshaji katika lugha ya Rust kwenye kernel ikiwa ina faida halisi juu ya C, kwa mfano, itatoa salama. vifungo juu ya API ya Kernel. Kwa kuongezea, Greg anazingatia mfumo huu kama chaguo tu, sio amilifu kwa chaguo-msingi, ili asijumuishe Rust kama utegemezi wa ujenzi kwenye kernel.

Ilibadilika kuwa timu kadhaa tayari zinafanya kazi katika mwelekeo huu. Kwa mfano, watengenezaji kutoka kampuni "Samaki katika 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.

Sambamba yanaendelea Mradi mwingine ulilenga katika kukuza viendeshi vya mifumo iliyopachikwa na vifaa vya IoT, 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.

Sio utendakazi wote uliokusudiwa bado umetekelezwa, lakini mfumo tayari unafaa kabisa kwa kazi na ulitumiwa kuandika kiendeshi kinachofanya kazi kwa kidhibiti cha LAN9512 USB Ethernet kilichotolewa kwenye ubao wa Raspberry Pi 3. Dereva iliyopo ya smsc95xx, iliyoandikwa na C lugha. Ikumbukwe kwamba ukubwa wa moduli na uendeshaji kutoka kwa vipengele vya wakati wa kukimbia wakati wa kuendeleza dereva katika Rust sio muhimu, ambayo inaruhusu mfumo wa kutumika kwa vifaa vilivyo na rasilimali ndogo.

Chanzo: opennet.ru

Kuongeza maoni