Objavljena je sedma verzija zakrpa za podršku Rust drajvera na Linuxu

Prije nekoliko dana, Miguel Ojeda, odgovorna za izradu i podnošenje ovih prijedloga i autor projekta Rust-for-Linux je predstavio prijedlog sedme komponente za razvoj drajvera uređaja rđa za programere Linux kernela koje treba uzeti u obzir.

Ovo je sedmo izdanje zakrpa i za koji se čak i Rust podrška smatra eksperimentalnom, ali je već uključena u linux-next granu i dovoljno je zrela da počne raditi na kreiranju slojeva apstrakcije nad podsistemima kernela, kao i pisanju kontrolera i modula. Razvoj finansiraju Google i ISRG (Internet Security Research Group), koji je osnivač projekta Let's Encrypt i promoviše HTTPS i razvoj tehnologija za povećanje internet sigurnosti.

Predložene promjene 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 toga da Rust bude uključen među potrebne ovisnosti izgradnje za kernel. Korištenje Rusta za razvoj drajvera omogućit će vam da kreirate bolje i sigurnije drajvere uz minimalan napor, bez problema kao što je pristup memorijskom području nakon što ga oslobodite, dereferenciranje nultih pokazivača i prelivanje bafera.

Glavne novine u sedmom prijedlogu

Ovaj novi prijedlog to naglašava komplet alata i varijanta alloc biblioteke, čime je eliminisana moguća generacija "paničnog" stanja na greškama, ažuriran na verziju Rust 1.60 i time stabilizira podršku za "may_uninit_extra" mod koji se koristi u zakrpama kernela.

Pored ovoga, napominje se da dodata mogućnost pokretanja testova iz dokumentacije (testovi koji se koriste istovremeno kao primjeri u dokumentaciji), pretvaranjem testova u vrijeme kompajliranja vezanih za API kernela u KUnit testove koji se pokreću u vrijeme pokretanja kernela. Testovi su potrebni da ne proizvedu upozorenje Clippy linter, kao što je to osnovni Rust kod.

Sa druge strane predlaže se inicijalna implementacija «net» modula sa mrežnim funkcijama. Rust kod omogućava pristup mrežnim strukturama kernela kao što su "Prostor imena" (zasnovan na strukturi kernela "struct net"), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) i njegove IPv6 ekvivalente.

zadnji kraj rustc_codegen_gcc, implementirao je mogućnost pokretanja rustc kompajlera. Puštanje kompajlera u rad odnosi se na sposobnost rustc-a da koristi GCC-bazirani generator koda za izgradnju rustc kompajlera.

Takođe, nedavno izdanje GCC 12.1 uključuje ispravke za libgccjit koje su neophodne da rustc_codegen_gcc ispravno radi. Pripreme su u toku kako bi se omogućila mogućnost instalacije rustc_codegen_gcc pomoću uslužnog programa rustup.

Of the druge promjene koje se ističu ove nove verzije:

  • Inicijalna podrška implementirana za metode asinhronog programiranja (async), implementirana u obliku kasync modula.
  • Dodan net::filter modul za manipulisanje filterima mrežnih paketa. Dodan primer rust_netfilter.rs sa implementacijom filtera u Rust jeziku.
  • Dodata implementacija jednostavnog mutex-a smutex::Mutex koji ne zahtijeva zakačenje.
  • Dodano je zaključavanje NoWaitLock koje nikada ne čeka da bude otpušteno, a ako je zauzeto drugom niti, ne uspijeva pokušavati da preuzme zaključavanje umjesto da zaustavi pozivaoca.
  • Dodano RawSpinLock zaključavanje, identifikovano sa raw_spinlock_t u kernelu, koje se odnosi na sekcije koje ne mogu biti u mirovanju.
  • Dodan tip ARef za reference objekata na koje se primjenjuje mehanizam brojanja referenci (uvijek opovrgnut).
  • Napredak se vidi u razvoju GCC-ovog gccrs frontenda sa implementacijom kompajlera Rust jezika zasnovanog na GCC-u. Trenutno na gccrs-u rade dva programera sa punim radnim vremenom.

Konačno Ako ste zainteresirani da saznate više o tome, detalje možete provjeriti u sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.