Nova verzija zakrpa za Linux kernel sa podrškom za Rust jezik

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je izdanje v5 komponenti za razvoj drajvera uređaja Rust za programere Linux kernela koje treba razmotriti. Ovo je šesto izdanje zakrpa, uzimajući u obzir prvu verziju objavljenu bez broja verzije. Podrška za Rust se smatra eksperimentalnom, ali je već uključena u linux-next granu i dovoljno zrela da počne raditi na kreiranju slojeva apstrakcije preko podsistema kernela, kao i pisanju drajvera i modula. Razvoj finansiraju Google i ISRG (Internet Security Research Group), koji je osnivač projekta Let's Encrypt i promoviše HTTPS i razvoj tehnologija za povećanje sigurnosti interneta.

Podsjetimo da predložene izmjene omogućavaju korištenje Rusta kao drugog jezika za razvoj drajvera i modula kernela. Podrška za Rust je predstavljena kao opcija koja nije omogućena prema zadanim postavkama i ne dovodi do uključivanja Rusta među potrebne ovisnosti o izgradnji za kernel. Korišćenje Rusta za razvoj drajvera omogućiće vam da kreirate sigurnije i bolje drajvere uz minimalan napor, bez problema kao što je pristup memorijskom području nakon što se oslobodi, dereferenciranje nul pokazivača i prekoračenje bafera.

Sigurnost memorije je obezbeđena u Rustu u vreme kompajliranja kroz proveru referenci, praćenje vlasništva nad objektom i životnog veka objekta (opsega), kao i kroz procenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

Nova verzija zakrpa i dalje eliminiše komentare date tokom rasprave o prvom, drugom, trećem, četvrtom i petom izdanju zakrpa. U novoj verziji:

  • Komplet alata je ažuriran na izdanje Rusta 1.59.0. Varijanta alloc biblioteke je takođe sinhronizovana sa novom verzijom Rusta, oslobađajući se mogućeg generisanja "paničnog" stanja kada se pojave greške, kao što je nedostatak memorije. Mogućnost korištenja asemblerskih umetaka ("feature(global_asm)") je stabilizirana.
  • Dodata podrška za kreiranje Rust host programa koji se koriste u procesu kompilacije kernela.
  • Umjesto isporuke unaprijed generiranih datoteka specifikacije ciljne platforme, one se dinamički generiraju na osnovu konfiguracije kernela.
  • Dodan parametar kernela HAVE_RUST koji će biti omogućen za arhitekture koje podržavaju Rust.
  • Apstrakcije su predložene za upotrebu u Rust kodu hardverskog generatora pseudoslučajnih brojeva.
  • Upotreba kodova grešaka bez prefiksa "Error::" (na primjer, "return Err(EINVAL)") je dozvoljena za približno rukovanje kodovima grešaka u C.
  • Dodan tip "CString" za izvorne C-stringove. Spojeni tipovi formatera i bafera.
  • Dodane osobine Bool i LockInfo.
  • Pojednostavljena implementacija spin-locka.

izvor: opennet.ru

Dodajte komentar