Peta izdaja popravkov za jedro Linuxa s podporo za jezik Rust

Miguel Ojeda, avtor projekta Rust-for-Linux, je predlagal peto različico komponent za razvoj gonilnikov naprav v jeziku Rust, ki naj bi jih obravnavali razvijalci jedra Linuxa. Podpora za Rust velja za poskusno, vendar je že vključena v vejo linux-next in je dovolj razvita za začetek dela na ustvarjanju slojev abstrakcije nad podsistemi jedra, kot tudi pisanje gonilnikov in modulov. Razvoj financirata Google in ISRG (Internet Security Research Group), ki je ustanovitelj projekta Let's Encrypt in promovira HTTPS ter razvoj tehnologij za izboljšanje internetne varnosti.

Spomnimo se, da predlagane spremembe omogočajo uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra. Podpora za Rust je predstavljena kot možnost, ki privzeto ni omogočena in ne povzroči vključitve Rusta kot obvezne odvisnosti gradnje za jedro. Uporaba Rusta za razvoj gonilnikov vam bo omogočila ustvarjanje varnejših in boljših gonilnikov z minimalnim naporom, brez težav, kot so dostop do pomnilnika po sprostitvi, dereferenciranje ničelnega kazalca in prekoračitev medpomnilnika.

Varno ravnanje s pomnilnikom je v Rustu zagotovljeno v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta in življenjske dobe (obsega) objekta ter z vrednotenjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Nova različica popravkov še naprej odpravlja pripombe med razpravo o prvi, drugi, tretji in četrti izdaji popravkov. V novi različici:

  • Preizkušanje komponent za podporo Rust je bilo dodano sistemu za stalno integracijo, ki temelji na botu 0DAY/LKP, ki ga podpira Intel, in začela se je objava poročil o testiranju. Pripravljamo se na integracijo podpore za Rust v sistem avtomatiziranega testiranja KernelCI. Testiranje na osnovi GitHub CI smo prenesli na uporabo vsebnikov.
  • Moduli jedra Rust so osvobojeni potrebe po definiranju atributov zaboja “#![no_std]” in “#![feature(…)]”.
  • Dodana podpora za posamezne zbirne cilje (.o, .s, .ll in .i).
  • Smernice za kodo določajo pravila za ločevanje komentarjev (»//«) in kode za dokumentiranje (»///«).
  • Skript is_rust_module.sh je bil predelan.
  • Dodana podpora za statične (globalne spremenljivke v skupni rabi) sinhronizacijske primitive, ki temeljijo na izvedbi »CONFIG_CONSTRUCTORS«.
  • Upravljanje ključavnice je poenostavljeno: Guard in GuardMut sta združena in imata en parametriran tip.
  • Pri registraciji naprav je možno določiti dodatne parametre.
  • Dodana je abstrakcija "RwSemaphore", ki deluje kot ovoj nad strukturo C rw_semaphore.
  • Za uporabo mmap sta bila dodana nov modul mm in abstrakcija VMA (ovitek nad strukturo vm_area_struct).
  • Gonilnik GPIO PL061 je bil preklopljen na uporabo makra »dev_*!«.
  • Izvedeno je bilo splošno čiščenje kode.

Vir: opennet.ru

Dodaj komentar