Siconda 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 versione aghjurnata di cumpunenti per u sviluppu di drivers di u dispositivu in a lingua Rust per cunsiderà 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. A nova versione elimina i cumenti fatti durante a discussione di a prima versione di i patches. Linus Torvalds hà digià unitu à a discussione è hà prupostu di cambià a logica per processà alcune operazioni di bit.

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.

I cambiamenti più notevuli in a nova versione di i patch:

  • U codice di assignazione di memoria hè liberatu da pudè generà un statu di "panicu" quandu l'errore cum'è fora di memoria si trovanu. Hè inclusa una variante di a libreria Rust alloc, chì rielabora u codice per trattà i fallimenti, ma l'ultimu scopu hè di trasfirià tutte e funzioni necessarie per u kernel à l'edizione principale di alloc (i cambiamenti sò digià stati preparati è trasferiti à u standard). biblioteca Rust).
  • Invece di e custruzzioni di notte, pudete avà aduprà versioni beta è versioni stabili di u compilatore rustc per compilà un kernel cù supportu Rust. Attualmente, rustc 1.54-beta1 hè utilizatu cum'è compilatore di riferimentu, ma dopu chì a versione 1.54 hè liberata à a fine di u mese, serà supportatu cum'è compilatore di riferimentu.
  • Aghjunghje supportu per scrive testi cù l'attributu standard "#[test]" per Rust è a capacità di utilizà doctests per documentà e teste.
  • Supportu aghjuntu per l'architetture ARM32 è RISCV in più di x86_64 è ARM64 supportati prima.
  • Implementazioni migliorate di GCC Rust (GCC frontend per Rust) è rustc_codegen_gcc (rustc backend per GCC), chì avà passa tutti i testi basi.
  • Un novu livellu di astrazione hè prupostu per l'usu in i prugrammi Rust di i meccanismi di u kernel scritti in C, cum'è l'arburi rossi-neri, l'uggetti cuntati di riferimentu, a creazione di descriptori di file, i compiti, i schedari è i vettori I / O.
  • I cumpunenti di sviluppu di u driver anu migliuratu u supportu per u modulu file_operations, u modulu! macro, macro registration, è i driver rudimentali (sonda è sguassate).
  • Binder supporta avà i descrittori di fugliale di passaghju è i ganci LSM.
  • Un esempiu più funziunale di un driver Rust hè prupostu - bcm2835-rng per u generatore di numeri aleatorii di hardware di schede Raspberry Pi.

Inoltre, alcuni prughjetti di l'imprese in relazione à l'usu di Rust in u kernel sò citati:

  • Microsoft hà manifestatu interessu à participà à u travagliu per integrà u supportu Rust in u kernel Linux è hè prontu à furnisce implementazioni di driver per Hyper-V in Rust in i prossimi mesi.
  • ARM travaglia per migliurà u supportu Rust per i sistemi basati in ARM. U prughjettu Rust hà digià prupostu cambiamenti chì facenu i sistemi ARM 64-bit una piattaforma Tier 1.
  • Google furnisce direttamente supportu per u prughjettu Rust per Linux, sviluppa una nova implementazione di u mecanismu di cumunicazione interprocessu Binder in Rust, è cunsidereghja a pussibilità di rilavà diversi drivers in Rust. Per mezu di ISRG (Internet Security Research Group), Google hà furnitu finanziamentu per u travagliu per integrà u supportu Rust in u kernel Linux.
  • IBM hà implementatu u supportu di kernel per Rust per i sistemi PowerPC.
  • U laboratoriu LSE (Laboratoriu di Ricerca Sistemi) hà sviluppatu un driver SPI in Rust.

Source: opennet.ru

Add a comment