Kusindikiza kwachiwiri kwa zigamba za Linux kernel ndi chithandizo cha chinenero cha Rust

Miguel Ojeda, wolemba pulojekiti ya Rust-for-Linux, adakonza zosinthidwa za zida zopangira madalaivala azipangizo muchilankhulo cha Rust kuti aganizidwe ndi opanga ma kernel a Linux. Thandizo la dzimbiri limawonedwa ngati loyesera, koma lavomerezedwa kale kuti liphatikizidwe mu nthambi yotsatila ya linux. Mtundu watsopanowu umachotsa ndemanga zomwe zidapangidwa pokambirana za mtundu woyamba wa zigamba. Linus Torvalds walowa nawo kale pazokambirana ndipo akufuna kusintha malingaliro kuti agwire ntchito zina.

Kumbukirani kuti zosintha zomwe zasinthidwa zimapangitsa kuti zitheke kugwiritsa ntchito Rust ngati chilankhulo chachiwiri popanga madalaivala ndi ma module a kernel. Thandizo la dzimbiri limaperekedwa ngati njira yomwe siyimathandizidwa mwachisawawa ndipo sizipangitsa kuti Dzimbiri liphatikizidwe ngati kudalira kofunikira kwa kernel. Kugwiritsa ntchito Rust pakukula kwa madalaivala kumakupatsani mwayi wopanga madalaivala otetezeka komanso abwinoko molimbika pang'ono, opanda mavuto monga kukumbukira kukumbukira mutatha kumasula, kuchotsedwa kwa null pointer, ndi buffer overruns.

Chitetezo cha Memory chimaperekedwa mu Rust panthawi yophatikiza kudzera pakuwunika, kuyang'anira umwini wa chinthu ndi nthawi ya moyo wa chinthu (kukula), komanso kuwunika kulondola kwa kukumbukira kukumbukira panthawi yopanga ma code. Dzimbiri limaperekanso chitetezo ku kusefukira kwazinthu zonse, kumafuna kukhazikitsidwa kovomerezeka kwa zinthu zosinthika musanagwiritse ntchito, kuwongolera zolakwika bwino mulaibulale yokhazikika, kumagwiritsa ntchito lingaliro la maumboni osasinthika ndi zosintha mwachisawawa, kumapereka zilembo zolimba kuti muchepetse zolakwika zomveka.

Zosintha zowoneka bwino kwambiri mu mtundu watsopano wa zigamba:

  • Khodi yogawa kukumbukira imamasulidwa kuti ipangitse "mantha" pamene zolakwika zonga kukumbukira zimachitika. Kusiyanasiyana kwa laibulale ya Rust alloc ikuphatikizidwa, yomwe imakonzanso kachidindo kuti ithetse zolephera, koma cholinga chachikulu ndikusamutsa zonse zomwe zimafunikira kernel kupita ku mtundu waukulu wa alloc (zosinthazo zakonzedwa kale ndikusamutsidwa ku muyezo. Dzimbiri library).
  • M'malo momanga usiku, mutha kugwiritsa ntchito kutulutsa kwa beta ndikutulutsa kokhazikika kwa compiler ya rustc kuti mupange kernel ndi Rust support. Pakadali pano, rustc 1.54-beta1 imagwiritsidwa ntchito ngati chojambulira, koma kutulutsidwa kwa 1.54 kumasulidwa kumapeto kwa mwezi, idzathandizidwa ngati cholembera.
  • Thandizo lowonjezera polemba mayeso pogwiritsa ntchito "#[test]" yodziwika bwino ya Rust komanso kuthekera kogwiritsa ntchito ma doctest polemba mayeso.
  • Zowonjezera zothandizira zomanga za ARM32 ndi RISCV kuwonjezera pa x86_64 ndi ARM64 zomwe zidathandizidwa kale.
  • Kupititsa patsogolo kwa GCC Rust (GCC frontend for Rust) ndi rustc_codegen_gcc (rustc backend for GCC), yomwe tsopano ikupambana mayesero onse oyambirira.
  • Mulingo watsopano wotsalira umaperekedwa kuti ugwiritsidwe ntchito m'mapulogalamu a Rust a makina a kernel olembedwa mu C, monga mitengo yakuda-yakuda, zinthu zowerengedwa, kupanga zofotokozera mafayilo, ntchito, mafayilo, ndi ma vector a I/O.
  • Zida zopangira madalaivala zathandizira bwino gawo la file_operations, module! macro, macroregistry, ndi madalaivala oyambira (fufuzani ndikuchotsa).
  • Binder tsopano imathandizira zofotokozera zamafayilo ndi zokoka za LSM.
  • Chitsanzo chogwira ntchito kwambiri cha dalaivala wa dzimbiri chikuperekedwa - bcm2835-rng ya jenereta ya manambala osasinthika a ma Raspberry Pi board.

Kuphatikiza apo, ma projekiti amakampani ena okhudzana ndi kugwiritsa ntchito dzimbiri mu kernel amatchulidwa:

  • Microsoft yawonetsa chidwi chotenga nawo gawo pantchito yophatikizira chithandizo cha Rust mu Linux kernel ndipo ili wokonzeka kupereka madalaivala a Hyper-V pa Rust m'miyezi ikubwerayi.
  • ARM ikuyesetsa kukonza chithandizo cha Rust pamakina opangidwa ndi ARM. Pulojekiti ya Rust yakonza kale zosintha zomwe zingapangitse machitidwe a 64-bit ARM kukhala nsanja ya Tier 1.
  • Google imapereka mwachindunji chithandizo cha projekiti ya Rust for Linux, ikupanga kukhazikitsa kwatsopano kwa Binder interprocess communication mechanism ku Rust, ndipo ikulingalira za kuthekera kokonzanso madalaivala osiyanasiyana ku Rust. Kudzera mu ISRG (Internet Security Research Group), Google idapereka ndalama zothandizira ntchito kuti aphatikize chithandizo cha Rust mu Linux kernel.
  • IBM yakhazikitsa chithandizo cha kernel cha Rust for PowerPC systems.
  • Laborator ya LSE (Systems Research Laboratory) yapanga dalaivala wa SPI ku Rust.

Source: opennet.ru

Kuwonjezera ndemanga