An t-siathamh dreach de phìosan airson an kernel Linux le taic don chànan Rust

Mhol Miguel Ojeda, ùghdar a’ phròiseict Rust-for-Linux, gun deidheadh ​​co-phàirtean v6 a leigeil ma sgaoil airson draibhearan inneal a leasachadh anns a’ chànan Rust airson beachdachadh le luchd-leasachaidh kernel Linux. Is e seo an seachdamh deasachadh de na pìosan, a’ toirt aire don chiad dreach, air fhoillseachadh gun àireamh dreach. Thathas den bheachd gu bheil taic meirge deuchainneach, ach tha e mu thràth air a ghabhail a-steach sa mheur linux-ath agus tha e air a leasachadh gu leòr gus tòiseachadh air obair air cruthachadh sreathan tarraing thairis air fo-shiostaman kernel, a bharrachd air a bhith a’ sgrìobhadh dhraibhearan agus mhodalan. Tha an leasachadh air a mhaoineachadh le Google agus an ISRG (Buidheann Sgrùdaidh Tèarainteachd Eadar-lìn), a stèidhich am pròiseact Let's Encrypt agus a bhrosnaicheas HTTPS agus leasachadh theicneòlasan gus tèarainteachd eadar-lìn a leasachadh.

Anns an dreach ùr:

  • Chaidh an inneal agus tionndadh den leabharlann alloc, a chaidh a shaoradh bho ghineadh comasach de staid “clisgeadh” nuair a thachras mearachdan, ùrachadh gu sgaoileadh Rust 1.60, a sheasas taic don mhodh “maybe_uninit_extra” a thathas a ’cleachdadh ann am pìosan kernel.
  • Chuir sinn ris an comas deuchainnean a ruith bho na sgrìobhainnean (deuchainnean a tha cuideachd air an cleachdadh mar eisimpleirean anns na sgrìobhainnean), tro thionndadh ùine cruinneachaidh de dheuchainnean ceangailte ris an kernel API gu deuchainnean KUnit a chaidh a chuir gu bàs aig àm luchdachadh kernel.
  • Thathas air gabhail ri riatanasan nach bu chòir do dheuchainnean rabhadh lìnidh Clippy a thoirt gu buil, dìreach mar a tha còd kernel Rust.
  • Thathas a’ moladh a’ chiad buileachadh den mhodal “lìon” le gnìomhan lìonraidh. Tha cothrom aig còd rust air structaran lìonra kernel leithid Namespace (stèidhichte air structar kernel net struct), SkBuff (struct sk_buff), TcpListener, TcpStream (structar socket), Ipv4Addr (struct in_addr), SocketAddrV4 (struct sockaddr_in) agus na co-ionannachdan IPv6 aca .
  • Tha taic tùsail ann airson dòighean prògramadh asyncronach (async), air an cur an gnìomh ann an cruth modal kasync. Mar eisimpleir, faodaidh tu còd asyncronach a sgrìobhadh gus socaidean TCP a làimhseachadh: async fn echo_server (sruth: TcpStream) -> Toradh {let mut buf = [0u8; 1024]; lùb { leig n = stream.read(&mut buf).feitheamh?; ma tha n == 0 { tilleadh OK (()); } stream.write_all(&buf[..n]).a' feitheamh?; } }
  • Lìonra air a chur ris :: modal sìoltachain airson sìoltachain pacaid lìonra a làimhseachadh. Chaidh eisimpleir a chur ris rust_netfilter.rs le buileachadh sìoltachain sa chànan Rust.
  • Cur an gnìomh smutex mutex sìmplidh ::Mutex, nach eil feumach air pinadh.
  • Chaidh NoWaitLock a chuir ris, nach bi a-riamh a’ feitheamh ri glas, agus ma tha snàithlean eile ann, ag adhbhrachadh gun tèid mearachd innse nuair a thathar a’ feuchainn ris a’ ghlas fhaighinn an àite stad a chuir air an neach a tha a’ tadhal.
  • Chaidh RawSpinLock a chur ris, air a chomharrachadh le raw_spinlock_t san kernel, gus buntainn ri earrannan nach urrainn a bhith leisg.
  • Seòrsa ARef air a chur ris airson iomraidhean air nì ris a bheil an uidheamachd cunntais iomraidh air a chuir an sàs (an-còmhnaidh air aithris).
  • Tha an backend rustc_codegen_gcc, a leigeas leat an leabharlann libgccjit bhon phròiseact GCC a chleachdadh mar ghineadair còd ann an rustc gus taic a thoirt do rustc airson ailtireachd agus optimizations a tha rim faighinn ann an GCC, air comas a chuir an gnìomh bootstrapping an compiler rustc. Tha adhartachadh compiler a’ ciallachadh comas gineadair còd stèidhichte air GCC a chleachdadh ann an rustc gus an compiler rustc fhèin a thogail. A bharrachd air an sin, tha an sgaoileadh o chionn ghoirid de GCC 12.1 a’ toirt a-steach fuasglaidhean air libgccjit a tha riatanach airson rustc_codegen_gcc obrachadh gu ceart. Tha ullachadh a’ dol air adhart gus an comas rustc_codegen_gcc a stàladh a’ cleachdadh a’ ghoireas rustup.
  • Thathas a’ toirt fa-near an adhartas ann an leasachadh gccrs aghaidh GCC le buileachadh an compiler cànain Rust stèidhichte air GCC. Tha dà leasaiche làn-ùine ag obair air gccrs an-dràsta.

Cuimhnich gu bheil na h-atharrachaidhean a tha san amharc ga dhèanamh comasach Rust a chleachdadh mar dhàrna cànan airson draibhearan agus modalan kernel a leasachadh. Tha taic meirge air a thaisbeanadh mar roghainn nach eil air a chomasachadh gu bunaiteach agus nach eil a’ ciallachadh gu bheil Rust air a ghabhail a-steach mar eisimeileachd togail riatanach airson an kernel. Le bhith a’ cleachdadh Rust airson leasachadh dhràibhearan leigidh sin leat draibhearan nas sàbhailte agus nas fheàrr a chruthachadh le glè bheag de dh’ oidhirp, saor bho dhuilgheadasan leithid ruigsinneachd cuimhne às deidh an saoradh, ro-aithrisean puing null, agus cus bufair.

Bidh Rust a’ sparradh sàbhailteachd cuimhne aig àm cruinneachaidh tro sgrùdadh iomraidh, sealbhachadh nithean agus lorg fad-beatha nithean (scopes), agus le bhith a’ measadh dè cho ceart ‘s a tha slighean cuimhne aig àm ruith. Bidh Rust cuideachd a’ toirt dìon an aghaidh tar-shruthan iomlan, ag iarraidh gun tèid luachan caochlaideach a thòiseachadh mus tèid an cleachdadh, gu bheil làimhseachadh mhearachdan nas fheàrr aige san leabharlann àbhaisteach, a’ cleachdadh bun-bheachd iomraidhean agus caochladairean neo-sheasmhach gu bunaiteach, agus a’ tabhann clò-sgrìobhadh làidir statach gus mearachdan loidsigeach a lughdachadh.

Source: fosgailtenet.ru

Cuir beachd ann