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

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je ažuriranu 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ć dogovoreno da se uključi u granu linux-next. Nova verzija uklanja komentare iznesene tijekom rasprave o prvoj verziji zakrpa. Linus Torvalds već se pridružio raspravi i predložio promjenu logike za obradu nekih bitnih operacija.

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.

Najuočljivije promjene u novoj verziji zakrpa:

  • Kod dodjele memorije oslobođen je potencijalnog generiranja stanja "panike" kada se pojave pogreške kao što je nedostatak memorije. Uključena je varijanta biblioteke Rust alloc, koja prerađuje kod za rješavanje kvarova, ali krajnji cilj je prenijeti sve značajke potrebne za kernel u glavno izdanje alloca (promjene su već pripremljene i prenesene na standard Rust knjižnica).
  • Umjesto noćnih nadogradnji, sada možete koristiti beta izdanja i stabilna izdanja rustc prevoditelja za kompajliranje kernela s podrškom za Rust. Trenutačno se rustc 1.54-beta1 koristi kao referentni prevodilac, ali nakon što izdanje 1.54 bude objavljeno krajem mjeseca, bit će podržano kao referentni prevodilac.
  • Dodana podrška za pisanje testova pomoću standardnog atributa “#[test]” za Rust i mogućnost korištenja doctestova za dokumentiranje testova.
  • Dodana je podrška za ARM32 i RISCV arhitekture uz prethodno podržane x86_64 i ARM64.
  • Poboljšane implementacije GCC Rust (GCC frontend za Rust) i rustc_codegen_gcc (rustc backend za GCC), koji sada prolazi sve osnovne testove.
  • Predlaže se nova razina apstrakcije za korištenje u Rust programima mehanizama jezgre napisanih u C-u, kao što su crveno-crna stabla, objekti s brojanjem referenci, stvaranje deskriptora datoteke, zadaci, datoteke i I/O vektori.
  • Komponente za razvoj upravljačkih programa poboljšale su podršku za modul file_operations, module!macro, registraciju makronaredbi i rudimentarne upravljačke programe (provjeri i ukloni).
  • Binder sada podržava prosljeđivanje deskriptora datoteka i LSM poveznica.
  • Predlaže se funkcionalniji primjer Rust upravljačkog programa - bcm2835-rng za hardverski generator slučajnih brojeva Raspberry Pi ploča.

Dodatno se spominju projekti nekih tvrtki vezani uz korištenje Rusta u kernelu:

  • Microsoft je izrazio interes za sudjelovanje u radu na integraciji podrške za Rust u jezgru Linuxa i spreman je osigurati implementacije upravljačkih programa za Hyper-V na Rustu u nadolazećim mjesecima.
  • ARM radi na poboljšanju podrške za Rust za sustave temeljene na ARM-u. Projekt Rust već je predložio promjene koje bi 64-bitne ARM sustave učinile Tier 1 platformom.
  • Google izravno pruža podršku za projekt Rust for Linux, razvija novu implementaciju mehanizma međuprocesne komunikacije Binder u Rustu i razmatra mogućnost prerade različitih upravljačkih programa u Rustu. Kroz ISRG (Internet Security Research Group), Google je osigurao sredstva za rad na integraciji podrške za Rust u Linux kernel.
  • IBM je implementirao podršku za kernel za Rust za PowerPC sustave.
  • LSE (Systems Research Laboratory) laboratorij je razvio SPI drajver u Rustu.

Izvor: opennet.ru

Dodajte komentar