Miguel Ojeda, autorul proiectului Rust-for-Linux, a propus spre examinare dezvoltatorilor kernel-ului Linux lansarea versiunii v10 de componente pentru dezvoltarea driverelor de dispozitive în limbajul Rust. Aceasta este a unsprezecea ediție a patch-urilor care ține cont de prima variantă, publicată fără număr de versiune. Inclusiv suportul pentru Rust a fost aprobat de Linus Torvalds pentru a fi inclus în kernel-ul Linux 6.1, dacă nu vor apărea probleme neprevăzute. Dezvoltarea este finanțată de Google și de organizația ISRG (Internet Security Research Group), care este fondatorul proiectului Let’s Encrypt și sprijină promovarea HTTPS și dezvoltarea tehnologiilor pentru creșterea securității internetului.
Ca și în versiunea anterioară a patch-urilor, lansarea v10 este restrânsă la strictul necesar, suficient pentru compilarea unui modul simplu de kernel, scris în limbajul Rust. Diferențele față de versiunea anterioară se limitează la mici corecturi, înlocuirea sizeof cu ARRAY_SIZE în kallsyms.c și adaptarea patch-urilor la kernel-ul v6.0-rc7. Se estimează că patch-ul minim, al cărui dimensiune a fost redusă de la 40.000 la 13.000 de linii de cod, va simplifica acceptarea suportului Rust în structura principală a kernel-ului. După asigurarea suportului minim, se preconizează creșterea treptată a funcționalității existente, transferând și alte modificări din ramura Rust-for-Linux.
Modificările propuse permit utilizarea Rust ca a doua limbă pentru dezvoltarea driverelor și modulelor de nucleu. Suportul pentru Rust este prezentat ca o opțiune, neactivată în mod implicit și care nu conduce la includerea Rust în lista dependențelor de construire obligatorii ale nucleului. Utilizarea Rust pentru dezvoltarea driverelor va permite crearea, cu eforturi minime, de drivere sigure și de calitate superioară, fără probleme precum accesarea memoriei după eliberare, dereferirea pointerilor nuli și depășirea limitelor bufferului.
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.
Sursa: opennet.ro
