Peto izdanje zakrpa za Linux kernel sa podrškom za Rust jezik

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je petu verziju komponenti za razvoj drajvera uređaja na Rust jeziku za razmatranje od strane programera jezgra Linuxa. Podrška za Rust se smatra eksperimentalnom, ali je već uključena u linux-next granu i dovoljno je razvijena 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 internetske 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 i dalje eliminiše komentare date tokom rasprave o prvom, drugom, trećem i četvrtom izdanju zakrpa. U novoj verziji:

  • Testiranje komponenti za Rust podršku je dodato u sistem kontinuirane integracije baziran na Intel-ovom podržanom 0DAY/LKP botu i počelo je objavljivanje izvještaja o testiranju. Pripremamo se da integrišemo Rust podršku u KernelCI automatizovani sistem testiranja. Testiranje zasnovano na GitHub CI prebačeno je na upotrebu kontejnera.
  • Rust kernel moduli su oslobođeni potrebe da se definišu atributi sanduka “#![no_std]” i “#![feature(…)]”.
  • Dodata podrška za ciljeve jednog sklopa (.o, .s, .ll i .i).
  • Smjernice koda definiraju pravila za odvajanje komentara (“//”) i dokumentiranja koda (“///”).
  • Skripta is_rust_module.sh je prerađena.
  • Dodata podrška za statičke (globalne dijeljene varijable) primitive sinhronizacije zasnovane na implementaciji "CONFIG_CONSTRUCTORS".
  • Upravljanje zaključavanjem je pojednostavljeno: Guard i GuardMut su kombinovani i jedan je parametrizovani tip.
  • Moguće je definirati dodatne parametre prilikom registracije uređaja.
  • Dodana je apstrakcija "RwSemaphore", koja djeluje kao omotač preko rw_semaphore C strukture.
  • Za korištenje mmap, dodani su novi mm modul i VMA apstrakcija (omotač preko strukture vm_area_struct).
  • GPIO PL061 drajver je prebačen na korištenje makroa “dev_*!”.
  • Izvršeno je generalno čišćenje koda.

izvor: opennet.ru

Dodajte komentar