Yechina edition yezvigamba zveLinux kernel nerutsigiro rweRust mutauro

Miguel Ojeda, munyori wepurojekiti yeRust-for-Linux, akakurudzira vhezheni yechina yezvikamu zvekugadzira madhiraivha emidziyo mumutauro weRust kuti itariswe nevagadziri veLinux kernel. Rutsigiro rutsigiro rwunoonekwa seyekuyedza, asi rwakatobvumiranwa kuti ribatanidzwe mulinux-rinotevera bazi uye yakakura zvakakwana kuti itange basa rekugadzira abstraction layers pamusoro pekernel subsystems, pamwe nekunyora madhiraivha nemamodule. Kubudirira 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 uye yechitatu editions yezvigamba. Mushanduro itsva:

  • Shanduko yekushandisa yakagadzikana kuburitswa kweRust 1.58.0 seyereferenzi compiler yaitwa. Pakati peshanduko dzinodiwa purojekiti, iyo isati yabatanidzwa mune huru Rust toolkit, "-Zsymbol-mangling-version=v0" mureza (inotarisirwa muRust 1.59.0) uye "pamwe_uninit_extra" mode (inotarisirwa muRust 1.60.0 .XNUMX) vanocherechedzwa. .
  • Yakawedzera otomatiki cheki yekuwanikwa kweakakodzera Rust maturusi uye yakawedzera kugona kuyedza Rust rutsigiro muhurongwa.
  • Zvitsva zvinotorwa zvakakurudzirwa kuti uwane matafura ekuzivikanwa kwemudziyo ("IdArray" uye "IdTable") kubva kuRust kodhi.
  • Akawedzera maseru ekuwana ane chekuita nenguva (wachi chimiro).
  • Vatyairi vePlatform vava kutsanangurwa kuburikidza nekuita maitiro.
  • Imwe macro itsva yakawedzerwa kuti kurerutsa kunyoreswa kwevatyairi vepuratifomu, uye itsva generic driver template yakatsanangurwa.
  • Yakawedzera macros e "dev_*" zvimiro.
  • Yakawedzerwa "{verenga, nyora}*_relaxed" nzira dzeIoMem mhando.
  • Yakabvisa iyo FileOpener pfuma kurerutsa mafaera.
  • Iyo "ThisModule" parameter yakawedzerwa kune nharo dzakapfuura pakunyoresa mutyairi.
  • Yakajairika template yekugadzira kernel module muRust mutauro inokurudzirwa.

Source: opennet.ru

Voeg