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

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je četvrtu verziju komponenti za razvoj upravljačkih programa uređaja u jeziku Rust na razmatranje programerima Linux kernela. Podrška za Rust smatra se eksperimentalnom, ali je već dogovorena za uključivanje u granu linux-next i dovoljno je zrela za početak rada na stvaranju slojeva apstrakcije preko podsustava jezgre, kao i pisanja upravljačkih programa i modula. Razvoj financiraju Google i ISRG (Internet Security Research Group) koji je osnivač projekta Let's Encrypt te promovira HTTPS i razvoj tehnologija za poboljšanje internetske sigurnosti.

Podsjetimo se da predložene promjene omogućuju korištenje Rusta kao drugog jezika za razvoj upravljačkih programa i modula kernela. Podrška za Rust predstavljena je kao opcija koja nije omogućena prema zadanim postavkama i ne rezultira uključivanjem Rusta kao obavezne ovisnosti o izgradnji za kernel. Korištenje Rusta za razvoj upravljačkih programa omogućit će vam stvaranje sigurnijih i boljih upravljačkih programa uz minimalan napor, bez problema poput pristupa memoriji nakon oslobađanja, dereferenciranja nultog pokazivača i prekoračenja međuspremnika.

Rukovanje sigurnim za memoriju omogućeno je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta i životnog vijeka objekta (opseg), kao i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.

Nova verzija zakrpa nastavlja eliminirati komentare dane tijekom rasprave o prvom, drugom i trećem izdanju zakrpa. U novoj verziji:

  • Izvršen je prijelaz na korištenje stabilnog izdanja Rust 1.58.0 kao referentnog prevoditelja. Među promjenama potrebnim za projekt, koje još nisu uključene u glavni Rust toolkit, zastavica “-Zsymbol-mangling-version=v0” (očekuje se u Rustu 1.59.0) i način rada “maybe_uninit_extra” (očekuje se u Rustu 1.60.0 .XNUMX) su zabilježeni.
  • Dodane su automatske provjere dostupnosti odgovarajućih Rust alata i proširena mogućnost testiranja podrške za Rust u sustavu.
  • Predložene su nove apstrakcije za pristup tablicama identifikatora uređaja (“IdArray” i “IdTable”) iz Rust koda.
  • Dodani slojevi za pristup funkcijama povezanim s mjeračem vremena (okvir sata).
  • Pokretači platforme sada su definirani kroz implementaciju osobina.
  • Dodan je novi makro kako bi se pojednostavila registracija upravljačkih programa platforme, a predložen je i novi generički predložak upravljačkog programa.
  • Dodane su makronaredbe za strukture "dev_*".
  • Dodane metode "{read,write}*_relaxed" za vrstu IoMem .
  • Uklonjeno je svojstvo FileOpener radi pojednostavljenja operacija s datotekama.
  • Parametar “ThisModule” dodan je argumentima proslijeđenim prilikom registracije upravljačkog programa.
  • Predložen je standardni predložak za stvaranje modula jezgre u jeziku Rust.

Izvor: opennet.ru

Dodajte komentar