Ko te putanga tuawaru o nga papanga mo te pata Linux me te tautoko mo te reo Rust

Ko Miguel Ojeda, te kaituhi o te kaupapa Rust-for-Linux, i tono kia tukuna nga waahanga v8 mo te whakawhanake i nga taraiwa taputapu i roto i te reo Rust hei whakaaro ma nga kaihanga kernel Linux. Koinei te putanga whakahou o nga papaki, me te whakaaro ki te putanga tuatahi, i whakaputaina kaore he nama putanga. Ko te tautoko waikura e kiia ana he whakamatautau, engari kua whakauruhia ki roto i te peka linux-muri, e kii ana kia whakauruhia ki roto i te tukunga hinga o 5.20/6.0, a kua pakeke ki te timata ki te mahi ki te hanga i nga papa tangohanga ki runga i nga punaha iti o te kernel, me nga taraiwa tuhi. me ngā kōwae. Ko te whakawhanaketanga he putea e Google me te ISRG (Ipurangi Rangahau Rangahau Roopu), ko ia te kaiwhakaara o te kaupapa Let's Encrypt me te whakatairanga i te HTTPS me te whanaketanga o nga hangarau hei whakapai ake i te haumarutanga Ipurangi.

I roto i te putanga hou:

  • Ko te kete taputapu me tetahi momo rereke o te whare pukapuka tohatoha, kaore he whakaputanga o te ahua "panic" ka puta he hapa, kua whakahoutia mo te tukunga o Rust 1.62. Ka whakatauritea ki te putanga i whakamahia i mua, ko te kete taputapu Rust kua whakapumau i te tautoko mo te mahi const_fn_trait_bound e whakamahia ana i roto i nga papanga kernel.
  • Ka wehea te waehere here ki roto i te mokihi pouaka motuhake "nga here", ka whakamaarama i te hanga ano mena ka whakarereketia ki te kete matua "kernel" anake.
  • Te whakatinanatanga o te tonotono “concat_idents!” ka tuhia ano ki te ahua o te tonotono tikanga kaore e herea ki te mahi concat_idents me te tuku tohutoro ki nga taurangi o te rohe.
  • Kua tuhia ano te tonotono “static_assert!”, ka taea te whakamahi i te “matua::assert!()” ki tetahi horopaki, kaua ki nga taumau.
  • Tonotono "build_error!" ka urutau ki te mahi ina whakaritea te aratau "RUST_BUILD_ASSERT_{WARN,ALLOW}" mo nga waahanga.
  • I taapirihia he konae motuhake me nga tautuhinga "kernel/configs/rust.config".
  • Ko nga kōnae "*.i" i tukatukahia i roto i nga whakakapinga tonotono kua whakaingoatia ki "*.rsi".
  • Ko te tautoko mo te hanga i nga waahanga Waikura me nga taumata arotautanga rereke mai i era i whakamahia mo te waehere C kua whakamutua.
  • Kua taapirihia te kōwae fs, e whakarato ana i nga here mo te mahi me nga punaha konae. He tauira o te punaha konae ngawari kua tuhia ki te Rust ka whakaratohia.
  • Kua taapirihia te waahanga mahi mo te mahi tahi me nga rarangi punaha (he herenga ki runga i te mahi_struct me te workqueue_struct anga kernel).
  • Ko te whakawhanaketanga o te kōwae kasync i haere tonu me te whakatinanatanga o nga tikanga whakamaoritanga tukutahi (async). I taapirihia he tauira o te tūmau TCP taumata-matua i tuhia ki Rust.
  • I taapirihia te kaha ki te hapai i nga haukoti i roto i te reo Rust ma te whakamahi i nga momo [Threaded]Handler me te [Threaded]Rehitatanga` momo.
  • Kua taapirihia te tonotono tikanga "#[vtable]" kia ngawari ake te mahi me nga ripanga tohu tohu mahi, penei i te hanganga kōnae_operations.
  • Kua taapirihia te whakatinanatanga o nga rarangi hono-rua "unsafe_list:: List".
  • Kua taapirihia te tautoko tuatahi mo te RCU (Panui-kape-whakahou) me te momo Kaitiaki kia tirohia mena kua herea he raka panui ki te miro o naianei.
  • He mahi taapiri::spawn() hei waihanga me te tiimata aunoa i nga miro kernel. I taapiri ano te tikanga Mahi::wake_up().
  • Kua tāpirihia he kōwae whakaroa e taea ai e koe te whakamahi whakaroa (he takai i runga i te msleep()).

Ko nga whakarereketanga e whakaarohia ana ka taea te whakamahi i te Rust hei reo tuarua mo te whakawhanake i nga taraiwa me nga waahanga kernel. Ko te tautoko waikura ka whakaatuhia hei whiringa kaore e taea te taunoa me te kore e uru ki te waikura hei ti'aturi hanga mo te kernel. Ma te whakamahi i te Rust mo te whanaketanga taraiwa ka taea e koe te hanga taraiwa haumaru me te pai ake me te iti o te whakapau kaha, kaore he raruraru penei i te uru mahara i muri i te wateatanga, nga tohu tohu korekore, me te nui o te aukati.

Ka whakaratohia te haumaru mahara i roto i te Rust i te wa whakahiato ma te tirotiro tohutoro, te pupuri i te mana o te ahanoa me te oranga o te ahanoa (whanui), tae atu ki te arotake i te tika o te uru mahara i te wa e mahia ana te waehere. Ko te waikura hoki he whakamarumaru mai i nga puhaketanga integer, me whakahau kia tiimata nga uara taurangi i mua i te whakamahi, ka pai ake te hapai i nga hapa i roto i te whare pukapuka paerewa, te whakamahi i te kaupapa o nga tohutoro koretake me nga taurangi ma te taunoa, e tuku ana i te patopato pateko kaha hei whakaiti i nga hapa arorau.

Source: opennet.ru

Tāpiri i te kōrero