Patch-uri de kernel ediția a patra Linux cu suport pentru limbajul Rust

Miguel Ojeda, autorul proiectului Rust-for-Linux, propus spre luare în considerare de către dezvoltatorii de kernel Linux A patra versiune de componente pentru dezvoltarea de drivere de dispozitiv în Rust. Suportul pentru Rust este considerat experimental, dar a fost deja aprobat pentru includere în ramura linux-next și este suficient de matur pentru a începe lucrul la crearea de straturi de abstractizare peste subsistemele kernel, precum și la scrierea de drivere și module. Dezvoltarea este finanțată de Google și ISRG (Internet Security Research Group), fondatorul proiectului Let's Encrypt, care promovează HTTPS și dezvoltarea de tehnologii pentru îmbunătățirea securității internetului.

Amintiți-vă că modificările propuse fac posibilă utilizarea Rust ca a doua limbă pentru dezvoltarea driverelor și modulelor kernelului. Suportul Rust este prezentat ca o opțiune care nu este activată implicit și nu are ca rezultat includerea Rust ca dependență de construcție necesară pentru nucleu. Folosirea Rust pentru dezvoltarea driverelor vă va permite să creați drivere mai sigure și mai bune cu un efort minim, fără probleme precum accesul la memorie după eliberare, dereferențele pointerului nul și depășirile de buffer.

Siguranța memoriei este asigurată în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectului și a duratei de viață a obiectului (sfera de aplicare), precum și prin evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică implicit conceptul de referințe imuabile și variabile, oferă tastare statică puternică pentru a minimiza erorile logice.

Noua versiune a patch-urilor continuă să elimine comentariile făcute în timpul discuției despre prima, a doua și a treia ediție a patch-urilor. În noua versiune:

  • A fost făcută trecerea la utilizarea versiunii stabile a Rust 1.58.0 ca compilator de referință. Printre modificările necesare pentru proiect, care nu sunt încă incluse în setul principal de instrumente Rust, se numără steag-ul „-Zsymbol-mangling-version=v0” (așteptată în Rust 1.59.0) și modul „maybe_uninit_extra” (așteptată în Rust 1.60.0). .XNUMX) se notează.
  • S-au adăugat verificări automate pentru disponibilitatea instrumentelor Rust adecvate și s-a extins capacitatea de a testa suportul Rust în sistem.
  • Au fost propuse noi abstracții pentru accesarea tabelelor de identificare a dispozitivului („IdArray” și „IdTable”) din codul Rust.
  • Straturi adăugate pentru accesarea funcțiilor legate de cronometru (cadru de ceas).
  • Driverele platformei sunt acum definiți prin implementări de trăsături.
  • A fost adăugată o nouă macrocomandă pentru a simplifica înregistrarea driverelor de platformă și a fost propus un nou șablon de driver generic.
  • S-au adăugat macrocomenzi pentru structurile „dev_*”.
  • S-au adăugat metode „{read,write}*_relaxed” pentru tipul IoMem .
  • S-a eliminat proprietatea FileOpener pentru a simplifica operațiunile cu fișierele.
  • Parametrul „ThisModule” a fost adăugat la argumentele transmise la înregistrarea unui driver.
  • Este propus un șablon standard pentru crearea modulelor kernel în limbajul Rust.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster