Nova različica popravkov za jedro Linuxa s podporo za jezik Rust

Miguel Ojeda, avtor projekta Rust-for-Linux, je predlagal izdajo komponent v5 za razvoj gonilnikov naprav v jeziku Rust, ki naj bi jih preučili razvijalci jedra Linuxa. To je šesta izdaja popravkov, upoštevajoč prvo različico, objavljeno brez številke različice. Podpora za Rust velja za poskusno, vendar je že vključena v vejo linux-next in je dovolj razvita za začetek dela na ustvarjanju slojev abstrakcije nad podsistemi jedra, kot tudi pisanje 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, tretji, četrti in peti izdaji popravkov. V novi različici:

  • Komplet orodij je bil posodobljen za izdajo Rust 1.59.0. Različica knjižnice alloc je prav tako sinhronizirana z novo različico Rust, s čimer se odpravi morebitno ustvarjanje stanja "panike", ko pride do napak, na primer zmanjkanja pomnilnika. Možnost uporabe asemblerskih vstavkov (»feature(global_asm)«) je bila stabilizirana.
  • Dodana podpora za ustvarjanje gostiteljskih programov v Rust, ki se uporabljajo med prevajanjem jedra.
  • Namesto da bi zagotovili vnaprej ustvarjene datoteke s specifikacijo ciljne platforme, so dinamično ustvarjene na podlagi konfiguracije jedra.
  • Dodan parameter jedra HAVE_RUST za omogočanje arhitektur, ki podpirajo Rust.
  • Abstrakcije so predlagane za uporabo v kodi Rust za strojni generator psevdonaključnih števil.
  • Dovoljena uporaba kod napak brez predpone »Error::« (na primer »return Err(EINVAL)«) za približevanje obravnavanja kod napak v C.
  • Dodana vrsta "CString" za nize C po meri. Vrsti Formatter in Buffer sta bili združeni.
  • Dodana tipa Bool in LockInfo.
  • Izvedba spin lockov je poenostavljena.

Vir: opennet.ru

Dodaj komentar