A cincea ediție a patch-urilor pentru nucleul Linux cu suport pentru limbajul Rust.

Miguel Ojeda, autorul proiectului Rust-for-Linux, a propus pentru examinare de către dezvoltatorii nucleului Linux a cincea variantă a componentelor pentru dezvoltarea driverelor de dispozitive în limbajul Rust. 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 abstractizare pentru subsistemele nucleului, precum și pentru scrierea driverelor și modulelor. Dezvoltarea este finanțată de compania Google și de organizația ISRG (Internet Security Research Group), care este fondatoarea proiectului Let’s Encrypt și contribuie la promovarea 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 s-au continuat eliminarea observațiilor exprimate în timpul discuțiilor despre prima, a doua, a treia și a patra ediție a patch-urilor. În noua versiune:

  • În sistemul de integrare continuă bazat pe botul 0DAY/LKP susținut de Intel, a fost adăugată verificarea componentelor pentru suportul Rust și a început publicarea rapoartelor de testare. Se pregătește integrarea suportului Rust în sistemul de testare automatizată KernelCI. Testarea bazată pe GitHub CI a fost transformată pentru a folosi containere.
  • Modulele nucleului scrise în Rust au fost eliberate de necesitatea definirii atributelor crate-urilor „#![no_std]” și „#![feature(…)]”.
  • A fost adăugat suportul pentru obiective de compilare unitare (.o, .s, .ll și .i).
  • În recomandările pentru formatarea codului au fost definite reguli privind separarea comentariilor („//”) și documentarea codului („///”).
  • Scriptul is_rust_module.sh a fost refăcut.
  • A fost adăugat suport pentru variabile globale statice de primitivă de sincronizare, bazate pe implementarea „CONFIG_CONSTRUCTORS”.
  • Gestionarea blocajelor a fost simplificată: Guard și GuardMut au fost îmbinate într-un singur tip parametrizat.
  • A fost oferită posibilitatea de a defini parametri suplimentari la înregistrarea dispozitivelor.
  • A fost adăugată abstractizarea „RwSemaphore”, care acționează ca un înveliș deasupra structurii C rw_semaphore.
  • Pentru utilizarea mmap, a fost adăugat un nou modul mm și o abstractizare VMA (înveliș deasupra structurii vm_area_struct).
  • Driverul GPIO PL061 a fost transformat pentru a folosi macro-ul „dev_*!”.
  • A fost efectuată o curățare generală a codului.

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