Sosește cea de-a opta versiune a patch-urilor pentru suportul driverului Rust pe Linux

Miguel Ojeda, autor al proiectului Rust-for-Linux a lansat a opta lansare de a dezvolta corecții pentru nucleul Linux cu suport pentru limbajul Rust pentru dezvoltatorii de kernel Linux să ia în considerare.

Aceasta este a noua versiune a patch-urilor (ținând cont de prima versiune lansată fără un număr de versiune). Suportul de rugină este considerat experimental, dar este deja inclus în ramura linux-next, revendică integrarea în versiunea de toamnă a 5.20/6.0 și este suficient de avansat pentru a începe să lucreze la crearea de straturi de abstractizare deasupra subsistemelor nucleului, precum și la scrierea controlerelor și modulelor.

Dezvoltarea este finanțată de Google și ISRG (Internet Security Research Group), care este fondatorul proiectului Let's Encrypt și promovează HTTPS și dezvoltarea tehnologiilor pentru creșterea securității pe Internet.

Modificările propuse fac posibilă utilizarea Rust ca a doua limbă pentru dezvoltarea de drivere și module de kernel. Suportul Rust este prezentat ca o opțiune care nu este activată implicit și nu are ca rezultat includerea Rust printre dependențele de compilare necesare pentru nucleu. Folosirea Rust pentru a dezvolta drivere vă va permite să creați drivere mai bune și mai sigure cu efort minim, fără probleme precum accesarea unei zone de memorie după eliberarea acesteia, dereferențiarea indicatorilor nuli și depășirile de buffer.

Siguranța memoriei este asigurată în Rust în momentul compilării prin verificarea referințelor, urmărirea proprietății obiectului și durata de viață a obiectului (sfera de aplicare), precum și prin evaluarea corectitudinii accesului la memorie în timpul execuției codului.

Ce este nou în această a opta lansare?

În această nouă propunere care a fost lansată, se menționează că varianta bibliotecii alloc, care a eliminat posibila generare a stării de „panică” asupra erorilor, actualizat la versiunea Rust 1.62. În comparație cu versiunea anterioară, trusa de instrumente Rust a stabilizat suportul pentru funcționalitatea const_fn_trait_bound utilizată în patch-urile kernelului.

Pe lângă ea codul de legături este separat într-un pachet de casete de „legații”. separat, ceea ce ușurează reconstruirea dacă numai pachetul principal al nucleului este schimbat.

The implementarea macrocomenzii „concat_idents!”, Rescris ca o macrocomandă procedurală, care nu este legată de funcționalitatea concat_idents și care permite utilizarea referințelor variabilelor locale.

În plus, se menționează că macro "static_assert!" a fost rescris pentru a permite „core::assert!()” este folosit în orice context în loc de constante, în timp ce macro-ul „construction_error!” a fost adaptat să funcționeze la setarea modului „RUST_BUILD_ASSERT_{WARN,ALLOW}” pentru module.

Modulul fs a fost adăugat care oferă legături pentru lucrul cu sistemele de fișiere. Este propus un exemplu de sistem de fișiere simplu scris în Rust, precum și modulul de coadă de joburi adăugat pentru a funcționa cu cozile de sistem.

Dintre celelalte schimbări care se remarcă din această nouă propunere:

  • S-a adăugat un fișier de configurare separat „kernel/configs/rust.config”.
  • Fișierele „*.i” procesate în substituțiile macro au fost redenumite „*.rsi”.
  • S-a eliminat suportul pentru construirea de componente Rust cu niveluri de optimizare altele decât cele utilizate pentru codul C.
  • Dezvoltarea modulului kasync a continuat cu implementarea metodelor de programare asincronă (async).
  • S-a adăugat un exemplu de server TCP la nivel de kernel scris în Rust și a adăugat capacitatea de a gestiona întreruperi în Rust.
  • A fost adăugată o macrocomandă de procedură pentru a facilita lucrul cu tabelele cu indicatori de funcții, cum ar fi structura file_operations.
  • S-a adăugat implementarea listei conectate bidirecționale „unsafe_list::List”.
  • S-a adăugat suport inițial pentru RCU și tipul Guard pentru a verifica dacă o blocare de citire este legată de firul curent.
  • S-a adăugat funcția Task::spawn() pentru a genera și a porni automat firele de nucleu.
  • A fost adăugată și metoda Task::wake_up().
  • S-a adăugat un modul de întârziere

În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.