Druga verzija zakrpa za Linux jezgru s podrškom za jezik Rust

Miguel Ojeda, autor projekta Rust-for-Linux, predložio je za razmatranje programerima Linux jezgre ažuriranu verziju komponenti za razvoj drajvera uređaja na jeziku Rust. Podrška za Rust smatra se eksperimentalnom, ali je već odobrena za uključivanje u liniju linux-next. U novoj verziji ispravljene su primjedbe iznesene tijekom rasprave o prvoj verziji zakrpa. Linus Torvalds već se uključio u raspravu i predložio promjenu logike obrade nekih bitnih operacija.

Podsjećamo da predložene promjene omogućuju korištenje Rusta kao drugog jezika za razvoj drajvera i modula jezgra. Podrška za Rust se nudi kao opcija, koja nije aktivna prema zadanim postavkama i ne dovodi do uključivanja Rusta kao obvezne gradbene zavisnosti za jezgro. Korištenje Rusta za razvoj drajvera omogućit će stvaranje sigurnijih i kvalitetnijih drajvera s minimalnim naporom, bez problema poput pristupa memorijskom prostoru nakon oslobađanja, dereferenciranja nultih pokazivača i izlaska iz granica bafera.

Siguran rad s memorijom osigurava se u Rust-u tijekom kompajlacije putem provjere referenci, praćenja vlasništva nad objektima i uzimanja u obzir vremena života objekata (opseg vidljivosti), kao i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža alate za zaštitu od prelivanja cijelih brojeva, zahtijeva obveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabli prema zadanim postavkama te nudi snažnu statičku tipizaciju za minimiziranje logičkih grešaka.

Najistaknutije promjene u novoj verziji zakrpa:

  • Kod za raspodjelu memorije oslobođen je mogućih generacija stanja 'panic' kada dođe do pogrešaka poput nedostatka memorije. U sastav je uključen varijanta Rust-biblioteke alloc, u kojoj je preuređen kod za obradu kvarova, ali je konačni cilj prijenos svih mogućnosti potrebnih za jezgru u glavnu verziju alloc (promjene su već pripremljene i poslane u sastav standardne biblioteke Rust).
  • Umjesto noćnih gradnji za kompajliranje jezgre s podrškom za Rust, sada je moguće koristiti beta izdanja i stabilne verzije kompajlera rustc. Trenutno se kao referentni kompajler koristi rustc 1.54-beta1, ali nakon izlaska verzije 1.54 krajem mjeseca, on će se održavati kao referentni.
  • Dodana je podrška za pisanje testova koristeći standardni Rust atribut '#[test]' i mogućnost primjene doctestova za dokumentiranje testova.
  • Dodana je podrška za arhitekture ARM32 i RISCV, uz prethodno podržane x86_64 i ARM64.
  • Poboljšane su implementacije GCC Rust (GCC frontend za Rust) i rustc_codegen_gcc (backend rustc za GCC), koji sada prolazi sve osnovne testove.
  • Predložen je novi nivo apstrakcije za korištenje u programima na jeziku Rust mehanizama jezgre, napisanih na jeziku C, kao što su crveno-crna stabla, objekti s brojanjem referenci, kreiranje datotečnih deskriptora, zadaci, datoteke i vektori ulaza/izlaza.
  • U komponentama za razvoj drajvera poboljšana je podrška za modul 'file_operations', makro 'module!', registraciju makroa i rudimentarnih drajvera (probe i remove).
  • U Binder-u je implementirana podrška za prijenos datotečnih deskriptora i LSM-hookova.
  • Predložen je funkcionalniji primjer drajvera na Rustu – bcm2835-rng za hardverski generator slučajnih brojeva na Raspberry Pi pladnjama.

Dodatno se spominju projekti nekih kompanija vezani uz korištenje Rusta u jezgru:

  • Kompanija Microsoft izrazila je interes za sudjelovanje u radu na integraciji podrške za Rust u jezgru Linux i spremna je u narednim mjesecima pružiti implementacije drajvera za Hyper-V na Rastu.
  • Kompanija ARM radi na poboljšanju podrške za Rust za sustave temeljene na ARM procesorima. Projektu Rust već su predložene promjene koje 64-bitne ARM sustave prebacuju u razinu prvog razreda podrške (Tier-1).
  • Kompanija Google izravno osigurava podršku projektu Rust for Linux, razvija novu implementaciju mehanizma međuprosječnog komunikacijskog sustava Binder na Rastu i razmatra mogućnost preinake raznih drajvera na Rust. Kroz ISRG (Internet Security Research Group) kompanija Google osigurala je financiranje rada na integraciji podrške za Rust u jezgru Linux.
  • Kompanija IBM implementirala je podršku za Rust u jezgru za PowerPC sustave.
  • Laboratorija LSE (Laboratorij za sustavna istraživanja) razvila je SPI-drajver na Rastu.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster