Treća verzija zakrpa za podršku Rust drajvera u Linuxu je već objavljena

Šest mjeseci nakon objavljivanja druge verzije, Miguel Ojeda, autor projekta Rust-for-Linux, objavio prijedlog treće opcije za razvoj drajvera uređaja na Rust jeziku u Linux kernelu.

Podrška za Rust se smatra eksperimentalnom, ali njeno uključivanje u linux-next granu je već dogovoreno. Razvoj finansiraju Google i organizacija ISRG (Internet Security Research Group), koja je osnivač projekta Let's Encrypt i doprinosi promociji HTTPS-a i razvoju tehnologija za poboljšanje internet sigurnosti.

Treba imati na umu da predložene promjene omogućavaju da se Rust koristi kao drugi jezik za razvoj upravljačkih programa i modula kernela.

Rust drajveri na Linuxu
Vezani članak:
Druga verzija zakrpa za podršku Rust upravljačkom programu na Linuxu je već isporučena

Podrška za Rust se reklamira kao opcija koja nije aktivna po defaultu i to ne dovodi do toga da Rust bude uključen u potrebne osnovne zavisnosti izgradnje. Korištenje Rusta za razvoj drajvera omogućit će vam da kreirate bolje i sigurnije drajvere uz minimalan napor, bez muke oko pristupa području memorije kada se jednom oslobodi, dereferenciranja nul pokazivača i prekoračenja ograničenja bafera.

Nova verzija zakrpa i dalje eliminira komentare date tokom rasprave o prvoj i drugoj verziji zakrpa i najzapaženije promjene koje možemo pronaći:

Prešao na Rust 1.57 stabilnu verziju kao referentni kompajler i obezbeđeno je povezivanje sa stabilizovanim izdanjem jezika Rust 2021. Prelazak na Rust 2021 p specifikacijudozvoljeno da počne raditi kako bi se izbjeglo korištenje takvih nestabilnih funkcija u zakrpama kao što su const_fn_transmute, const_panic, const_unreachable_unchecked i core_panic i try_reserve.

Takođe se ističe da razvoj alloc verzije je nastavljen iz Rust biblioteke, u novoj verziji, opcije "no_rc" i "no_sync" su implementirane kako bi se onemogućila funkcionalnost koji se ne koristi u Rust kodu za kernel, što biblioteku čini modularnijom. Nastavljamo da radimo s glavnim programerima alloc-a kako bismo unijeli potrebne promjene kernela u glavnu biblioteku. Opcija "no_fp_fmt_parse", koja je potrebna da bi biblioteka funkcionisala na nivou kernela, premještena je u Rustovu osnovnu biblioteku (kernel).

Kod je očišćen kako bi se uklonila moguća upozorenja kompajlera prilikom kompajliranja kernela u CONFIG_WERROR modu. Kada se kod kreira u Rustu, uključeni su dodatni dijagnostički načini kompajlera i upozorenja Clippy lintera.

Oni su predložili apstrakcije za korištenje seqlocks (zaključavanja sekvence), povratni pozivi za upravljanje napajanjem, memorijski I/O (readX / writeX), rukovaoci prekida i niti, GPIO, pristup uređajima, drajveri i akreditivi u rust kodu.

Alati za razvoj drajvera su prošireni uz korištenje muteksa koji se može premeštati, iteratora bita, pojednostavljenog povezivanja preko pokazivača, poboljšane dijagnostike grešaka i nezavisne infrastrukture sabirnice podataka.

Rad sa linkovima je poboljšan korišćenjem tipa Ref pojednostavljeno, zasnovano na backendu refcount_t, koji koristi centralni API istog imena za brojanje referenci. Podrška za tipove Arc i Rc obezbeđena u standardnoj biblioteci mapiranja je uklonjena i nije dostupna u kodu koji se izvršava na nivou kernela (za samu biblioteku, pripremljene su opcije za onemogućavanje ovih tipova).

Verzija PL061 GPIO drajvera, prepisana u Rustu, dodata je zakrpama. Karakteristika drajvera je da njegova implementacija skoro red-po-linija ponavlja postojeći C GPIO drajver. Za programere koji žele da se upoznaju sa kontrolerima izgradnje u Rustu, pripremljeno je poređenje red po red, koje daje uvid u to u koje je nadgradnje u Rustu C kod postao.

Rustova glavna kodna baza usvaja rustc_codegen_gcc, rustc backend za GCC koji implementira AOT kompilaciju koristeći libgccjit biblioteku. Uz pravilan razvoj pozadine, omogućit će vam da prikupite Rust kod uključen u kernel koristeći GCC.
Pored ARM-a, Google-a i Microsofta, Red Hat je izrazio interesovanje za korištenje Rusta u Linux kernelu.

Konačno, ako ste zainteresirani da saznate više o tome, možete pogledati detalje Na sledećem linku.


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.