Ẹda kẹta ti awọn abulẹ fun ekuro Linux pẹlu atilẹyin fun ede Rust

Miguel Ojeda, onkọwe ti iṣẹ akanṣe Rust-for-Linux, ti dabaa aṣayan paati kẹta fun idagbasoke awọn awakọ ẹrọ ni ede Rust fun awọn idagbasoke kernel Linux lati gbero. Atilẹyin ipata ni a ka si esiperimenta, ṣugbọn o ti gba tẹlẹ lori fun ifisi ni ẹka linux-tókàn. Idagbasoke naa jẹ agbateru nipasẹ Google ati ISRG (Ẹgbẹ Iwadi Aabo Intanẹẹti), eyiti o jẹ oludasile iṣẹ akanṣe Let's Encrypt ati igbega HTTPS ati idagbasoke awọn imọ-ẹrọ lati mu aabo Intanẹẹti dara si.

Ranti pe awọn iyipada ti a dabaa jẹ ki o ṣee ṣe lati lo Rust bi ede keji fun idagbasoke awakọ ati awọn modulu ekuro. Atilẹyin ipata ni a gbekalẹ bi aṣayan ti ko ṣiṣẹ nipasẹ aiyipada ati pe ko ja si ni ipata ti o wa bi igbẹkẹle kikọ ti o nilo fun ekuro. Lilo Rust fun idagbasoke awakọ yoo gba ọ laaye lati ṣẹda ailewu ati awọn awakọ to dara julọ pẹlu ipa diẹ, ọfẹ lati awọn iṣoro bii iraye si iranti lẹhin didi, awọn ifọkasi itọka asan, ati awọn ifasilẹ ifipamọ.

Mimu ailewu iranti ni a pese ni ipata ni akoko iṣakojọpọ nipasẹ iṣayẹwo itọkasi, ṣiṣe itọju ohun-ini ohun ati igbesi aye ohun (opin), ati nipasẹ igbelewọn ti deede wiwọle iranti lakoko ṣiṣe koodu. Ipata tun pese aabo lodi si ṣiṣan odidi odidi, nilo ipilẹṣẹ dandan ti awọn iye oniyipada ṣaaju lilo, mu awọn aṣiṣe dara julọ ni ile-ikawe boṣewa, lo imọran ti awọn itọkasi ailagbara ati awọn oniyipada nipasẹ aiyipada, nfunni titẹ aimi to lagbara lati dinku awọn aṣiṣe ọgbọn.

Ẹya tuntun ti awọn abulẹ tẹsiwaju lati yọkuro awọn asọye ti a ṣe lakoko ijiroro ti akọkọ ati awọn ẹya keji ti awọn abulẹ. Awọn iyipada ti o ṣe akiyesi julọ:

  • A ti ṣe iyipada si lilo itusilẹ iduroṣinṣin ti Rust 1.57 gẹgẹbi olupilẹṣẹ itọkasi ati ọna asopọ si ẹda iduroṣinṣin ti ede Rust 2021 ti pese. Ni iṣaaju, awọn abulẹ ti so mọ ẹka beta ti Rust ati lo diẹ ninu awọn ẹya ede ti won classified bi riru. Iyipada si ipata 2021 sipesifikesonu gba wa laaye lati pilẹ iṣẹ lati yago fun awọn lilo ti iru riru awọn ẹya ara ẹrọ ni awọn abulẹ bi const_fn_transmute, const_panic, const_unavailable_unchecked ati core_panic ati try_reserve.
  • Idagbasoke ẹya alloc ti ile-ikawe Rust ti o wa ninu awọn abulẹ ti tẹsiwaju, ti yipada lati yọkuro awọn iṣẹ ipin iranti ti iran ti o ṣeeṣe ti ipo “ijaaya” nigbati awọn aṣiṣe ba waye, gẹgẹ bi iranti. Ẹya tuntun n ṣe imuse awọn aṣayan “no_rc” ati “no_sync” lati mu iṣẹ ṣiṣe ti a ko lo ninu koodu ipata ekuro, jẹ ki ile-ikawe jẹ apọjuwọn diẹ sii. Iṣẹ tẹsiwaju pẹlu awọn olupilẹṣẹ alloc akọkọ, ti a pinnu lati gbe awọn ayipada ti o nilo fun ekuro si ile-ikawe akọkọ. Aṣayan “no_fp_fmt_parse”, ti o nilo fun ile-ikawe lati ṣiṣẹ ni ipele kernel, ti gbe lọ si ibi ikawe ipilẹ Rust (mojuto).
  • A ti sọ koodu naa di mimọ lati yọkuro awọn ikilọ alakojọ ti o ṣee ṣe nigbati o ba n kọ ekuro ni ipo CONFIG_WERROR. Nigbati koodu kọ ni ipata, awọn ipo iwadii alakojọ afikun ati awọn ikilọ linter Clippy ti ṣiṣẹ.
  • Awọn abstractions ti wa ni dabaa fun lilo ninu ipata koodu fun seqlocks (awọn titiipa ọkọọkan), callback ipe fun agbara isakoso, I/O Memory (readX/writeX), da gbigbi ati o tẹle handlers, GPIO, wiwọle si awọn ẹrọ, awakọ ati awọn iwe eri.
  • Awọn irinṣẹ fun idagbasoke awakọ ti pọ si pẹlu awọn mutexes ti o tun gbe pada, awọn olutọpa bit, awọn asopọ itọka irọrun, awọn iwadii aṣiṣe ti ilọsiwaju, ati awọn amayederun olominira ọkọ akero data.
  • Iṣẹ ilọsiwaju pẹlu awọn ọna asopọ nipa lilo iru Ref ti o rọrun, ti o da lori ẹhin refcount_t, eyiti o nlo ekuro API ti orukọ kanna fun kika awọn itọkasi. Atilẹyin fun awọn oriṣi Arc ati Rc ti a pese ni ile-ikawe alloc boṣewa ti yọkuro ati pe ko si ni koodu ti a ṣe ni ipele ekuro (awọn aṣayan ti pese sile fun ile-ikawe funrararẹ ti o mu awọn iru wọnyi ṣiṣẹ).
  • Awọn abulẹ naa pẹlu ẹya ti awakọ PL061 GPIO, ti a tun kọ ni Rust. Ẹya pataki ti awakọ ni pe imuse rẹ fẹrẹ laini laini tun ṣe awakọ GPIO ti o wa tẹlẹ ni ede C. Fun awọn olupilẹṣẹ ti o fẹ lati faramọ pẹlu ṣiṣẹda awakọ ni ipata, a ti pese afiwe laini-laini ti o fun wọn laaye lati loye iru awọn itumọ ti Rust koodu C ti yipada si.
  • Ipilẹ koodu Rust akọkọ ti gba rustc_codegen_gcc, ẹhin rustc kan fun GCC ti o ṣe iṣakojọpọ akoko-akoko (AOT) ni lilo ile-ikawe libgccjit. Pẹlu idagbasoke to dara ti ẹhin, yoo gba ọ laaye lati gba koodu Rust ti o wa ninu ekuro nipa lilo GCC.
  • Ni afikun si ARM, Google ati Microsoft, Red Hat ti ṣe afihan ifẹ si lilo ede Rust ni ekuro Linux. Jẹ ki a ranti pe Google taara pese atilẹyin fun ipata fun iṣẹ akanṣe Linux, n dagbasoke imuse tuntun ti ẹrọ ibaraenisọrọ interprocess Binder ni Rust, ati pe o nireti lati tun ṣiṣẹ awọn awakọ lọpọlọpọ ni ipata. Microsoft ti bẹrẹ imuse awọn awakọ fun Hyper-V ni Rust. ARM n ṣiṣẹ lati mu ilọsiwaju atilẹyin ipata fun awọn eto-orisun ARM. IBM ti ṣe atilẹyin atilẹyin Rust ninu ekuro fun awọn eto PowerPC.

orisun: opennet.ru

Fi ọrọìwòye kun