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

Miguel Ojeda, mwandishi wa mradi wa Rust-for-Linux, amependekeza chaguo la kipengele cha tatu kwa ajili ya kuendeleza viendeshi vya kifaa katika lugha ya Rust kwa watengenezaji wa Linux kernel kuzingatia. Msaada wa kutu unachukuliwa kuwa wa majaribio, lakini tayari umekubaliwa kujumuishwa katika tawi linalofuata la linux. Maendeleo hayo yanafadhiliwa na Google na ISRG (Kikundi cha Utafiti wa Usalama wa Mtandao), 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 na ya pili ya patches. Mabadiliko yanayoonekana zaidi:

  • Mabadiliko yamefanywa ili kutumia toleo thabiti la Rust 1.57 kama kikusanya marejeleo na kiungo cha toleo lililoimarishwa la lugha ya Rust 2021. Hapo awali, viraka viliunganishwa kwenye tawi la beta la Rust na kutumia baadhi ya vipengele vya lugha ambavyo ziliainishwa kama zisizo thabiti. Mpito hadi ubainishi wa Rust 2021 ulituruhusu kuanzisha kazi ili kuepuka matumizi ya vipengele visivyo imara katika viraka kama vile const_fn_transmute, const_panic, const_unavailable_unchecked na core_panic na try_reserve.
  • Ukuzaji wa toleo la alloc la maktaba ya Rust iliyojumuishwa kwenye viraka imeendelea, kurekebishwa ili kuondoa kazi za ugawaji kumbukumbu za uwezekano wa kizazi cha hali ya "hofu" wakati makosa yanatokea, kama vile kutoka kwa kumbukumbu. Toleo jipya linatekelezea chaguo za "no_rc" na "no_sync" ili kuzima utendakazi usiotumika katika msimbo wa kernel Rust, na kufanya maktaba kuwa ya kawaida zaidi. Kazi inaendelea na watengenezaji wa alloc kuu, inayolenga kuhamisha mabadiliko yanayohitajika kwa kernel hadi maktaba kuu. Chaguo la "no_fp_fmt_parse", linalohitajika kwa maktaba kufanya kazi katika kiwango cha kernel, limehamishiwa kwenye maktaba ya msingi ya Rust (msingi).
  • Nambari imesafishwa ili kuondoa maonyo ya mkusanyaji wakati wa kuunda kernel katika hali ya CONFIG_WERROR. Wakati wa kujenga msimbo katika Rust, njia za ziada za uchunguzi wa mkusanyaji na maonyo ya linter ya Clippy huwezeshwa.
  • Vidokezo vinapendekezwa kutumika katika msimbo wa Kutu kwa kufuli (kufuli za mfuatano), simu za kupiga simu kwa udhibiti wa nishati, Kumbukumbu ya I/O (readX/writeX), vidhibiti vya kukatiza na uzi, GPIO, ufikiaji wa vifaa, viendeshaji na vitambulisho.
  • Zana za ukuzaji wa viendeshaji zimepanuliwa ili kujumuisha vibubu vinavyoweza kuhamishwa, viongeza sauti kidogo, vifungashio vya vielelezo vilivyorahisishwa, utambuzi wa hitilafu ulioboreshwa na miundombinu ya data inayotegemea basi.
  • Kazi iliyoboreshwa kwa kutumia viungo kwa kutumia aina ya Ref iliyorahisishwa, kulingana na refcount_t backend, ambayo hutumia kernel API ya jina moja kwa kuhesabu marejeleo. Usaidizi wa aina za Arc na Rc zinazotolewa katika maktaba ya kawaida ya alloc umeondolewa na haupatikani katika msimbo unaotekelezwa katika kiwango cha kernel (chaguo zimetayarishwa kwa maktaba yenyewe ambayo inazima aina hizi).
  • Viraka ni pamoja na toleo la dereva wa PL061 GPIO, iliyoandikwa tena katika Rust. Kipengele maalum cha dereva ni kwamba utekelezaji wake karibu mstari kwa mstari unarudia dereva wa GPIO uliopo katika lugha ya C. Kwa wasanidi programu ambao wanataka kufahamiana na kuunda viendeshaji katika Rust, ulinganisho wa mstari kwa mstari umeandaliwa ambao unawaruhusu kuelewa ni muundo gani katika Rust msimbo wa C unabadilishwa kuwa.
  • Msingi mkuu wa Rust umetumia rustc_codegen_gcc, rustc backend kwa GCC ambayo hutekeleza mkusanyiko wa kabla ya wakati (AOT) kwa kutumia maktaba ya libgccjit. Pamoja na maendeleo sahihi ya backend, itakuruhusu kukusanya Rust code kushiriki katika kernel kutumia GCC.
  • Mbali na ARM, Google na Microsoft, Red Hat imeonyesha nia ya kutumia lugha ya Rust katika kernel ya Linux. Tukumbuke kwamba Google hutoa usaidizi wa moja kwa moja kwa mradi wa Rust for Linux, inatayarisha utekelezaji mpya wa utaratibu wa mawasiliano ya Binder katika Rust, na inazingatia uwezekano wa kurekebisha viendeshaji mbalimbali katika Rust. Microsoft imeanza kutekeleza viendeshaji vya Hyper-V huko Rust. ARM inafanya kazi ili kuboresha usaidizi wa Rust kwa mifumo inayotegemea ARM. IBM imetekeleza usaidizi wa kutu kwenye kernel kwa mifumo ya PowerPC.

Chanzo: opennet.ru

Kuongeza maoni