A zecea versiune de patch-uri pentru nucleul Linux cu suport pentru limbajul Rust

Miguel Ojeda, autorul proiectului Rust-for-Linux, a propus lansarea componentelor v10 pentru dezvoltarea driverelor de dispozitiv în limbajul Rust pentru a fi luate în considerare de către dezvoltatorii de kernel Linux. Aceasta este a unsprezecea ediție a patch-urilor, ținând cont de prima versiune, publicată fără un număr de versiune. Includerea suportului Rust a fost aprobată de Linusum Torvalds pentru includerea în nucleul Linux 6.1, cu excepția problemelor neprevăzute. Dezvoltarea este finanțată de Google și de ISRG (Internet Security Research Group), care este fondatorul proiectului Let's Encrypt și promovează HTTPS și dezvoltarea tehnologiilor pentru îmbunătățirea securității pe Internet.

La fel ca versiunea anterioară a patch-urilor, versiunea v10 este redusă la minimum, suficient pentru a construi un modul simplu de nucleu scris în limbajul Rust. Diferențele față de versiunea anterioară se reduc la modificări minore, înlocuirea sizeof cu ARRAY_SIZE în kallsyms.c și adaptarea patch-urilor la nucleul v6.0-rc7. Este de așteptat ca patch-ul minim, a cărui dimensiune a fost redusă de la 40 la 13 mii de linii de cod, să simplifice adoptarea suportului Rust în nucleul principal. După furnizarea unui suport minim, este planificată creșterea treptată a funcționalității existente, transferând alte modificări din ramura Rust-for-Linux.

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 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.

Sursa: opennet.ru

Adauga un comentariu