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

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je petu 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ć uključena u granu linux-next i dovoljno je razvijena 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 promiče HTTPS i razvoj tehnologija za poboljšanje sigurnosti na internetu.

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, trećem i četvrtom izdanju zakrpa. U novoj verziji:

  • Testiranje komponenti za podršku za Rust dodano je sustavu kontinuirane integracije koji se temelji na botu 0DAY/LKP koji podržava Intel i počelo je objavljivanje izvješća o testiranju. Pripremamo se za integraciju podrške za Rust u automatizirani sustav testiranja KernelCI. Testiranje temeljeno na GitHub CI prebačeno je na korištenje spremnika.
  • Moduli Rust kernela oslobođeni su potrebe za definiranjem atributa sanduka “#![no_std]” i “#![feature(…)]”.
  • Dodana podrška za pojedinačne montažne ciljeve (.o, .s, .ll i .i).
  • Smjernice koda definiraju pravila za odvajanje komentara (“//”) i koda dokumentiranja (“///”).
  • Skripta is_rust_module.sh je prerađena.
  • Dodana podrška za statičke (globalne zajedničke varijable) primitive sinkronizacije temeljene na implementaciji "CONFIG_CONSTRUCTORS".
  • Upravljanje bravom je pojednostavljeno: Guard i GuardMut su kombinirani i imaju jednu parametriranu vrstu.
  • Moguće je definirati dodatne parametre prilikom registracije uređaja.
  • Dodana je apstrakcija "RwSemaphore", koja djeluje kao omot preko C strukture rw_semaphore.
  • Za korištenje mmap-a dodan je novi mm modul i VMA apstrakcija (omot preko strukture vm_area_struct).
  • Upravljački program GPIO PL061 prebačen je na korištenje makronaredbe “dev_*!”.
  • Provedeno je generalno čišćenje koda.

Izvor: opennet.ru

Dodajte komentar