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

Miguel Ojeda, autore di u prughjettu Rust-for-Linux, hà prupostu una quarta versione di cumpunenti per u sviluppu di i drivers di u dispositivu in a lingua Rust per cunsiderà da i sviluppatori di u kernel Linux. U supportu di Rust hè cunsideratu sperimentale, ma hè digià statu accunsentutu per l'inclusione in u ramu linux-next è hè abbastanza maturu 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, a seconda è a terza edizione di i patch. In a nova versione:

  • A transizione per utilizà a liberazione stabile di Rust 1.58.0 cum'è u compilatore di riferimentu hè stata fatta. Trà i cambiamenti necessarii per u prugettu, chì ùn sò micca ancu inclusi in u toolkit principale di Rust, u flag "-Zsymbol-mangling-version=v0" (aspittatu in Rust 1.59.0) è u modu "maybe_uninit_extra" (aspittatu in Rust 1.60.0). .XNUMX) sò nutati.
  • Aghjunghjite cuntrolli automatichi per a dispunibilità di strumenti Rust adattati è espansione a capacità di pruvà u supportu Rust in u sistema.
  • Novi astrazioni sò stati pruposti per accede à e tabelle d'identificatore di u dispositivu ("IdArray" è "IdTable") da u codice Rust.
  • Strati aghjuntu per accede à e funzioni relative à u timer (quadru di u clock).
  • I piloti di piattaforma sò avà definiti attraversu implementazioni di caratteristiche.
  • Una nova macro hè stata aghjunta per simplificà a registrazione di i cunduttori di a piattaforma, è hè statu prupostu un novu mudellu di driver genericu.
  • Aghjunghje macros per strutture "dev_*".
  • Aghjunghjite i metudi "{read,write}*_relaxed" per u tipu IoMem .
  • Eliminatu a pruprietà FileOpener per simplificà l'operazioni di u schedariu.
  • U paràmetru "ThisModule" hè statu aghjuntu à l'argumenti passati quandu si registra un driver.
  • Un mudellu standard per creà moduli di kernel in a lingua Rust hè prupostu.

Source: opennet.ru

Add a comment