Nova verzija zakrpa za Linux kernel s podrškom za Rust jezik

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je izdavanje v5 komponenti za razvoj upravljačkih programa uređaja u jeziku Rust na razmatranje od strane programera Linux kernela. Ovo je šesto izdanje zakrpa, uzimajući u obzir prvu verziju, objavljenu bez broja verzije. 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 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 uklanjati komentare dane tijekom rasprave o prvom, drugom, trećem, četvrtom i petom izdanju zakrpa. U novoj verziji:

  • Skup alata je ažuriran za izdanje Rust 1.59.0. Varijanta biblioteke alloc također je sinkronizirana s novom verzijom Rusta, čime se eliminira moguće stvaranje stanja "panike" kada se pojave pogreške, kao što je nedostatak memorije. Sposobnost korištenja asemblerskih umetaka ("feature(global_asm)") je stabilizirana.
  • Dodana podrška za kreiranje host programa u Rustu koji se koriste tijekom kompilacije kernela.
  • Umjesto isporuke unaprijed generiranih datoteka specifikacije ciljne platforme, one se dinamički generiraju na temelju konfiguracije kernela.
  • Dodan HAVE_RUST parametar jezgre za omogućavanje za arhitekture koje podržavaju Rust.
  • Apstrakcije su predložene za korištenje u Rust kodu za hardverski generator pseudoslučajnih brojeva.
  • Dopuštena je upotreba kodova grešaka bez prefiksa "Error::" (na primjer, "return Err(EINVAL)") za približno rukovanje kodovima grešaka u C-u.
  • Dodana vrsta "CString" za prilagođene C-žice. Tipovi Formatter i Buffer su kombinirani.
  • Dodani tipovi Bool i LockInfo.
  • Implementacija spin lock-ova je pojednostavljena.

Izvor: opennet.ru

Dodajte komentar