TreŔais 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 treÅ”o komponenta opciju ierīču draiveru izstrādei Rust valodā. 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ē. Izstrādi finansē Google un ISRG (Internet Security Research Group), kas ir Letā€™s Encrypt projekta 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 un otro ielāpu versiju. Visievērojamākās izmaiņas:

  • Ir veikta pāreja uz Rust 1.57 stabilās laidiena izmantoÅ”anu kā atsauces kompilatoru, un ir nodroÅ”ināta saite uz Rust 2021 valodas stabilizēto izdevumu. IepriekÅ” ielāpi bija saistÄ«ti ar Rust beta atzaru un izmantoja dažas valodas funkcijas, tika klasificēti kā nestabili. Pāreja uz Rust 2021 specifikāciju ļāva mums sākt darbu, lai izvairÄ«tos no tādu nestabilu lÄ«dzekļu izmantoÅ”anas ielāpos, piemēram, const_fn_transmute, const_panic, const_unavailable_unchecked un core_panic un try_reserve.
  • Turpinājās ielāpos iekļautās Rust bibliotēkas pieŔķirÅ”anas versijas izstrāde, kas ir modificēta, lai atbrÄ«votu atmiņas pieŔķirÅ”anas funkcijas no iespējamās ā€œpanikasā€ stāvokļa Ä£enerÄ“Å”anas, kad rodas kļūdas, piemēram, trÅ«kst atmiņas. Jaunajā versijā ir ieviestas opcijas ā€œno_rcā€ un ā€œno_syncā€, lai atspējotu funkcionalitāti, kas netiek izmantota kodola Rust kodā, padarot bibliotēku modulārāku. Turpinās darbs ar galvenajiem alloc izstrādātājiem, kuru mērÄ·is ir pārsÅ«tÄ«t kodolam nepiecieÅ”amās izmaiņas uz galveno bibliotēku. Opcija ā€œno_fp_fmt_parseā€, kas nepiecieÅ”ama, lai bibliotēka darbotos kodola lÄ«menÄ«, ir pārvietota uz Rust bāzes bibliotēku (kodols).
  • Kods ir notÄ«rÄ«ts, lai atbrÄ«votos no iespējamiem kompilatora brÄ«dinājumiem, veidojot kodolu režīmā CONFIG_WERROR. Veidojot kodu Rust, tiek iespējoti papildu kompilatora diagnostikas režīmi un Clippy lintera brÄ«dinājumi.
  • Abstrakcijas ir ierosinātas izmantot Rust kodā seqlocks (secÄ«bas bloÄ·Ä“Å”anai), atzvanÄ«Å”anas izsaukumiem enerÄ£ijas pārvaldÄ«bai, I/O atmiņai (readX/writeX), pārtraukumu un pavedienu apstrādātājiem, GPIO, piekļuvei ierÄ«cēm, draiveriem un akreditācijas datiem.
  • Draiveru izstrādes rÄ«ki ir paplaÅ”ināti, iekļaujot pārvietojamus muteksus, bitu iteratorus, vienkārÅ”otu rādÄ«tāju saistÄ«Å”anu, uzlabotu kļūdu diagnostiku un datu kopnes neatkarÄ«gu infrastruktÅ«ru.
  • Uzlabots darbs ar saitēm, izmantojot vienkārÅ”otu Ref veidu, kura pamatā ir refcount_t aizmugursistēma, kas atsauces skaitÄ«Å”anai izmanto tāda paÅ”a nosaukuma kodola API. Standarta alloc bibliotēkā nodroÅ”inātais Arc un Rc tipu atbalsts ir noņemts, un tas nav pieejams kodā, kas tiek izpildÄ«ts kodola lÄ«menÄ« (paÅ”ai bibliotēkai ir sagatavotas opcijas, kas atspējo Å”os tipus).
  • IelāpÄ« ir iekļauta PL061 GPIO draivera versija, kas pārrakstÄ«ta Rust valodā. Draivera Ä«patnÄ«ba ir tā, ka tā ievieÅ”ana gandrÄ«z rindiņā atkārto esoÅ”o GPIO draiveri C valodā. Izstrādātājiem, kuri vēlas iepazÄ«ties ar draiveru veidoÅ”anu Rustā, ir sagatavots salÄ«dzinājums pa rindiņām, kas ļauj saprast, kādās Rust konstrukcijās tiek pārveidots C kods.
  • Galvenā Rust kodu bāze ir pieņēmusi rustc_codegen_gcc ā€” GCC rustc aizmugursistēmu, kas ievieÅ” priekÅ”laicÄ«gas kompilācijas (AOT) kompilāciju, izmantojot bibliotēku libgccjit. Pareizi attÄ«stot aizmugursistēmu, tas ļaus jums savākt kodolā iesaistÄ«to Rust kodu, izmantojot GCC.
  • Papildus ARM, Google un Microsoft, Red Hat ir izrādÄ«jis interesi izmantot Rust valodu Linux kodolā. Atgādināsim, ka 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 draiverus Rustā. Microsoft ir sācis ieviest draiverus Hyper-V in Rust. ARM strādā, lai uzlabotu Rust atbalstu sistēmām, kuru pamatā ir ARM. IBM ir ieviesis kodola atbalstu Rust for PowerPC sistēmām.

Avots: opennet.ru

Pievieno komentāru