Le fa'ailoga lona ono o patch mo le fatu Linux ma le lagolago mo le gagana Rust

O Miguel Ojeda, o le tusitala o le Rust-for-Linux project, na fautuaina le tatalaina o vaega v6 mo le atiaeina o avetaavale masini i le gagana Rust mo le iloiloga e le au atinaʻe fatu Linux. O le lona fitu lea o lomiga o patch, ma amanaʻia le lomiga muamua, lomia e aunoa ma se numera numera. O le lagolago a le ele ua manatu o se fa'ata'ita'iga, ae ua uma ona aofia i le linux-so'o lala ma ua lava le atina'eina e amata galue ai i le fausiaina o fa'a'ese'esega i luga ole kernel subsystems, fa'apea fo'i ma le tusitusi ta'avale ma modules. O le atinaʻe o loʻo faʻatupeina e Google ma le ISRG (Internet Security Research Group), o le na faavaeina le Let's Encrypt project ma faʻalauiloaina le HTTPS ma le atinaʻeina o tekinolosi e faʻaleleia ai le saogalemu o Initaneti.

I le lomiga fou:

  • O le meafaigaluega ma se fesuiaiga o le faletusi, faʻasaʻoloto mai le faʻatupuina o se tulaga "popole" pe a tupu ni mea sese, ua faʻafouina i le faʻasaʻoina o le Rust 1.60, lea e faʻamautu ai le lagolago mo le "maybe_uninit_extra" mode faʻaaogaina i patches kernel.
  • Faʻaopoopo le gafatia e faʻataʻitaʻi ai suʻega mai faʻamaumauga (suʻega o loʻo faʻaaogaina foi e fai ma faʻataʻitaʻiga i totonu o faʻamaumauga), e ala i le faʻaputuina-taimi o le liua o suʻega o loʻo nonoa i le kernel API i suʻega KUnit na faia i le taimi o le utaina o fatu.
  • Ua talia mana'oga o su'ega e le tatau ona i'u i se lapata'iga Clippy linter, pei o le Rust kernel code.
  • O se fa'atinoga muamua o le 'upega tafa'ilagi fa'atasi ma galuega fa'afeso'ota'i ua fa'ailoa mai. O le Rust code e mafai ona avanoa i fausaga fesoʻotaʻiga fatu e pei ole Igoa (faʻavae i luga o le fausaga o le fatu fatu), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) ma latou IPv6 tutusa .
  • O loʻo i ai le lagolago muamua mo polokalame asynchronous polokalame (async), faʻatinoina i le tulaga o le kasync module. Mo se faʻataʻitaʻiga, e mafai ona e tusia le code asynchronous e faʻaogaina ai TCP sockets: async fn echo_server(stream: TcpStream) -> Result {let mut buf = [0u8; 1024]; mata'u { let n = stream.read(&mut buf).faatalitali?; afai n == 0 { toe fo'i Ok(()); } stream.write_all(&buf[..n]).faatalitali?; }}
  • Fa'aopoopo upega:: fa'amama fa'aoga mo le fa'aogaina o fa'aputuga o fa'aputuga. Fa'aopoopo le fa'ata'ita'iga rust_netfilter.rs fa'atasi ai ma se fa'amama fa'atinoga i le gagana Rust.
  • Fa'aopoopo le fa'atinoga o se mutex smutex faigofie :: Mutex, lea e le mana'omia le pine.
  • Fa'aopoopo le NoWaitLock, lea e le fa'atali mo se loka, ma afai o lo'o nofoia e se isi filo, e mafua ai ona lipotia se mea sese pe a taumafai e maua le loka nai lo le taofia o le telefoni.
  • Fa'aopoopo RawSpinLock, fa'ailoa mai e raw_spinlock_t i le fatu, e fa'aoga i vaega e le mafai ona fa'aoga.
  • Fa'aopoopo le ituaiga ARef mo fa'asinomaga i se mea o lo'o fa'aogaina ai le faiga o le faitau fa'asino (e toe fa'atatau i taimi uma).
  • O le rustc_codegen_gcc backend, lea e mafai ai ona e faʻaogaina le faletusi libgccjit mai le poloketi GCC e avea o se generator code i rustc e tuʻuina atu ai le rustc ma le lagolago mo fausaga ma faʻataʻitaʻiga o loʻo maua i le GCC, ua faʻatinoina le gafatia e faʻapipiʻi ai le rustc compiler. O le fa'alauiloaina o le tu'ufa'atasi o lona uiga o le mafai lea ona fa'aogaina se fa'atupu tulafono fa'avae GCC ile rustc e fausia ai le rustc compiler lava ia. E le gata i lea, o le faʻasalalauga lata mai o le GCC 12.1 e aofia ai faʻaleleia i le libgccjit e manaʻomia mo rustc_codegen_gcc e galue saʻo. O lo'o fa'agasolo tapenaga e tu'uina atu ai le tomai e fa'apipi'i ai le rustc_codegen_gcc e fa'aaoga ai le fa'aoga rustup.
  • O le alualu i luma i le atinaʻeina o le GCC frontend gccrs faʻatasi ai ma le faʻatinoga o le gagana Rust compiler faʻavae i luga o le GCC o loʻo maitauina. O lo'o i ai nei le lua tagata atia'e tumau o lo'o galulue ile gccrs.

Manatua o suiga ua fuafuaina e mafai ai ona faʻaogaina le Rust e fai ma gagana lona lua mo le atinaʻeina o avetaavale ma kernel modules. O le lagolago a le Rust ua tu'uina atu o se filifiliga e le mafai ona fa'aletonu ma e le i'u ai i le fa'aofiina o le Rust o se fa'alagolago mo le fatu. O le fa'aaogaina o le Rust mo le atina'eina o aveta'avale o le a fa'ataga ai oe e fai ni ta'avale saogalemu ma sili atu ona lelei ma sina taumafaiga itiiti, e sa'oloto mai fa'afitauli e pei o le fa'aogaina o le mafaufau pe a mae'a fa'asa'oloto, fa'aletonu le fa'asinomaga, ma fa'alavelave fa'aletonu.

O le fa'aogaina o le manatua-saogalemu o lo'o tu'uina atu i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, le siakiina o le mea e umia ma le mea faitino i le olaga atoa (lautele), fa'apea fo'i ma le iloiloga o le sa'o o le manatua avanoa i le taimi o le fa'atinoina o tulafono. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻatagaina o le faʻatulagaina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu ona lelei le faʻaogaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.

puna: opennet.ru

Faaopoopo i ai se faamatalaga