Četrta izdaja popravkov za jedro Linux z podporo za jezik Rust

Miguel Ojeda, avtor projekta Rust-for-Linux, je predlagal četrti sklop komponent za razvoj napravnih gonilnikov v jeziku Rust. Podpora za Rust se obravnava kot eksperimentalna, a je že potrjena za vključitev v vejo linux-next in je dovolj razvita, da se lahko začnejo ustvarjati sloji abstrakcije nad podsistemom jedra ter pisanje gonilnikov in modulov. Razvoj financira podjetje Google in organizacija ISRG (Internet Security Research Group), ki je ustanovitelj projekta Let’s Encrypt ter si prizadeva za širitev HTTPS in razvoj tehnologij za povečanje varnosti interneta.

Spomnimo, da predlagane spremembe omogočajo uporabo Rust kot drugega jezika za razvoj gonilnikov in modulov jedra. Podpora za Rust se predstavlja kot opcija, ki ni privzeto aktivirana in ne vodi do vključitve Rust med obvezne odvisnosti za sestavljanje jedra. Uporaba Rust za razvoj gonilnikov bo omogočila ustvarjanje varnih in kakovostnejših gonilnikov z minimalnim trudom, brez težav, kot so dostop do pomnilnika po njegovi osvoboditvi, dereferenciranje nulskih kazalcev in prečkanje meja pomnilnika.

V Rustu se varna obravnava pomnilnika zagotavlja med prevajanjem z verificiranjem sklicev, sledenjem lastništvu objektov in upoštevanjem življenjske dobe objektov (območja vidnosti), prav tako pa tudi z ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust prav tako ponuja sredstva za zaščito pred prenasičenjem celoštevila, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, uporablja koncept neprenosljivosti (immutable) sklicev in spremenljivk privzeto ter ponuja močno statično tipizacijo za minimizacijo logičnih napak.

V novi različici popravkov se nadaljuje odpravljanje pripomb, izraženih med razpravo o prvi, drugi in tretji različici popravkov. V novi različici:

  • Prehod na uporabo stabilne različice prevajalnika Rust 1.58.0 je bil izveden. Med potrebnimi spremembami projekta, ki še niso vključene v glavni sklop orodij Rust, sta označena zastavica „-Zsymbol-mangling-version=v0“ (pričakuje se v Rust 1.59.0) in način „maybe_uninit_extra“ (pričakuje se v Rust 1.60.0).
  • Dodane so bile avtomatske preverbe prisotnosti primernega orodja Rust in razširjene funkcionalnosti za testiranje podpore Rust v sistemu.
  • Predlagane so nove abstrakcije za dostop iz kode v jeziku Rust do tabel identifikatorjev naprav („IdArray“ in „IdTable“).
  • Dodane so vmesne plasti za dostop do timer funkcij (clock framework).
  • Drajverji za platforme so zdaj definirani preko implementacije tipa.
  • Dodana je nova makro funkcija za poenostavitev registracije drajverjev platform in predlagana nova predloga tipičnega drajverja.
  • Dodani so makri za strukture „dev_*“.
  • Dodane so metode „{read,write}*_relaxed“ za tip IoMem<T>.
  • Lastnost FileOpener je odstranjena za poenostavitev operacij z datotekami.
  • V nabor argumentov, ki se prenašajo pri registraciji drajverja, je bil dodan parameter „ThisModule“.
  • Predlagana je bila tipična predloga za ustvarjanje jedrskih modulov v jeziku Rust.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster