An séú leagan de phaistí don eithne Linux le tacaíocht don teanga Rust

Mhol Miguel Ojeda, údar an tionscadail Rust-for-Linux, go scaoilfí comhpháirteanna v6 chun tiománaithe gléas a fhorbairt sa teanga Rust le breithniú ag forbróirí eithne Linux. Is é seo an seachtú eagrán de na paistí, ag cur san áireamh an chéad leagan, a foilsíodh gan uimhir leagain. Meastar go bhfuil tacaíocht meirge turgnamhach, ach tá sé san áireamh cheana féin sa bhrainse linux-next agus tá sé forbartha go leor chun tús a chur le hobair ar shraitheanna astarraingthe a chruthú thar fhochórais eithne, chomh maith le tiománaithe agus modúil a scríobh. Tá an fhorbairt maoinithe ag Google agus an ISRG (Internet Security Research Group), atá mar bhunaitheoir an tionscadail Let's Encrypt agus a chuireann HTTPS chun cinn agus forbairt teicneolaíochtaí chun slándáil Idirlín a fheabhsú.

Sa leagan nua:

  • Tá an fhoireann uirlisí agus leagan eile den leabharlann alloc, saor ó ghiniúint féideartha de staid "scaoll" nuair a tharlaíonn earráidí, tugtha cothrom le dáta go dtí scaoileadh Rust 1.60, a chobhsaíonn tacaíocht don mhodh "b'fhéidir_uninit_extra" a úsáidtear i paistí eithne.
  • Cuireadh leis an gcumas tástálacha a rith ón doiciméadú (tástálacha a úsáidtear freisin mar shamplaí sa doiciméadú), trí thiontú ama tiomsaithe na dtástálacha atá ceangailte leis an API eithne ina dtástálacha KUnit a dhéantar le linn luchtú na heithne.
  • Glacadh ceanglais nár cheart go mbeadh rabhadh línéir Clippy mar thoradh ar thástálacha, díreach cosúil le cód eithne Rust.
  • Tá sé beartaithe an modúl “glan” a chur i bhfeidhm ar dtús le feidhmeanna líonra. Tá rochtain ag cód meirge ar struchtúir líonra eithne mar Namespace (bunaithe ar an struchtúr eithne struct net), SkBuff (struct sk_buff), TcpListener, TcpStream (soicéad struct), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) agus a gcomhionann IPv6 .
  • Tá tacaíocht tosaigh ann do theicnící ríomhchláraithe asincrónach (asincrónach), arna gcur i bhfeidhm i bhfoirm an mhodúil kasync. Mar shampla, is féidir leat cód asincrónach a scríobh chun soicéid TCP a ionramháil: async fn echo_server(sruth: TcpStream) -> Toradh { let mut buf = [0u8; 1024]; lúb { lig n = stream.read(&mut buf). fanacht?; má tá n == 0 { ais OK (()); } stream.write_all(&buf[..n]). fanacht?; } }
  • Glan curtha leis:: modúl scagaire chun scagairí paicéad líonra a ionramháil. Cuireadh leis an sampla rust_netfilter.rs le cur i bhfeidhm scagaire sa teanga Rust.
  • Cuireadh smutex mutex simplí i bhfeidhm::Mutex, nach gá feannadh.
  • Cuireadh NoWaitLock leis, nach bhfanann go brách ar ghlas, agus má bhíonn snáithe eile ann, is cúis le earráid a thuairisciú agus iarracht á déanamh an glas a fháil seachas an glaoiteoir a stopadh.
  • Cuireadh RawSpinLock leis, arna aithint ag raw_spinlock_t san eithne, le cur i bhfeidhm ar ranna nach féidir a bheith díomhaoin.
  • Cineál ARef curtha leis le haghaidh tagairtí do réad a gcuirtear an mheicníocht chomhairimh tagartha i bhfeidhm air (a dhéantar i gcónaí é a athríomh).
  • Tá an t-inneall rustc_codegen_gcc, a ligeann duit an leabharlann libgccjit ó thionscadal GCC a úsáid mar ghineadóir cód i rustc chun tacaíocht a thabhairt do rustc le haghaidh ailtireachtaí agus leas iomlán a bhaint atá ar fáil i GCC, tar éis an cumas chun an tiomsaitheoir meirge a bhrú a bhrú chun cinn. Ciallaíonn cur chun cinn tiomsaitheora an cumas gineadóir cód GCC-bhunaithe a úsáid i rustc chun an tiomsaitheoir rustc féin a thógáil. Ina theannta sin, cuimsíonn scaoileadh GCC 12.1 le déanaí réitigh ar libgccjit atá riachtanach chun go n-oibreoidh rustc_codegen_gcc i gceart. Tá ullmhúcháin ar bun chun an cumas rustc_codegen_gcc a shuiteáil ag baint úsáide as an fóntais rustup.
  • Tugtar faoi deara an dul chun cinn i bhforbairt gccrs tosaigh an GCC le cur i bhfeidhm tiomsaitheoir teanga Rust bunaithe ar GCC. Tá beirt fhorbróirí lánaimseartha ag obair ar gccrs faoi láthair.

Thabhairt chun cuimhne go bhféadfaidh na hathruithe atá beartaithe Rust a úsáid mar dhara teanga chun tiománaithe agus modúil eithne a fhorbairt. Cuirtear tacaíocht meirge i láthair mar rogha nach bhfuil cumasaithe de réir réamhshocraithe agus ní fhágann sé go n-áirítear Rust mar spleáchas tógála riachtanach don eithne. Trí meirge a úsáid chun tiománaithe a fhorbairt, beidh tú in ann tiománaithe níos sábháilte agus níos fearr a chruthú gan mórán iarrachta, saor ó fhadhbanna ar nós rochtain cuimhne tar éis saortha, dereferences pointeoir nialasach, agus róchaiteachas maoláin.

Soláthraítear sábháilteacht chuimhne i Rust ag am tiomsaithe trí sheiceáil tagartha, súil a choinneáil ar úinéireacht réad agus saolré réad (raon feidhme), chomh maith le trí mheastóireacht a dhéanamh ar cheart an rochtain chuimhne le linn fhorghníomhú an chóid. Soláthraíonn Rust cosaint freisin i gcoinne ró-shreabhadh slánuimhir, éilíonn túsú éigeantach luachanna athraitheacha roimh úsáid, láimhseálann sé earráidí níos fearr sa leabharlann caighdeánach, cuireann sé coincheap na dtagairtí agus na n-athróg do-athraithe i bhfeidhm de réir réamhshocraithe, cuireann clóscríobh statach láidir ar fáil chun earráidí loighciúla a íoslaghdú.

Foinse: oscailtenet.ru

Add a comment