Četrta izdaja popravkov za jedro Linuxa s podporo za jezik Rust

Miguel Ojeda, avtor projekta Rust-for-Linux, je predlagal četrto različico komponent za razvoj gonilnikov naprav v jeziku Rust, ki naj bi jih obravnavali razvijalci jedra Linuxa. Podpora za Rust velja za eksperimentalno, vendar je že dogovorjena za vključitev v vejo linux-next in je dovolj zrela, da lahko začne delati na ustvarjanju abstraktnih plasti nad podsistemi jedra, kot tudi na pisanju gonilnikov in modulov. Razvoj financirata Google in ISRG (Internet Security Research Group), ki je ustanovitelj projekta Let's Encrypt in promovira HTTPS ter razvoj tehnologij za izboljšanje internetne varnosti.

Spomnimo se, da predlagane spremembe omogočajo uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra. Podpora za Rust je predstavljena kot možnost, ki privzeto ni omogočena in ne povzroči vključitve Rusta kot obvezne odvisnosti gradnje za jedro. Uporaba Rusta za razvoj gonilnikov vam bo omogočila ustvarjanje varnejših in boljših gonilnikov z minimalnim naporom, brez težav, kot so dostop do pomnilnika po sprostitvi, dereferenciranje ničelnega kazalca in prekoračitev medpomnilnika.

Varno ravnanje s pomnilnikom je v Rustu zagotovljeno v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta in življenjske dobe (obsega) objekta ter z vrednotenjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Nova različica popravkov še naprej odpravlja pripombe med razpravo o prvi, drugi in tretji izdaji popravkov. V novi različici:

  • Izveden je bil prehod na uporabo stabilne izdaje Rust 1.58.0 kot referenčnega prevajalnika. Med spremembami, potrebnimi za projekt, ki še niso vključene v glavni komplet orodij Rust, sta zastavica »-Zsymbol-mangling-version=v0« (pričakovana v Rust 1.59.0) in način »maybe_uninit_extra« (pričakovana v Rust 1.60.0). .XNUMX) so zabeleženi.
  • Dodana samodejna preverjanja razpoložljivosti ustreznih orodij Rust in razširjena možnost testiranja podpore za Rust v sistemu.
  • Predlagane so bile nove abstrakcije za dostop do tabel identifikatorjev naprav (»IdArray« in »IdTable«) iz kode Rust.
  • Dodane plasti za dostop do funkcij, povezanih s časovnikom (ogrodje ure).
  • Gonilniki platforme so zdaj definirani z implementacijami lastnosti.
  • Dodan je bil nov makro za poenostavitev registracije gonilnikov platforme in predlagana je bila nova generična predloga gonilnika.
  • Dodani makri za strukture "dev_*".
  • Dodane metode »{read,write}*_relaxed« za vrsto IoMem .
  • Odstranjena lastnost FileOpener za poenostavitev operacij datotek.
  • Parameter »ThisModule« je bil dodan argumentom, posredovanim pri registraciji gonilnika.
  • Predlagana je standardna predloga za ustvarjanje modulov jedra v jeziku Rust.

Vir: opennet.ru

Dodaj komentar