Quinta edizione di patches per u kernel Linux cù supportu per a lingua Rust

Miguel Ojeda, l'autore di u prughjettu Rust-for-Linux, hà prupostu una quinta versione di cumpunenti per u sviluppu di driver di u dispositivu in a lingua Rust per cunsiderà i sviluppatori di u kernel Linux. U supportu Rust hè cunsideratu sperimentale, ma hè digià inclusu in u ramu linux-next è hè abbastanza sviluppatu per inizià u travagliu nantu à a creazione di strati di astrazione nantu à i sottosistemi di kernel, è ancu di scrive drivers è moduli. U sviluppu hè finanzatu da Google è l'ISRG (Internet Security Research Group), chì hè u fundatore di u prughjettu Let's Encrypt è prumove HTTPS è u sviluppu di tecnulugia per migliurà a sicurità Internet.

Ricurdativi chì i cambiamenti pruposti permettenu di utilizà Rust cum'è una seconda lingua per u sviluppu di drivers è moduli di kernel. U supportu di Rust hè presentatu cum'è una opzione chì ùn hè micca attivata per automaticamente è ùn hà micca risultatu in l'inclusione di Rust trà e dipendenze di custruzzione necessarie per u kernel. Utilizà Rust per sviluppà i drivers vi permetterà di creà drivers più sicuri è megliu cù u minimu sforzu, senza prublemi cum'è l'accessu à una zona di memoria dopu chì hè liberatu, dereferencing null pointers, è buffer overruns.

A gestione sicura di a memoria hè furnita in Rust à u tempu di compilazione attraversu a verificazione di riferimentu, tenendu traccia di a pruprietà di l'ughjettu è a vita di l'ughjettu (scopu), è ancu per a valutazione di a correttezza di l'accessu di memoria durante l'esekzione di codice. Rust furnisce ancu prutezzione contra i overflows integer, esige l'inizializazione obligatoria di i valori variabili prima di l'usu, gestisce l'errori megliu in a biblioteca standard, applica u cuncettu di referenze immutabili è variabili per difettu, offre una forte tipografia statica per minimizzà l'errori lògichi.

A nova versione di i patches cuntinueghja à eliminà i cumenti fatti durante a discussione di a prima, seconda, terza è quarta edizione di i parche. In a nova versione:

  • A prova di cumpunenti per u supportu di Rust hè stata aghjunta à u sistema di integrazione cuntinuu basatu annantu à u bot 0DAY / LKP supportatu da Intel è a publicazione di rapporti di prova hè stata cuminciata. Avemu preparatu per integrà u supportu Rust in u sistema di teste automatizatu KernelCI. A prova basata nantu à GitHub CI hè stata trasferita à l'usu di cuntenituri.
  • I moduli di u kernel Rust sò liberati da a necessità di definisce l'attributi crate "#! [no_std]" è "#! [caratteristica (...)]".
  • Aghjunghje supportu per i miri di assemblea unicu (.o, .s, .ll è .i).
  • E linee guida di u codice definiscenu e regule per a separazione di i cumenti ("//") è u codice di documentazione ("///").
  • U script is_rust_module.sh hè statu ritruvatu.
  • Aggiuntu supportu per primitivi di sincronizazione statica (variabile cumuna globale) basatu annantu à l'implementazione "CONFIG_CONSTRUCTORS".
  • A gestione di serratura hè simplificata: Guard è GuardMut sò cumminati è un tipu parametrizzatu.
  • Hè pussibule definisce paràmetri supplementari quandu si registranu i dispositi.
  • Aggiunta l'astrazione "RwSemaphore", chì agisce cum'è un wrapper nantu à a struttura C rw_semaphore.
  • Per utilizà mmap, un novu modulu mm è una astrazione VMA sò stati aghjuntu (un wrapper sopra a struttura vm_area_struct).
  • U driver GPIO PL061 hè stata cambiata per utilizà a macro "dev_*!".
  • Una pulizia generale di u codice hè stata realizata.

Source: opennet.ru

Add a comment