Ceturtais ielāpu izdevums Linux kodolam ar Rust valodas atbalstu

Migels Ojeda, projekta Rust-for-Linux autors, ierosināja ceturto 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ē, un tas ir pietiekami nobriedis, lai sāktu darbu pie abstrakcijas slāņu izveides kodola apakšsistēmās, kā arī draiveru un moduļu rakstīšanas. Izstrādi finansē Google un ISRG (Internet Security Research Group), kas ir projekta Let's Encrypt dibinātājs un veicina HTTPS un tehnoloģiju izstrādi interneta drošības uzlabošanai.

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.

Jaunā ielāpu versija turpina novērst komentārus, kas izteikti, apspriežot pirmo, otro un trešo ielāpu izdevumu. Jaunajā versijā:

  • Ir veikta pāreja uz Rust 1.58.0 stabilās versijas izmantošanu kā atsauces kompilatoru. Starp projektam nepieciešamajām izmaiņām, kas vēl nav iekļautas galvenajā Rust rīkkopā, karodziņš “-Zsymbol-mangling-version=v0” (paredzams Rust 1.59.0) un režīms “maybe_uninit_extra” (paredzams Rust 1.60.0). .XNUMX) ir atzīmēti.
  • Pievienotas automātiskās pārbaudes piemērotu Rust rīku pieejamībai un paplašinātas iespējas pārbaudīt Rust atbalstu sistēmā.
  • Ir ierosinātas jaunas abstrakcijas, lai piekļūtu ierīču identifikatoru tabulām (“IdArray” un “IdTable”) no Rust koda.
  • Pievienoti slāņi, lai piekļūtu ar taimeri saistītām funkcijām (pulksteņa ietvars).
  • Platformas draiveri tagad tiek definēti, izmantojot iezīmju ieviešanu.
  • Ir pievienots jauns makro, lai vienkāršotu platformas draiveru reģistrāciju, un ir ierosināta jauna vispārīga draivera veidne.
  • Pievienoti makro "dev_*" struktūrām.
  • IoMem tipam pievienotas metodes “{lasīt, rakstīt}*_relaxed”. .
  • Noņemts FileOpener rekvizīts, lai vienkāršotu failu darbības.
  • Parametrs “ThisModule” ir pievienots argumentiem, kas nodoti, reģistrējot draiveri.
  • Tiek piedāvāta standarta veidne kodola moduļu izveidei Rust valodā.

Avots: opennet.ru

Pievieno komentāru