Piektais ielāpu izdevums Linux kodolam ar Rust valodas atbalstu

Migels Ojeda, projekta Rust-for-Linux autors, Linux kodola izstrādātājiem ir ierosinājis piekto komponentu versiju ierīču draiveru izstrādei Rust valodā. Rust atbalsts tiek uzskatīts par eksperimentālu, bet jau ir iekļauts linux-next filiālē un ir pietiekami attīstīts, lai sāktu darbu pie abstrakcijas slāņu izveides virs kodola apakšsistēmām, 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 likvidēt komentārus, kas izteikti, apspriežot pirmo, otro, trešo un ceturto ielāpu izdevumu. Jaunajā versijā:

  • Komponentu testēšana Rust atbalstam ir pievienota nepārtrauktās integrācijas sistēmai, kuras pamatā ir Intel atbalstītais 0DAY/LKP robots, un ir sākta testēšanas atskaišu publicēšana. Mēs gatavojamies integrēt Rust atbalstu KernelCI automatizētajā testēšanas sistēmā. Testēšana, kuras pamatā ir GitHub CI, ir pārcelta uz konteineru izmantošanu.
  • Rust kodola moduļi ir atbrīvoti no nepieciešamības definēt kastes atribūtus “#![no_std]” un “#![feature(…)]”.
  • Pievienots atbalsts atsevišķiem montāžas mērķiem (.o, .s, .ll un .i).
  • Koda vadlīnijas nosaka noteikumus komentāru (“//”) un dokumentēšanas koda (“///”) atdalīšanai.
  • Skripts is_rust_module.sh ir pārstrādāts.
  • Pievienots atbalsts statiskām (globāli koplietotā mainīgā) sinhronizācijas primitīviem, pamatojoties uz "CONFIG_CONSTRUCTORS" ieviešanu.
  • Slēdzeņu pārvaldība ir vienkāršota: Guard un GuardMut ir apvienoti un viens parametrizēts tips.
  • Reģistrējot ierīces, ir iespējams definēt papildu parametrus.
  • Pievienota "RwSemaphore" abstrakcija, kas darbojas kā rw_semaphore C struktūras iesaiņojums.
  • Lai izmantotu mmap, ir pievienots jauns mm modulis un VMA abstrakcija (aptinums virs struktūras vm_area_struct).
  • GPIO PL061 draiveris ir pārslēgts uz makro “dev_*!” izmantošanu.
  • Tika veikta vispārēja koda tīrīšana.

Avots: opennet.ru

Pievieno komentāru