Chikumbiro chekukurukura nyaya yekuwedzera Rust maturusi ekuvandudza kuLinux kernel

Nick Desagnier (Nick Desaulniers), anoshanda kuGoogle kupa tsigiro kuvaka iyo Linux kernel uchishandisa iyo Clang compiler uye zvakare kubatsira gadzirisa tsikidzi muRust compiler, yakataurwa kubata pamusangano Linux Plumbers Musangano 2020 chikamu chekukurukurirana kuita kuti zvikwanise kugadzira kernel zvikamu muRust. Nick ari kuronga diki-conference yakatsaurirwa kuLLVM, uye anotenda kuti zvingava zvakanaka kukurukura nezvehunyanzvi maficha ekugoneka kubatanidzwa kweRust rutsigiro mukernel (akatogadzirira prototype inoshanda yeKBuild) uye kunzwisisa kana rutsigiro rwakadaro ruchifanira. kuwedzerwa zvachose uye zvirambidzo pakushandiswa kweRust zvinofanira kugamuchirwa.

Ngatiyeukei kuti muhurukuro ichangoburwa paOpen Source Summit uye Embedded Linux musangano, Linus Torvalds. handina kuzvirambidza kubuda kwezvisungo zvekusimudzira zvisiri-core kernel subsystems (semuenzaniso, vatyairi) mumitauro yakaita seRust. Iko kugona kukudziridza vatyairi muRust kwaizotibvumira kugadzira vatyairi vakachengeteka uye vari nani nekuedza kushoma, vasina matambudziko akadai sekuwana ndangariro mushure mekusunungura, null pointer dereferences, uye buffer overruns. Pane mapurojekiti akati wandei echitatu ekushandisa ichi chimiro:

  • Vagadziri kubva kukambani "Fish in a Barrel" yakagadzirirwa chishandiso chekunyora anotakurika mamodule eLinux kernel muRust mutauro, uchishandisa seti yeabstract layers pamusoro pemainterfaces uye kernel zvimiro kuti uwedzere kuchengetedzeka. Matanho anogadzirwa otomatiki zvichibva pane iripo kernel musoro mafaera uchishandisa utility bindgen. Clang inoshandiswa kugadzira zvidimbu. Kuwedzera kune interlayers, iyo yakaunganidzwa modules inoshandisa iyo staticlib package.
  • Vatsvagiri kubva kuChinese University yeHong Kong develop purojekiti yekugadzira madhiraivha eakamisikidzwa masisitimu uye Internet yeZvinhu zvishandiso muRust, iyo inoshandisawo bindgen kugadzira zvidimbu zvinoenderana nemafaira emusoro wekernel. Iyo dhizaini inobvumidza iwe kuvandudza kuchengetedza kwemutyairi pasina kuita shanduko kune kernel - pachinzvimbo chekugadzira mamwe mazinga ekuzviparadzanisa nevamwe kune vatyairi mu kernel, inokurudzirwa kuvhara matambudziko padanho rekubatanidza, uchishandisa iyo yakachengeteka Rust mutauro. Zvinofungidzirwa kuti nzira yakadai inogona kunge iri kudiwa nevagadziri vemidziyo vanogadzira vatyairi vevaridzi nekukasira pasina kuita ongororo chaiyo.
  • Framework vagadziri C2Rust yekutepfenyura C kodhi kuRust, ita kuyedza pakushandura kernel mamodule ane mashoma manyoro ekugadzirisa. Imwe yematambudziko akacherechedzwa ndeye kushandiswa munzvimbo dzakawanda dzekernel yekodhi inoshandisa GCC yekuwedzera iyo isati yatsigirwa muC2Rust. Kugadzirisa dambudziko iri, C2Rust inoronga kuwedzera tsigiro yeGCC hunhu mukati, kutonhora, alias, yakashandiswa uye chikamu, pamwe nekuwedzera kugona kweiyo inline assembler uye kugadzirisa matambudziko nezvimiro izvo zvese zvakabatanidzwa uye zvakarongedzwa (semuenzaniso, xregs_state) . Matambudziko akakura anoda basa remaoko anosanganisira kusakwanisa kushandura maC macros asiri madiki muRust macros uye kuda kutsanangura patsva mhando, sezvo C2Rust inoshandura C mhando kuita tsananguro mu libc package, asi pasuru iyi haigone kushandiswa mukernel modules.

Source: opennet.ru

Voeg