Ko te putanga tuaono 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 v6 mo te whakawhanake i nga taraiwa taputapu i roto i te reo Rust hei whakaaro ma nga kaihanga kernel Linux. Koinei te putanga tuawhitu 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, kua tino whakawhanakehia hei timata mahi ki te hanga paparanga tangohanga i runga i nga punaha riaka, tae atu ki te tuhi taraiwa me nga waahanga. 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 toha, kua wetekina mai i te reanga pea o te ahua "panic" ka puta nga hapa, kua whakahouhia ki te tukunga o Rust 1.60, e whakapumau ana i te tautoko mo te aratau "pea_uninit_extra" e whakamahia ana i roto i nga papanga kernel.
  • I taapirihia te kaha ki te whakahaere i nga whakamatautau mai i nga tuhinga (whakamatautau ka whakamahia ano hei tauira i roto i nga tuhinga), na roto i te whakahiato-wa-whakawhitinga o nga whakamatautau e herea ana ki te API kernel ki nga whakamatautau KUnit i mahia i te wa e utaina ana te kernel.
  • Kua whakatauhia nga whakaritenga kia kaua e puta nga whakamatautau ki te whakatupato Clippy linter, pera i te waehere kernel Rust.
  • Ka whakaarohia he whakatinanatanga tuatahi o te waahanga "kupenga" me nga mahi whatunga. Ka taea e te waehere waikura te uru ki nga hanganga whatunga kernel penei i te Mokowāingoa (i runga i te hanganga o te kernel net net), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) me o ratou rite IPv6 .
  • He tautoko tuatahi mo nga tikanga hotaka tukutahi (async), ka whakatinanahia i roto i te ahua o te kōwae kasync. Hei tauira, ka taea e koe te tuhi i te waehere tukutahi ki te raweke i nga turanga TCP: async fn echo_server(stream: TcpStream) -> Hua {let mut buf = [0u8; 1024]; koropiko { kia n = stream.read(&mut buf).tatari?; if n == 0 { hoki mai Ok(()); } stream.write_all(&buf[..n]).tatari?; }}
  • Kua taapirihia te kupenga::tatari kōwae mo te raweke i nga whiriwhiringa paatete whatunga. He tauira taapiri rust_netfilter.rs me te whakatinanatanga tātari i te reo Rust.
  • He whakaurunga whakaurunga o te mutex smutex::Mutex ngawari, kaore e hiahiatia kia titi.
  • Kua taapirihia te NoWaitLock, e kore e tatari mo te raka, a ki te nohoia e tetahi atu miro, ka puta he hapa i te wa e ngana ana ki te tiki raka, kaua ki te aukati i te kaiwaea.
  • Kua taapirihia a RawSpinLock, i tautuhia e raw_spinlock_t i roto i te pata, hei tono ki nga waahanga kaore e noho mangere.
  • Kua taapirihia te momo ARef mo nga tohutoro ki tetahi ahanoa e whakamahia ai te tikanga tatau tohutoro (ka tatauhia i nga wa katoa).
  • Ko te rustc_codegen_gcc backend, e taea ai e koe te whakamahi i te whare pukapuka libgccjit mai i te kaupapa GCC hei kaihanga waehere i roto i te rustc ki te whakarato i te rustc me te tautoko mo nga hoahoanga me nga arotautanga e waatea ana i te GCC, kua whakatinanahia te kaha ki te bootstrapping i te rustc compiler. Ko te tikanga o te whakatairanga kaikoiohi ko te kaha ki te whakamahi i te kaihanga waehere e pa ana ki te GCC i roto i te rustc hei hanga i te kaihanga rustc ano. I tua atu, ko te tukunga tata o GCC 12.1 kei roto i nga whakatikatika ki te libgccjit e tika ana kia tika te mahi a rustc_codegen_gcc. Kei te haere tonu nga whakaritenga ki te whakarato i te kaha ki te whakauru i te rustc_codegen_gcc ma te whakamahi i te taputapu rustup.
  • Ko te ahunga whakamua i roto i te whanaketanga o te GCC frontend gccrs me te whakatinanatanga o te whakahiato reo Rust i runga i te GCC kua tuhia. I tenei wa e rua nga kaiwhakawhanake wa-katoa e mahi ana ki te gccrs.

Kia maumahara ko nga huringa 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