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