Uhlelo lwesihlanu lwamapheshi we-Linux kernel ngokusekelwa kolimi lwe-Rust

U-Miguel Ojeda, umbhali wephrojekthi ye-Rust-for-Linux, wenze isiphakamiso senguqulo yesihlanu yezingxenye zokuthuthukisa izishayeli zedivayisi ngolimi lwe-Rust ukuze zicatshangelwe abathuthukisi be-Linux kernel. Ukusekelwa kokugqwala kubhekwa njengokuhlola, kodwa sekuvele kufakiwe egatsheni elilandelayo le-linux futhi kuthuthukiswe ngokwanele ukuze kuqalwe umsebenzi wokwenza izendlalelo zokukhipha phezu kwamasistimu angaphansi kwe-kernel, kanye nokubhala abashayeli namamojula. 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 kokuhlelwa kokuqala, kwesibili, kwesithathu nokwesine kwama-patches. Enguqulweni entsha:

  • Ukuhlolwa kwengxenye yosekelo lwe-Rust yengezwe kusistimu yokuhlanganisa eqhubekayo ngokusekelwe ku-Intel esekelwa yi-Intel 0DAY/LKP bot futhi ukushicilelwa kwemibiko yokuhlola sekuqalile. Silungiselela ukuhlanganisa ukwesekwa kwe-Rust ohlelweni lokuhlola oluzenzakalelayo lwe-KernelCI. Ukuhlola okusekelwe ku-GitHub CI kudluliselwe ekusetshenzisweni kweziqukathi.
  • Amamojula we-Rust kernel akhululiwe esidingweni sokuchaza izibaluli zekhreyithi “#![no_std]” kanye “#![isici(…)]”.
  • Usekelo olungeziwe lwezinjongo zomhlangano owodwa (.o, .s, .ll kanye .i).
  • Imihlahlandlela yekhodi ichaza imithetho yokuhlukanisa amazwana (“//”) kanye nekhodi yokubhala (“///”).
  • Is_rust_module.sh iskripthi senziwe kabusha.
  • Kungezwe usekelo lweziqalo zokuvumelanisa ezimile (okwabelwana ngazo emhlabeni wonke) ngokusekelwe ekusebenziseni okuthi "CONFIG_CONSTRUCTORS".
  • Ukuphathwa kokukhiya kwenziwa lula: I-Guard ne-GuardMut ihlanganisiwe kanye nohlobo olulodwa olunepharamitha.
  • Kungenzeka ukuchaza imingcele eyengeziwe lapho ubhalisa amadivaysi.
  • Kwengezwe amazwibela okuthi "RwSemaphore", okusebenza njengesisonga phezu kwesakhiwo esingu-rw_semaphore C.
  • Ukuze usebenzise i-mmap, imojuli entsha ye-mm kanye ne-VMA abstraction yengeziwe (isonga phezu kwesakhiwo se-vm_area_struct).
  • Umshayeli we-GPIO PL061 ushintshelwe ekusebenziseni i-"dev_*!" macro.
  • Ukuhlanzwa okujwayelekile kwekhodi kwenziwa.

Source: opennet.ru

Engeza amazwana