Nyowani vhezheni yezvigamba zveLinux kernel nerutsigiro rweRust mutauro

Miguel Ojeda, munyori wepurojekiti yeRust-for-Linux, akakurudzira kuburitswa kwezvikamu zvev5 zvekugadzira madhiraivha emidziyo mumutauro weRust kuti atariswe nevagadziri veLinux kernel. Iyi ndiyo yechitanhatu edition yezvigamba, tichifunga nezvekutanga vhezheni, yakaburitswa isina nhamba yeshanduro. Rutsigiro rwerust inoonekwa seyekuyedza, asi yakatoverengerwa mulinux-rinotevera bazi uye yakagadziridzwa zvakakwana kuti itange basa rekugadzira abstraction layers pamusoro pekernel subsystems, pamwe nekunyora madhiraivha nemamodule. Kuvandudza uku kunotsigirwa neGoogle neISRG (Internet Security Research Group), inova muvambi weLet Encrypt project uye inosimudzira HTTPS nekuvandudzwa kwetekinoroji yekuvandudza kuchengetedzwa kweInternet.

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.

Iyo itsva vhezheni yezvigamba inoramba ichibvisa zvirevo zvakaitwa panguva yekukurukurirana kwekutanga, yechipiri, yechitatu, yechina uye yechishanu editions yezvigamba. Mushanduro itsva:

  • Iyo Toolkit yakagadziridzwa kuburitsa Rust 1.59.0. Musiyano weraibhurari yealloc zvakare inowiriraniswa neiyo nyowani vhezheni yeRust, ichibvisa chizvarwa chinogona kuitika che "kutya" mamiriro kana kukanganisa kukaitika, sekunge kubva mundangariro. Iko kugona kushandisa assembler insert ("feature(global_asm)") yakagadzikana.
  • Yakawedzerwa rutsigiro rwekugadzira zvirongwa zvekugamuchira muRust izvo zvinoshandiswa panguva yekubatanidza kernel.
  • Panzvimbo pekuendesa pre-yakagadzirwa chinangwa chepuratifomu mafaera, iwo anogadzirwa zvine simba zvichienderana nekugadziriswa kwekernel.
  • Yakawedzera HAVE_RUST kernel parameter kugonesa zvivakwa zvinotsigira Rust.
  • Zvisungo zvinokurudzirwa kuti zvishandiswe muRust kodhi kune hardware pseudo-random nhamba jenareta.
  • Inotenderwa kushandiswa kwemacode ezvikanganiso pasina "Kanganiso::" prefix (semuenzaniso, "return Err(EINVAL)") kufungidzira mabatirwo emakodhi ezvikanganiso muC.
  • Yakawedzera "CString" mhando yetsika C-tambo. Iyo Formatter uye Buffer mhando dzakabatanidzwa.
  • Yakawedzera Bool uye LockInfo mhando.
  • Kuitwa kwe spin locks kwave nyore.

Source: opennet.ru

Voeg