Mtundu watsopano wa zigamba za Linux kernel ndi chithandizo cha chilankhulo cha Rust

Miguel Ojeda, mlembi wa projekiti ya Rust-for-Linux, adakonza zotulutsa zida za v5 zopanga madalaivala a zida muchilankhulo cha Rust kuti aganizidwe ndi opanga ma Linux kernel. Ili ndi kope lachisanu ndi chimodzi la zigamba, potengera mtundu woyamba, wosindikizidwa wopanda nambala yamtunduwu. Thandizo la dzimbiri limaonedwa ngati loyesera, koma likuphatikizidwa kale mu linux-nthambi yotsatila ndipo limapangidwa mokwanira kuti liyambe kugwira ntchito popanga zigawo zowonongeka pamagulu a kernel, komanso kulemba madalaivala ndi ma modules. Ntchitoyi imathandizidwa ndi Google ndi ISRG (Internet Security Research Group), yomwe ndi amene anayambitsa pulojekiti ya Let's Encrypt ndipo imalimbikitsa HTTPS ndi chitukuko cha matekinoloje opititsa patsogolo chitetezo cha intaneti.

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.

Mawonekedwe atsopano a zigamba akupitiriza kuthetsa ndemanga zomwe zaperekedwa panthawi ya zokambirana za zoyamba, zachiwiri, zachitatu, zachinayi ndi zachisanu za zigamba. Mu mtundu watsopano:

  • Zidazi zasinthidwa kuti zitulutse Rust 1.59.0. Kusiyanasiyana kwa laibulale ya alloc kumalumikizidwanso ndi mtundu watsopano wa Rust, kuchotsa m'badwo womwe ungakhalepo wa "mantha" pakachitika zolakwika, monga osakumbukira. Kutha kugwiritsa ntchito zophatikizira zophatikizira ("chinthu(global_asm)") kwakhazikika.
  • Thandizo lowonjezera popanga mapulogalamu obwera ku Rust omwe amagwiritsidwa ntchito pakuphatikiza kernel.
  • M'malo mopereka mafayilo opangira pulatifomu omwe adapangidwa kale, amapangidwa mwamphamvu kutengera kasinthidwe ka kernel.
  • Onjezani HAVE_RUST kernel parameter kuti mutsegule zomanga zomwe zimathandizira Rust.
  • Zotsalira zimaperekedwa kuti zigwiritsidwe ntchito mu Rust code kwa hardware pseudo-random number generator.
  • Amalola kugwiritsa ntchito manambala olakwika popanda mawu akuti "Error::" prefix (mwachitsanzo, "return Err(EINVAL))") kuyerekeza momwe ma code olakwika agwiritsidwira ntchito mu C.
  • Wowonjezera "CSring" mtundu wa C-zingwe. Mitundu ya Formatter ndi Buffer yaphatikizidwa.
  • Mitundu yowonjezeredwa ya Bool ndi LockInfo.
  • Kukhazikitsa ma spin Lock kwakhala kosavuta.

Source: opennet.ru

Kuwonjezera ndemanga