Otrais ielāpu izdevums Linux kodolam ar Rust valodas atbalstu

Migels Ojeda, projekta Rust-for-Linux autors, ierosināja atjauninātu komponentu versiju ierīču draiveru izstrādei Rust valodā, lai to apsvērtu Linux kodola izstrādātāji. Rust atbalsts tiek uzskatīts par eksperimentālu, taču jau ir panākta vienošanās par iekļaušanu linux-next filiālē. Jaunajā versijā tiek novērsti komentāri, kas izteikti, apspriežot pirmo ielāpu versiju. Linuss Torvalds jau ir pievienojies diskusijai un ierosinājis mainīt dažu bitu operāciju apstrādes loģiku.

Atgādiniet, ka ierosinātās izmaiņas ļauj izmantot Rust kā otro valodu draiveru un kodola moduļu izstrādei. Rust atbalsts tiek parādīts kā opcija, kas nav iespējota pēc noklusējuma, un tā rezultātā Rust netiek iekļauta kā obligātā kodola veidošanas atkarība. Izmantojot Rust draiveru izstrādei, ar minimālu piepūli varēsit izveidot drošākus un labākus draiverus, bez problēmām, piemēram, piekļuvi atmiņai pēc atbrīvošanas, nulles rādītāja atsauču un bufera pārtēriņu.

Atmiņas drošība Rust tiek nodrošināta kompilēšanas laikā, pārbaudot atsauces, sekojot līdzi objekta īpašumtiesībām un objekta kalpošanas laikam (tvērumam), kā arī novērtējot atmiņas piekļuves pareizību koda izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma piemēro nemainīgu atsauču un mainīgo jēdzienu, piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Pamanāmākās izmaiņas ielāpu jaunajā versijā:

  • Atmiņas piešķiršanas kods tiek atbrīvots no potenciāli "panikas" stāvokļa ģenerēšanas, ja rodas kļūdas, piemēram, trūkst atmiņas. Iekļauts Rust alloc bibliotēkas variants, kas pārstrādā kodu, lai tiktu galā ar kļūmēm, taču galvenais mērķis ir pārnest visas kodolam nepieciešamās funkcijas uz alloc galveno izdevumu (izmaiņas jau ir sagatavotas un pārnestas uz standartu Rūsas bibliotēka).
  • Nakts versiju vietā tagad varat izmantot beta laidienus un stabilus rustc kompilatora laidienus, lai kompilētu kodolu ar Rust atbalstu. Pašlaik rustc 1.54-beta1 tiek izmantots kā atsauces kompilators, bet pēc 1.54 laidiena izlaišanas mēneša beigās tas tiks atbalstīts kā atsauces kompilators.
  • Pievienots atbalsts testu rakstīšanai, izmantojot Rust standarta atribūtu #[test], un iespēja izmantot doctests, lai dokumentētu testus.
  • Pievienots atbalsts ARM32 un RISCV arhitektūrām papildus iepriekš atbalstītajām x86_64 un ARM64.
  • Uzlabotas GCC Rust (GCC priekšgals Rust) un rustc_codegen_gcc (rustc aizmugursistēma GCC), kas tagad iztur visus pamata testus.
  • Jauns abstrakcijas līmenis ir piedāvāts izmantošanai Rust programmās kodola mehānismiem, kas rakstīti C valodā, piemēram, sarkani melni koki, atsauces objekti, failu deskriptora izveide, uzdevumi, faili un I/O vektori.
  • Draiveru izstrādes komponenti ir uzlabojuši atbalstu modulim file_operations, makro modulim, makro reģistrācijai un elementārajiem draiveriem (pārbaudīt un noņemt).
  • Binder tagad atbalsta failu deskriptoru un LSM āķu nodošanu.
  • Tiek piedāvāts funkcionālāks Rust draivera piemērs - bcm2835-rng Raspberry Pi dēļu aparatūras nejaušo skaitļu ģeneratoram.

Turklāt tiek minēti daži uzņēmumu projekti, kas saistīti ar Rust izmantošanu kodolā:

  • Microsoft ir paudusi interesi piedalīties darbā, lai integrētu Rust atbalstu Linux kodolā, un ir gatava tuvāko mēnešu laikā nodrošināt Hyper-V on Rust draiveru implementācijas.
  • ARM strādā, lai uzlabotu Rust atbalstu sistēmām, kuru pamatā ir ARM. Rust projekts jau ir ierosinājis izmaiņas, kas padarītu 64 bitu ARM sistēmas par 1. līmeņa platformu.
  • Google tieši sniedz atbalstu Rust for Linux projektam, izstrādā jaunu Binder starpprocesu komunikācijas mehānisma ieviešanu Rustā un apsver iespēju pārstrādāt dažādus Rust draiverus. Izmantojot ISRG (Internet Security Research Group), Google nodrošināja finansējumu darbam, lai integrētu Rust atbalstu Linux kodolā.
  • IBM ir ieviesis kodola atbalstu Rust for PowerPC sistēmām.
  • LSE (Systems Research Laboratory) laboratorija ir izstrādājusi SPI draiveri Rustā.

Avots: opennet.ru

Pievieno komentāru