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

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je ažuriranu verziju komponenti za razvoj drajvera uređaja na jeziku Rust na razmatranje od strane programera Linux kernela. Podrška za Rust se smatra eksperimentalnom, ali je već dogovorena za uključivanje u linux-next granu. Nova verzija eliminiše komentare date tokom rasprave o prvoj verziji zakrpa. Linus Torvalds se već uključio u diskusiju i predložio promjenu logike za obradu nekih bitnih operacija.

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.

Najuočljivije promjene u novoj verziji zakrpa:

  • Kod za dodjelu memorije oslobođen je potencijalnog generiranja stanja "panike" kada se pojave greške kao što je nedostatak memorije. Uključena je i varijanta Rust alloc biblioteke, koja prerađuje kod za rukovanje greškama, ali krajnji cilj je da se prenesu sve funkcije potrebne za kernel u glavno izdanje alloc-a (promene su već pripremljene i prebačene u standardno Rust biblioteka).
  • Umjesto noćnih build-ova, sada možete koristiti beta izdanja i stabilna izdanja rustc kompajlera za kompajliranje kernela sa Rust podrškom. Trenutno se rustc 1.54-beta1 koristi kao referentni kompajler, ali nakon što izdanje 1.54 bude objavljeno krajem mjeseca, bit će podržano kao referentni kompajler.
  • Dodata podrška za pisanje testova korišćenjem standardnog atributa “#[test]” za Rust i mogućnost korišćenja doctestova za dokumentovanje testova.
  • Dodata podrška za ARM32 i RISCV arhitekture pored prethodno podržanih x86_64 i ARM64.
  • Poboljšane implementacije GCC Rusta (GCC frontend za Rust) i rustc_codegen_gcc (rustc backend za GCC), koji sada prolazi sve osnovne testove.
  • Predlaže se novi nivo apstrakcije za upotrebu u Rust programima mehanizama kernela napisanih na C-u, kao što su crveno-crna stabla, objekti sa brojem referenci, kreiranje deskriptora datoteke, zadaci, datoteke i I/O vektori.
  • Komponente razvoja drajvera imaju poboljšanu podršku za modul file_operations, makro modula!, registraciju makroa i rudimentarne drajvere (provjeri i ukloni).
  • Binder sada podržava prosljeđivanje deskriptora datoteka i LSM kuka.
  • Predlaže se funkcionalniji primjer Rust drajvera - bcm2835-rng za hardverski generator slučajnih brojeva Raspberry Pi ploča.

Dodatno se spominju projekti nekih kompanija vezani za korištenje Rusta u kernelu:

  • Microsoft je izrazio interesovanje za učešće u radu na integraciji podrške za Rust u Linux kernel i spreman je da obezbedi implementaciju drajvera za Hyper-V na Rustu u narednim mesecima.
  • ARM radi na poboljšanju Rust podrške za ARM bazirane sisteme. Rust projekat je već predložio promjene koje bi 64-bitne ARM sisteme učinile Tier 1 platformom.
  • Google direktno pruža podršku za projekat Rust za Linux, razvija novu implementaciju Binder međuprocesnog komunikacionog mehanizma u Rustu i razmatra mogućnost prerade različitih drajvera u Rustu. Preko ISRG (Internet Security Research Group), Google je obezbijedio sredstva za rad na integraciji podrške za Rust u Linux kernel.
  • IBM je implementirao podršku kernela za Rust za PowerPC sisteme.
  • Laboratorija LSE (Systems Research Laboratory) je razvila SPI drajver u Rustu.

izvor: opennet.ru

Dodajte komentar