Yechipiri edition yezvigamba zveLinux kernel nerutsigiro rweRust mutauro

Miguel Ojeda, munyori wepurojekiti yeRust-for-Linux, akakurudzira vhezheni yakagadziridzwa yezvikamu zvekugadzira madhiraivha emudziyo muRust mutauro kuti itariswe nevagadziri veLinux kernel. Rutsigiro rutsigiro rwunoonekwa seyekuyedza, asi rwakatobvumiranwa pamusoro pekuiswa mulinux-rinotevera bazi. Iyo vhezheni itsva inobvisa zvakataurwa panguva yekukurukurirana kweyekutanga vhezheni yezvigamba. Linus Torvalds atopinda munhaurirano uye akafunga kushandura pfungwa yekugadzirisa mamwe mashandiro.

Rangarira kuti shanduko dzakarongwa dzinoita kuti zvikwanise kushandisa Rust semutauro wechipiri pakuvandudza vatyairi uye kernel module. Rutsigiro rutsigiro runounzwa sechisarudzo chisingagoneswe nekukasira uye hachikonzereri kuti Rust ibatanidzwe sechinhu chinodiwa kuvaka kutsamira kune kernel. Kushandisa Rust yekusimudzira mutyairi kuchakubvumidza kuti ugadzire vatyairi vakachengeteka uye vari nani nekuedza kushoma, vasina matambudziko akadai sekuwana ndangariro mushure mekusunungura, null pointer dereferences, uye buffer overruns.

Memory-yakachengeteka kubata inopihwa muRust panguva yekuunganidza kuburikidza nekutarisa referensi, kuchengeta track yemuridzi wechinhu uye chinhu hupenyu hwese (chiyero), pamwe nekuongororwa kwekururama kwekuyeuka kwekuwana panguva yekodhi kodhi. Ngura inopawo dziviriro kubva pahuwandu hwekufashukira, inoda kusungirirwa kwekutanga kwemhando dzakasiyana usati washandiswa, inobata zvikanganiso zviri nani muraibhurari yakajairwa, inoshandisa iyo pfungwa yezvisingachinjiki mareferensi uye zvinosiyana nekusarudzika, inopa yakasimba static typing kuderedza zvikanganiso zvine musoro.

Shanduko dzinonyanya kuoneka mushanduro itsva yezvigamba:

  • Iyo memory yekugovera kodhi inosunungurwa kubva pakugona kugadzira "kuvhunduka" mamiriro kana zvikanganiso senge kunze kwendangariro zvikaitika. Musiyano weRust alloc raibhurari inosanganisirwa, iyo inogadziridza iyo kodhi kubata kutadza, asi yekupedzisira chinangwa kuendesa ese maficha anodiwa kune kernel kune iyo huru edition yealloc (shanduko dzakatogadzirwa uye kuendeswa kune chiyero. Rust library).
  • Panzvimbo pekuvaka kwehusiku, iwe unogona ikozvino kushandisa beta kuburitswa uye yakagadzikana kuburitswa kwerustc compiler kuunganidza kernel neRust rutsigiro. Parizvino, rustc 1.54-beta1 inoshandiswa seyereferenzi compiler, asi mushure mekuburitswa kwe1.54 pakupera kwemwedzi, ichatsigirwa semugadziri wereferenzi.
  • Yakawedzerwa rutsigiro rwekunyora bvunzo uchishandisa yakajairwa "#[test]" hunhu hweRust uye kugona kushandisa doctest kunyora bvunzo.
  • Yakawedzera rutsigiro rweARM32 uye RISCV zvivakwa mukuwedzera kune yaimbotsigirwa x86_64 uye ARM64.
  • Kuvandudzwa kwekuita kweGCC Rust (GCC kumberi kweRust) uye rustc_codegen_gcc (rustc backend yeGCC), iyo zvino inopasa bvunzo dzese dzekutanga.
  • Chiyero chitsva chekubvisa chinokurudzirwa kuti chishandiswe muRust zvirongwa zve kernel nzira dzakanyorwa muC, senge miti mitema-yakasviba, referensi-yakaverengerwa zvinhu, faira descriptor kusikwa, mabasa, mafaera, uye I/O mavheji.
  • Zvikamu zvekusimudzira mutyairi zvakavandudza rutsigiro rweiyo file_operations module, iyo module! macro, macro kunyoreswa, uye rudimentary madhiraivha (probe uye bvisa).
  • Binder ikozvino inotsigira kupfuudza faira descriptors uye LSM hooks.
  • Mumwe muenzaniso unoshanda wemutyairi weRust unotsanangurwa - bcm2835-rng yeiyo hardware random nhamba jenareta yeRaspberry Pi mabhodhi.

Pamusoro pezvo, mamwe mapurojekiti emakambani ane chekuita nekushandiswa kweRust mu kernel anotaurwa:

  • Microsoft yakaratidza kufarira kuita basa rekubatanidza Rust rutsigiro muLinux kernel uye yakagadzirira kupa mutyairi kuita kweHyper-V paRust mumwedzi iri kuuya.
  • ARM iri kushanda kuvandudza Rust rutsigiro rweArM-based system. Iyo Rust purojekiti yakatokurudzira shanduko dzaizoita kuti 64-bit ARM masisitimu ave Tier 1 chikuva.
  • Google inopa zvakananga rutsigiro rweRust yeLinux chirongwa, iri kugadzira kutsva kwekuita kweBinder interprocess communication mechanism muRust, uye iri kufunga nezve mukana wekugadzirisa zvakare vatyairi vakasiyana muRust. Kuburikidza neISRG (Internet Security Research Group), Google yakapa mari yebasa rekubatanidza Rust rutsigiro muLinux kernel.
  • IBM yakaisa kernel rutsigiro rweRust yePowerPC masisitimu.
  • Iyo LSE (Systems Research Laboratory) rabhoritari yakagadzira mutyairi weSPI muRust.

Source: opennet.ru

Voeg