Tretja različica popravkov za podporo gonilnikom Rust v Linuxu je že izšla

Šest mesecev po objavi druge različice, Miguel Ojeda, avtor projekta Rust-for-Linux, predstavila predlog tretje možnosti za razvoj gonilnikov naprav v jeziku Rust v jedru Linuxa.

Podpora za Rust velja za eksperimentalno, vendar je bila njena vključitev v naslednjo vejo linux že dogovorjena. Razvoj financirata Google in organizacija ISRG (Internet Security Research Group), ki je ustanoviteljica projekta Let's Encrypt in prispeva k promociji HTTPS in razvoju tehnologij za izboljšanje internetne varnosti.

Ne smemo pozabiti, da predlagane spremembe omogočajo uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra.

Gonilniki Rust v Linuxu
Povezani članek:
Druga različica popravkov za podporo gonilnikom Rust v Linuxu je že poslana

Podpora za Rust se oglašuje kot možnost, ki privzeto ni aktivna in to ne povzroči, da bi bil Rust vključen v zahtevane osnovne odvisnosti gradnje. Uporaba Rusta za razvoj gonilnikov vam bo omogočila ustvarjanje boljših in varnejših gonilnikov z minimalnim naporom, brez težav z dostopom do območja pomnilnika, ko je enkrat osvobojeno, dereferenciranjem ničelnih kazalcev in preseganjem omejitev medpomnilnika.

Nova različica popravkov še naprej odpravlja komentarje med razpravo o prvi in ​​drugi različici popravkov ter najbolj opazne spremembe, ki jih lahko najdemo:

Prešel na stabilno različico Rust 1.57 kot referenčni prevajalnik in je zagotovljena vezava na stabilizirano izdajo jezika Rust 2021. Prehod na specifikacijo Rust 2021 pdovoljeno začeti delati, da bi se izognili uporabi tako nestabilnih funkcij v popravkih, kot so const_fn_transmute, const_panic, const_unreachable_unchecked in core_panic in try_reserve.

Izstopa tudi to razvoj različice alloc se je nadaljeval iz knjižnice Rust, v novi različici, možnosti "no_rc" in "no_sync" sta implementirani za onemogočanje funkcionalnosti ki se ne uporablja v kodi Rust za jedro, zaradi česar je knjižnica bolj modularna. Še naprej sodelujemo z glavnimi razvijalci alloc, da vnesemo potrebne spremembe jedra v glavno knjižnico. Možnost "no_fp_fmt_parse", ki je potrebna za delovanje knjižnice na ravni jedra, je bila premaknjena v Rustovo osnovno knjižnico (jedro).

Koda je bila očiščena, da se odstranijo morebitna opozorila prevajalnika pri prevajanju jedra v načinu CONFIG_WERROR. Ko je koda ustvarjena v Rustu, so vključeni dodatni diagnostični načini prevajalnika in opozorila Clippy linter.

Predlagali so abstrakcije za uporabo seqlocks (zaklepanje zaporedja), povratni klici za upravljanje porabe, pomnilniški V/I (readX/writeX), prekinitve in obdelave niti, GPIO, dostop do naprav, gonilniki in poverilnice v kodi rust.

Orodja za razvoj gonilnikov so bila razširjena z uporabo premestiljivih muteksov, bitnih iteratorjev, poenostavljenih povezav čez kazalce, izboljšane diagnostike napak in neodvisne infrastrukture podatkovnega vodila.

Delo s povezavami je bilo izboljšano z uporabo tipa Ref poenostavljeno, ki temelji na zaledju refcount_t, ki za štetje referenc uporablja osrednji API z istim imenom. Podpora za vrste Arc in Rc, ki sta na voljo v standardni knjižnici za preslikavo, je bila odstranjena in ni na voljo v kodi, ki se izvaja na ravni jedra (za samo knjižnico so bile pripravljene možnosti za onemogočanje teh tipov).

Popravkom je bila dodana različica gonilnika PL061 GPIO, prepisana v Rust. Značilnost gonilnika je, da njegova skoraj vrstica izvedba ponavlja obstoječi gonilnik C GPIO. Za razvijalce, ki se želijo seznaniti z gradbenimi krmilniki v Rustu, je pripravljena primerjava po vrsticah, ki omogoča vpogled v to, katere nadgradnje v Rustu je postala C koda.

Rustova glavna kodna baza sprejema rustc_codegen_gcc, rustc backend za GCC, ki izvaja prevajanje AOT z uporabo knjižnice libgccjit. S pravilnim razvojem ozadja vam bo omogočil zbiranje kode Rust, ki je vključena v jedro z uporabo GCC.
Red Hat je poleg ARM-a, Googla in Microsofta izrazil zanimanje za uporabo Rusta v jedru Linuxa.

Končno, če vas zanima več o tem, si lahko ogledate podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.