Kusindikiza kwachisanu kwa zigamba za Linux kernel mothandizidwa ndi chilankhulo cha Rust

Miguel Ojeda, mlembi wa projekiti ya Rust-for-Linux, adapereka gawo lachisanu la zida zopangira madalaivala a zida muchilankhulo cha Rust kuti aganizidwe ndi opanga ma Linux kernel. 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 yokambirana zoyamba, zachiwiri, zachitatu ndi zachinayi za zigamba. Mu mtundu watsopano:

  • Kuyesa kwazinthu zothandizira Rust kwawonjezeredwa ku dongosolo lophatikizira mosalekeza kutengera Intel-supported 0DAY/LKP bot ndipo kufalitsa malipoti oyesa kwayamba. Tikukonzekera kuphatikiza chithandizo cha Rust mu makina oyesera a KernelCI. Kuyesedwa kotengera GitHub CI kwasamutsidwa kuti mugwiritse ntchito zotengera.
  • Ma module a dzimbiri la kernel amamasulidwa pakufunika kufotokozera ma crate "#![no_std]" ndi "#![chinthu(…)]".
  • Thandizo lowonjezera pazolinga za msonkhano umodzi (.o, .s, .ll ndi .i).
  • Maupangiri a ma code amatanthauzira malamulo olekanitsa ndemanga (β€œ//”) ndi ma code code (β€œ///”).
  • Zolemba za is_rust_module.sh zakonzedwanso.
  • Thandizo lowonjezera la zoyambira zolumikizirana (zosinthika padziko lonse lapansi) kutengera kukhazikitsa kwa "CONFIG_CONSTRUCTORS".
  • Kasamalidwe ka loko ndi kosavuta: Guard ndi GuardMut aphatikizidwa ndi mtundu umodzi wokhazikika.
  • Ndizotheka kufotokozera magawo owonjezera polembetsa zida.
  • Anawonjezera "RwSemaphore" abstraction, yomwe imakhala ngati chomangira pa rw_semaphore C kapangidwe.
  • Kuti mugwiritse ntchito mmap, gawo latsopano la mm ndi mawu a VMA awonjezedwa (chopukutira pamwamba pa vm_area_struct structure).
  • Dalaivala wa GPIO PL061 wasinthidwa kugwiritsa ntchito "dev_*!" macro.
  • Kuyeretsa kodekha kwa malamulowo kunachitika.

Source: opennet.ru

Kuwonjezera ndemanga