Rugina nu a fost scutită de criticile lui Linus Torvalds

Cateva saptamani in urma vestea despre câteva implementări care au fost făcute în ramura linux-next, care include un set inițial de componente pentru a dezvolta drivere de dispozitiv în limba Rust.

Această documentație a fost publicată separat cu privire la utilizarea Rust în nucleul Linux și un exemplu de modul de nucleu cu un driver de dispozitiv de caractere în limbajul Rust. Codul a fost adăugat de Stephen Rothwell, administratorul filialei.

După aceea, Linus Torvalds a analizat implementarea patch-uri de posibilități pentru a seta driverele de limbaj Rust în nucleul Linux și a exprimat unele critici.

Cele mai mari plângeri au fost cauzate de potențialul de evadare „Eșecul în timpul rulării se panică” în situații greșite, de exemplu, într-o situație lipsită de memorie, când operațiunile de alocare dinamică a memoriei, inclusiv operațiile de nucleu, pot eșua.

torvalds a declarat că o astfel de concentrare asupra nucleului este fundamental inacceptabilă, Și dacă nu înțelegeți acest punct, puteți respinge complet orice cod care încearcă să utilizeze o astfel de abordare. Pe de altă parte, dezvoltatorul patch-ului a fost de acord cu problema și a considerat-o rezolvabilă.

O altă problemă a fost încercarea de a utiliza tipuri cu virgulă mobilă sau 128 de biți, care nu sunt valabile pentru medii precum nucleul Linux.

Este posibil să nu înțelegeți ramificațiile când se poate întâmpla, deci poate
este mai puțin o problemă decât cred că este, dar fundamental
Cred că dacă orice cartografiere Rust poate provoca panică, este pur și simplu
_ fundamental_ nu este acceptabil.

Eșecuri de mapare într-un controler sau cod non-core, și anume pentru
definiția, tot noul cod Rust, nu poate provoca niciodată
panica valabil. Același lucru este valabil și pentru «oh, în unele cazuri nu am încercat folosirea
Numere întregi pe 128 de biți sau virgulă mobilă '.

Deci, dacă compilatorul Rust provoacă alocări ascunse care nu pot fi
detectați și reveniți ca erori, atunci cred cu seriozitate că toate acestea
abordarea ar trebui să fie complet NAK'ed, iar infrastructura Rust,
fie la nivel de compilator, fie în ambalajele de nucleu, aveți nevoie de mai mult
lucru.

Aceasta s-a dovedit a fi o problemă mai gravă., din moment ce în acest moment Biblioteca centrală a lui Rust este indivizibilă și reprezintă o pată mare; nu există nicio modalitate de a solicita doar unele dintre caracteristici, evitând astfel utilizarea uneia sau altei funcționalități problematice.

Soluția la problemă poate necesita modificări la compilatorul de rugină și bibliotecă, deși echipa nu are încă o strategie cu privire la modul de implementare a modularității pentru bibliotecile de limbă.

În plus, Torvalds a subliniat că exemplul de controler furnizat este inutil și a sfătuit să atașați ca exemplu un driver care rezolvă una dintre problemele reale.

Înainte de această Google și-a anunțat participarea la o inițiativă de promovare a suportului Rust în nucleul Linux y a furnizat aspecte tehnice a fezabilității implementării Rust pentru a combate problemele care apar din erorile de lucru cu memoria.

Google crede că Rust este gata să se alăture C ca limbaj de dezvoltare Componentele nucleului Linux. Articolul oferă, de asemenea, exemple de utilizare a limbajului Rust pentru a dezvolta drivere de kernel, în contextul utilizării acestuia pe platforma Android (Rust este recunoscut ca un limbaj acceptat oficial pentru dezvoltarea Android).

Trebuie remarcat faptul că Google a pregătit un prototip inițial al unui controler scris în Rust pentru mecanismul de comunicare inter-proces al lui Binder, care va permite o performanță detaliată și o comparație de securitate a implementărilor Binder în C și Rust.

În forma sa actuală, lucrarea nu a fost încă finalizată, dar pentru aproape toate abstracțiile de bază ale funcționalității nucleului necesare pentru ca Binder să funcționeze, au fost pregătite straturi pentru a utiliza aceste abstracții în codul Rust.

În cele din urmă, dacă doriți să aflați mai multe despre aceasta, 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.

  1.   Miguel Rodriguez el a spus

    Toate criticile lor sunt valabile, având în vedere că Rust este un limbaj nou care funcționează cu o paradigmă diferită de cea a lui C, este de înțeles îngrijorarea cu privire la orice detaliu din biblioteci sau în compilatorul însuși unde, deși codul este valid, provoacă să se rupă și nucleul.cum este implementat și construit. De aceea, sugestiile cum ar fi posibilitatea de a modula biblioteca pentru a apela și păstra activ numai acele funcții necesare pentru program (sau în acest caz pentru orice controler) funcționează corect. Nici ceea ce solicitați nu este nerezonabil, că vă aduc un adevărat prototip de controler care face o treabă bine la o problemă curentă (sau cel puțin face aceeași treabă ca una existentă în nucleu și funcționează fără panică).

  2.   Sete el a spus

    Din când în când recitesc articole de Linux Adictos Dar îmi ia foarte puțin timp să disper când văd că, în ciuda conținutului foarte bun, rezultatul final este distrus cu ortografie oribilă.
    Ortografia și gramatica vor fi atât de dificile?
    O rusine!
    Înveselește-te!