A cincea ediție de patch-uri pentru nucleul Linux cu suport pentru limbajul Rust

Miguel Ojeda, autorul proiectului Rust-for-Linux, a propus o a cincea versiune de componente pentru dezvoltarea driverelor de dispozitiv în limbajul Rust pentru a fi luată în considerare de către dezvoltatorii de kernel Linux. Suportul Rust este considerat experimental, dar este deja inclus în ramura linux-next și este suficient de dezvoltat pentru a începe lucrul la crearea de straturi de abstractizare peste subsistemele nucleului, precum și la scrierea de drivere și module. 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 îmbunătățirea securității pe Internet.

Amintiți-vă că modificările propuse fac posibilă utilizarea Rust ca a doua limbă pentru dezvoltarea driverelor și modulelor kernelului. 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.

Noua versiune a patch-urilor continuă să elimine comentariile făcute în timpul discuției despre prima, a doua, a treia și a patra ediție a patch-urilor. În noua versiune:

  • Testarea componentelor pentru suportul Rust a fost adăugată la sistemul de integrare continuă bazat pe botul 0DAY/LKP suportat de Intel și a început publicarea rapoartelor de testare. Ne pregătim să integrăm suportul Rust în sistemul de testare automatizat KernelCI. Testarea bazată pe GitHub CI a fost transferată la utilizarea containerelor.
  • Modulele nucleului Rust sunt eliberate de necesitatea definirii atributelor de cutie „#![no_std]” și „#![feature(…)]”.
  • S-a adăugat suport pentru ținte de asamblare unică (.o, .s, .ll și .i).
  • Orientările codului definesc reguli pentru separarea comentariilor (“//”) și documentarea codului (“///”).
  • Scriptul is_rust_module.sh a fost reproiectat.
  • S-a adăugat suport pentru primitivele de sincronizare statice (variabile partajate globale) bazate pe implementarea „CONFIG_CONSTRUCTORS”.
  • Gestionarea blocării este simplificată: Guard și GuardMut sunt combinate și un singur tip parametrizat.
  • Este posibil să definiți parametri suplimentari la înregistrarea dispozitivelor.
  • A fost adăugată abstracția „RwSemaphore”, care acționează ca un înveliș peste structura rw_semaphore C.
  • Pentru a utiliza mmap, au fost adăugate un nou modul mm și o abstractizare VMA (un wrapper peste structura vm_area_struct).
  • Driverul GPIO PL061 a fost trecut la utilizarea macrocomenzii „dev_*!”.
  • A fost efectuată o curățare generală a codului.

Sursa: opennet.ru

Adauga un comentariu