Uhlelo lwesithathu lwama-patches we-Linux kernel ngokusekelwa kolimi lwe-Rust

U-Miguel Ojeda, umbhali wephrojekthi ye-Rust-for-Linux, wenze isiphakamiso sengxenye yesithathu yenketho yokuthuthukisa abashayeli bemishini ngolimi lwe-Rust ukuze abathuthukisi be-Linux kernel bacatshangelwe. Ukwesekwa kokugqwala kubhekwa njengokuhlola, kodwa sekuvunyelwene ngakho ukuze kufakwe egatsheni elilandelayo le-linux. Ukuthuthukiswa kuxhaswe i-Google kanye ne-ISRG (Internet Security Research Group), engumsunguli wephrojekthi ethi Let’s Encrypt futhi ethuthukisa i-HTTPS nokuthuthukiswa kobuchwepheshe ukuze kuthuthukiswe ukuvikeleka kwe-inthanethi.

Khumbula ukuthi izinguquko ezihlongozwayo zenza kube nokwenzeka ukusebenzisa i-Rust njengolimi lwesibili ekuthuthukiseni abashayeli namamojula we-kernel. Ukusekelwa kokugqwala kwethulwa njengenketho engenziwanga amandla ngokuzenzakalela futhi akubangeli ukuthi i-Rust ifakwe njengokuncika okudingekile ekwakheni kwe-kernel. Ukusebenzisa i-Rust ekuthuthukiseni abashayeli kuzokuvumela ukuthi udale abashayeli abaphephile nabangcono ngomzamo omncane, ongenazo izinkinga ezifana nokufinyelela inkumbulo ngemva kokukhulula, izinkomba ezingenalutho, kanye nokweqa kwe-buffer.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento kanye nesikhathi sokuphila kwento (ububanzi), kanye nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokukhishwa kwekhodi. I-Rust iphinde inikeze ukuvikeleka ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukile ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Inguqulo entsha yama-patches iyaqhubeka nokuqeda ukuphawula okwenziwe ngesikhathi sokuxoxisana kwezinguqulo zokuqala nezesibili zama-patches. Izinguquko eziphawuleka kakhulu:

  • Ushintsho lwenziwe ekusebenziseni ukukhishwa okuzinzile kwe-Rust 1.57 njengomdidiyeli wereferensi kanye nesixhumanisi sohlelo oluzinzile lolimi lwe-Rust 2021. Ngaphambilini, amapheshana ayeboshelwe egatsheni le-beta le-Rust futhi asebenzisa izici ezithile zolimi lezo. zichazwe njengezingazinzile. Ukushintshela ekucacisweni kwe-Rust 2021 kusivumele ukuthi siqale umsebenzi ukuze sigweme ukusetshenziswa kwezici ezingazinzile kumapeshi afana ne-const_fn_transmute, const_panic, const_unavailable_unchecked kanye ne-core_panic kanye ne-try_reserve.
  • Ukuthuthukiswa kwenguqulo ye-alloc yomtapo wezincwadi we-Rust ofakwe kuma-patches kuqhubekile, kushintshiwe ukuze kukhishwe imisebenzi yokwabiwa kwenkumbulo okungenzeka kube ukukhiqizwa kwesimo "sokwethuka" lapho kwenzeka amaphutha, njengokuphuma enkumbulo. Inguqulo entsha isebenzisa izinketho ze-“no_rc” kanye “no_sync” ukukhubaza ukusebenza okungasetshenzisiwe kukhodi ye-kernel Rust, okwenza umtapo wezincwadi ube yimodyuli kakhudlwana. Umsebenzi uyaqhubeka nabathuthukisi be-alloc abakhulu, okuhloswe ngayo ukudlulisa izinguquko ezidingekayo ku-kernel kumtapo wolwazi omkhulu. Inketho ethi “no_fp_fmt_parse”, edingekayo ukuze umtapo wolwazi usebenze ezingeni le-kernel, ihanjiswe kumtapo wolwazi we-Rust base (core).
  • Ikhodi ihlanziwe ukuze kukhishwe izexwayiso zomqambi uma wakha i-kernel ngemodi ye-CONFIG_WERROR. Uma kwakhiwa ikhodi ku-Rust, izindlela zokuxilonga ze-compiler ezengeziwe kanye nezexwayiso ze-Clippy linter zinikwe amandla.
  • Ukukhishwa kuhlongozwa ukuthi kusetshenziswe kukhodi yokugqwala yama-seqlocks (izingidi zokulandelana), izingcingo zokushayela emuva zokuphathwa kwamandla, i-I/O Memory (readX/writeX), izibambi zokuphazamisa kanye nentambo, i-GPIO, ukufinyelela kumadivayisi, abashayeli kanye nemininingwane.
  • Amathuluzi okuthuthukiswa kwabashayeli anwetshiwe ukuze afake ama-mutexes ashintshekayo, ama-bit iterator, ukubophezela kwezikhombi okwenziwe lula, ukuhlonza amaphutha okuthuthukisiwe, nengqalasizinda ezimele yedatha.
  • Umsebenzi othuthukisiwe onezixhumanisi kusetshenziswa uhlobo lweRef olwenziwe lula, olususelwe ku-refcount_t backend, esebenzisa i-kernel API yegama elifanayo ekubaleni izithenjwa. Ukusekelwa kwezinhlobo ze-Arc ne-Rc ezinikezwe kumtapo wolwazi we-alloc ojwayelekile kususiwe futhi akutholakali kukhodi ekhiqizwe ezingeni le-kernel (izinketho zilungiselelwe umtapo wolwazi uqobo okhubaza lezi zinhlobo).
  • Ama-patches afaka inguqulo yomshayeli we-PL061 GPIO, ebhalwe kabusha ku-Rust. Isici esikhethekile somshayeli ukuthi ukuqaliswa kwayo cishe umugqa ngomugqa kuphinda umshayeli okhona we-GPIO ngolimi lwe-C. Konjiniyela abafuna ukujwayelana nokudala abashayeli ku-Rust, ukuqhathanisa komugqa nomugqa kulungiselelwe okubavumela ukuthi baqonde ukuthi yikuphi ukwakhiwa kwe-Rust ikhodi C eguqulelwa kukho.
  • I-Rust codebase eyinhloko yamukele i-rustc_codegen_gcc, i-rustc backend ye-GCC esebenzisa ukuhlanganiswa kwangaphambili kwesikhathi (AOT) isebenzisa umtapo wezincwadi we-libgccjit. Ngokuthuthuka okufanele kwe-backend, kuzokuvumela ukuthi uqoqe ikhodi ye-Rust ehilelekile ku-kernel usebenzisa i-GCC.
  • Ngaphezu kwe-ARM, i-Google ne-Microsoft, i-Red Hat izwakalise intshisekelo yokusebenzisa ulimi lwe-Rust ku-Linux kernel. Masikhumbule ukuthi i-Google ihlinzeka ngokuqondile ngokusekela iphrojekthi ye-Rust for Linux, ithuthukisa ukuqaliswa okusha kwendlela yokuxhumana ye-Binder interprocess e-Rust, futhi icabangela ukuthi kungenzeka kusebenze kabusha abashayeli abahlukahlukene e-Rust. IMicrosoft isiqalile ukusebenzisa izishayeli zeHyper-V in Rust. I-ARM isebenzela ukuthuthukisa ukwesekwa kwe-Rust kumasistimu asekelwe ku-ARM. I-IBM isebenzise ukwesekwa kwe-Rust ku-kernel yezinhlelo ze-PowerPC.

Source: opennet.ru

Engeza amazwana