Noua versiune a patch-urilor pentru kernelul Linux cu suport pentru limbajul Rust.

Miguel Ojeda, autorul proiectului Rust-for-Linux, a propus pentru examinare de către dezvoltatorii nucleului Linux lansarea versiunii v5 a componentelor pentru dezvoltarea de drivere de dispozitive în limbajul Rust. Aceasta este a șasea ediție a patch-urilor, luând în considerare prima variantă, publicată fără un număr de versiune. Suportul pentru Rust este considerat experimental, dar este deja inclus în ramura linux-next și este suficient de dezvoltat pentru a începe lucrul la crearea unor straturi de abstracție peste subsistemele nucleului, precum și pentru a scrie drivere și module. Dezvoltarea este finanțată de Google și de organizația ISRG (Internet Security Research Group), care este fondatoarea proiectului Let’s Encrypt și promovează utilizarea HTTPS și dezvoltarea tehnologiilor pentru îmbunătățirea securității internetului.

Reamintim că schimbările propuse permit utilizarea Rust ca a doua limbă pentru dezvoltarea driverelor și modulelor nucleului. Suportul pentru Rust este prezentat ca o opțiune, care nu este activată în mod implicit și nu duce la includerea Rust între dependențele obligatorii pentru compilarea nucleului. Utilizarea Rust pentru dezvoltarea driverelor va permite, cu eforturi minime, crearea de drivere sigure și de calitate superioară, lipsite de probleme precum accesarea memoriei după eliberare, dereferențierea pointerilor nuli și depășirea limitelor buffer-ului.

Funcționarea sigură a memoriei este asigurată în Rust în timpul compilării prin verificarea referințelor, urmărirea deținerii obiectelor și gestionarea duratei de viață a obiectelor (zona de vizibilitate), precum și prin evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, instrumente pentru protecția împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică conceptul de referințe și variabile imutabile (immutable) în mod implicit și oferă o tipizare statică puternică pentru a minimiza erorile logice.

În noua variantă a patch-urilor este continuată eliminarea observațiilor exprimate în procesul de discuție a primei, celei de-a doua, celei de-a treia, celei de-a patra și celei de-a cincea ediții a patch-urilor. În noua versiune:

  • Uneltele au fost actualizate la versiunea Rust 1.59.0. Cu noua versiune Rust a fost sincronizată și varianta bibliotecii alloc, scutită de posibile generări de stare „panic” în cazul unor erori, cum ar fi lipsa de memorie. A fost stabilizată posibilitatea utilizării inserțiilor de asamblare („feature(global_asm)”).
  • A fost adăugat suport pentru crearea de programe gazdă în limbajul Rust, utilizate în procesul de compilare a nucleului.
  • În locul furnizării de fișiere precreate cu specificația platformelor țintă, a fost asigurată generarea dinamică a acestora, pe baza configurației nucleului.
  • A fost adăugat parametrul nucleului HAVE_RUST, activat pentru arhitecturi pe care se suportă Rust.
  • Au fost propuse abstracții pentru utilizarea în codul în limbajul Rust al generatoarelor hardware de numere pseudo-random.
  • A fost permisă utilizarea codurilor de eroare fără prefixul „Error::” (de exemplu, „return Err(EINVAL)”) pentru a se apropia de gestionarea codurilor de eroare în C.
  • A fost adăugat tipul „CString” pentru propriile șiruri C. Tipurile Formatter și Buffer au fost unite.
  • Au fost adăugate tipajele Bool și LockInfo.
  • Implementarea blocărilor spin a fost simplificată.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster