Četvrto izdanje zakrpa za Linux kernel sa podrškom za Rust jezik

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je četvrtu verziju komponenti za razvoj drajvera uređaja na jeziku Rust za razmatranje od strane programera Linux kernela. Podrška za Rust se smatra eksperimentalnom, ali je već dogovorena za uključivanje u linux-next granu i dovoljno je zrela da započne rad na kreiranju slojeva apstrakcije nad podsistemima 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 poboljšanje internet sigurnosti.

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 nastavlja eliminirati komentare date tokom rasprave o prvom, drugom i trećem izdanju zakrpa. U novoj verziji:

  • Prelazak na korištenje stabilnog izdanja Rust 1.58.0 kao referentnog kompajlera je napravljen. Među promjenama neophodnim za projekat, koje još nisu uključene u glavni Rust alat, zastavica “-Zsymbol-mangling-version=v0” (očekuje se u Rust 1.59.0) i mod “maybe_uninit_extra” (očekuje se u Rust 1.60.0 .XNUMX).
  • Dodane su automatske provjere dostupnosti odgovarajućih Rust alata i proširena mogućnost testiranja podrške za Rust u sistemu.
  • Predložene su nove apstrakcije za pristup tabelama identifikatora uređaja (“IdArray” i “IdTable”) iz Rust koda.
  • Dodati slojevi za pristup funkcijama vezanim za tajmer (okvir sata).
  • Pokretači platforme su sada definisani kroz implementacije osobina.
  • Dodan je novi makro kako bi se pojednostavila registracija drajvera platforme, a predložen je i novi generički predložak drajvera.
  • Dodati makroi za "dev_*" strukture.
  • Dodane metode "{read,write}*_relaxed" za tip IoMem .
  • Uklonjeno svojstvo FileOpener kako bi se pojednostavile operacije s datotekama.
  • Parametar “ThisModule” je dodat argumentima proslijeđenim prilikom registracije drajvera.
  • Predložen je standardni šablon za kreiranje modula kernela na jeziku Rust.

izvor: opennet.ru

Dodajte komentar