Toleo la tano la viraka kwa kinu cha Linux kwa kutumia lugha ya Rust

Miguel Ojeda, mwandishi wa mradi wa Rust-for-Linux, amependekeza toleo la tano la vipengele vya kutengeneza viendesha kifaa katika lugha ya Rust ili kuzingatiwa na watengenezaji wa Linux kernel. Usaidizi wa kutu unachukuliwa kuwa wa majaribio, lakini tayari umejumuishwa katika tawi linalofuata la linux na umeendelezwa vya kutosha ili kuanza kazi ya kuunda tabaka za uondoaji juu ya mifumo ndogo ya kernel, pamoja na kuandika viendeshaji na moduli. Maendeleo hayo yanafadhiliwa na Google na ISRG (Kikundi cha Utafiti wa Usalama Mtandaoni), ambao ndio waanzilishi wa mradi wa Let’s Encrypt na kukuza HTTPS na uundaji wa teknolojia ili kuboresha usalama wa Mtandao.

Kumbuka kwamba mabadiliko yaliyopendekezwa hufanya iwezekane kutumia Rust kama lugha ya pili kwa kukuza viendeshaji na moduli za kernel. Usaidizi wa kutu unawasilishwa kama chaguo ambalo halijawezeshwa kwa chaguo-msingi na halisababishi Rust kujumuishwa kama tegemeo la ujenzi linalohitajika kwa kernel. Kutumia Rust kwa ukuzaji wa viendeshaji kutakuruhusu kuunda viendeshaji salama na bora zaidi kwa juhudi kidogo, bila matatizo kama vile ufikiaji wa kumbukumbu baada ya kukomboa, vielekezo visivyofaa vya vielekezi, na ziada ya bafa.

Utunzaji wa kumbukumbu-salama hutolewa katika Rust wakati wa kukusanya kupitia ukaguzi wa kumbukumbu, kufuatilia umiliki wa kitu na maisha ya kitu (wigo), na pia kupitia tathmini ya usahihi wa ufikiaji wa kumbukumbu wakati wa utekelezaji wa nambari. Kutu pia hutoa ulinzi dhidi ya mafuriko kamili, inahitaji uanzishaji wa lazima wa maadili tofauti kabla ya matumizi, hushughulikia makosa vyema katika maktaba ya kawaida, hutumia dhana ya marejeleo yasiyobadilika na vigeu kwa chaguo-msingi, hutoa uchapaji thabiti wa tuli ili kupunguza makosa ya kimantiki.

Toleo jipya la patches linaendelea kuondokana na maoni yaliyotolewa wakati wa majadiliano ya matoleo ya kwanza, ya pili, ya tatu na ya nne ya patches. Katika toleo jipya:

  • Majaribio ya vipengele kwa ajili ya usaidizi wa Rust yameongezwa kwa mfumo endelevu wa ujumuishaji kulingana na bot ya 0DAY/LKP inayotumika na Intel na uchapishaji wa ripoti za majaribio umeanza. Tunajitayarisha kujumuisha usaidizi wa Rust kwenye mfumo wa majaribio wa kiotomatiki wa KernelCI. Jaribio kulingana na GitHub CI limehamishiwa kwa matumizi ya vyombo.
  • Moduli za kernel ya kutu zimeachiliwa kutoka kwa hitaji la kufafanua sifa za kreti "#![no_std]" na "#![kipengele(…)]".
  • Usaidizi ulioongezwa kwa malengo ya mkusanyiko mmoja (.o, .s, .ll na .i).
  • Miongozo ya msimbo hufafanua sheria za kutenganisha maoni (β€œ//”) na msimbo wa kuhifadhi (β€œ///”).
  • Hati ya is_rust_module.sh imefanyiwa kazi upya.
  • Imeongeza usaidizi wa malighafi za ulandanishi tuli (utofauti wa pamoja wa kimataifa) kulingana na utekelezaji wa "CONFIG_CONSTRUCTORS".
  • Udhibiti wa kufuli umerahisishwa: Guard na GuardMut zimeunganishwa na aina moja iliyoainishwa.
  • Inawezekana kufafanua vigezo vya ziada wakati wa kusajili vifaa.
  • Imeongeza muhtasari wa "RwSemaphore", ambao hufanya kazi kama kanga juu ya muundo wa rw_semaphore C.
  • Ili kutumia mmap, moduli mpya ya mm na kifupisho cha VMA vimeongezwa (kibandiko juu ya muundo wa vm_area_struct).
  • Kiendeshaji cha GPIO PL061 kimegeuzwa kutumia makro ya "dev_*!".
  • Usafishaji wa jumla wa kanuni ulifanyika.

Chanzo: opennet.ru

Kuongeza maoni