It-tielet edizzjoni ta 'garża għall-kernel Linux b'appoġġ għall-lingwa Rust

Miguel Ojeda, awtur tal-proġett Rust-for-Linux, ippropona t-tielet għażla għall-komponenti tal-iżvilupp tas-sewwieq tal-apparat Rust għall-iżviluppaturi tal-kernel Linux biex jikkunsidraw. L-appoġġ tas-sadid huwa kkunsidrat bħala sperimentali, iżda diġà ġie miftiehem li jiġi inkluż fil-fergħa linux-next. L-iżvilupp huwa ffinanzjat minn Google u l-ISRG (Internet Security Research Group), li huwa l-fundatur tal-proġett Let's Encrypt u jippromwovi HTTPS u l-iżvilupp ta 'teknoloġiji biex tiżdied is-sigurtà tal-Internet.

Ifakkar li l-bidliet proposti jagħmluha possibbli li jintuża Rust bħala t-tieni lingwa għall-iżvilupp ta 'sewwieqa u moduli tal-kernel. L-appoġġ għas-sadid huwa ppreżentat bħala għażla li mhix attivata awtomatikament u ma tirriżultax fl-inklużjoni ta 'Rut fost id-dipendenzi tal-bini meħtieġa għall-kernel. L-użu ta' Rust biex tiżviluppa sewwieqa jippermettilek toħloq sewwieqa aktar sikuri u aħjar bi sforz minimu, ħielsa minn problemi bħall-aċċess għal żona tal-memorja wara li tiġi meħlusa, dereferencing null pointers, u buffer overruns.

Is-sikurezza tal-memorja hija pprovduta f'Rut fil-ħin tal-kompilazzjoni permezz ta 'verifika ta' referenza, iżżomm kont tal-proprjetà tal-oġġett u l-ħajja tal-oġġett (ambitu), kif ukoll permezz ta 'evalwazzjoni tal-korrettezza tal-aċċess għall-memorja waqt l-eżekuzzjoni tal-kodiċi. Rust jipprovdi wkoll protezzjoni kontra overflows integer, jeħtieġ inizjalizzazzjoni obbligatorja ta 'valuri varjabbli qabel l-użu, jimmaniġġja l-iżbalji aħjar fil-librerija standard, japplika l-kunċett ta' referenzi immutabbli u varjabbli b'mod awtomatiku, joffri tajpjar statiku qawwi biex jimminimizza l-iżbalji loġiċi.

Fil-verżjoni l-ġdida tal-garża, titkompla l-eliminazzjoni tal-kummenti li saru waqt id-diskussjoni tal-ewwel u t-tieni verżjonijiet tal-garża. L-aktar bidliet notevoli:

  • It-tranżizzjoni għar-rilaxx stabbli ta’ Rust 1.57 bħala l-kompilatur ta’ referenza saret u ġiet żgurata l-irbit mal-edizzjoni stabbilizzata tal-lingwa Rust 2021. Qabel, l-irqajja’ kienu marbuta mal-fergħa beta ta’ Rust u użaw xi wħud mill-karatteristiċi ta’ Rust 2021. il-lingwa inkluża fil-kategorija instabbli. Il-pass lejn l-ispeċifikazzjoni Rust XNUMX beda x-xogħol biex jitbiegħed mill-użu ta' karatteristiċi instabbli bħal const_fn_transmute, const_panic, const_unreachable_unchecked u core_panic u try_reserve f'irqajja.
  • Żvilupp kontinwu tal-varjant patched tal-librerija alloc Rust, modifikat biex jipprevjeni l-funzjonijiet ta 'allokazzjoni tal-memorja milli potenzjalment jiġġeneraw stat ta' "paniku" meta jseħħu żbalji, bħal barra l-memorja. Il-verżjoni l-ġdida timplimenta l-għażliet "no_rc" u "no_sync" biex tiddiżattiva l-funzjonalità mhux użata fil-kodiċi tal-qalba Rust, u tagħmel il-librerija aktar modulari. Ikompli l-ħidma mal-iżviluppaturi ewlenin tal-alloc biex il-bidliet meħtieġa għall-qalba jitmexxew fil-librerija ewlenija. L-għażla "no_fp_fmt_parse" ġiet imċaqlaq għal-librerija tal-qalba Rust (qalba), li hija meħtieġa biex il-librerija taħdem fil-livell tal-qalba.
  • Il-kodiċi ġie mnaddaf biex jeħles mit-twissijiet possibbli tal-kompilatur meta jinbena l-kernel fil-mod CONFIG_WERROR. Meta tinbena kodiċi Rust, modi dijanjostiċi addizzjonali tal-kompilatur u twissijiet ta 'linter Clippy huma attivati.
  • Astrazzjonijiet huma proposti għall-użu fil-kodiċi Rust għal serraturi seqlock (sekwenzi serraturi), callbacks għall-ġestjoni tal-enerġija, I / O Memorja (readX / writeX), interrupt u thread handlers, GPIO, aċċess għal apparati, sewwieqa u kredenzjali.
  • Għodod imtejba għall-iżvilupp tas-sewwieqa biex jinkludu mutexs rilokabbli, iteraturi tal-bits, links tal-pointer simplifikati, dijanjostika mtejba tal-ħsarat, u infrastruttura indipendenti tal-bus tad-dejta.
  • Xogħol imtejjeb b'links bl-użu ta' tip Ref simplifikat ibbażat fuq il-backend refcount_t, li juża l-API ċentrali tal-istess isem għall-għadd tal-links. L-appoġġ għat-tipi Arc u Rc ipprovduti fil-librerija alloc standard tneħħa u mhux disponibbli fil-kodiċi li jaħdem fil-livell tal-kernel (tħejjew għażliet għal-librerija nnifisha li jiskonnettjaw dawn it-tipi).
  • Varjant tas-sewwieq PL061 GPIO miktub mill-ġdid f'Rut ġie miżjud mal-garża. Karatteristika tas-sewwieq hija li l-implimentazzjoni tiegħu kważi linja b'linja tirrepeti s-sewwieq GPIO eżistenti fil-lingwa Ċ. Għall-iżviluppaturi li jridu jiffamiljarizzaw ruħhom mal-ħolqien tas-sewwieqa f'Rut, ġie ppreparat paragun linja b'linja, li jippermettilek tifhem f'liema kostruzzjonijiet f'Rut il-kodiċi C jiġi kkonvertit.
  • Il-kodiċi prinċipali ta' Rust adottat rustc_codegen_gcc, backend ta' rustc għal GCC li jimplimenta kumpilazzjoni preventiva (AOT) bl-użu tal-librerija libgccjit. Bl-iżvilupp xieraq tal-backend, se jippermettilek tibni l-kodiċi Rust involut fil-qalba bl-użu tal-GCC.
  • Minbarra ARM, Google u Microsoft, Red Hat esprima interess fl-użu tal-lingwa Rust fil-qalba tal-Linux. Ifakkar li Google direttament tipprovdi appoġġ għall-proġett Rust għall-Linux, tiżviluppa implimentazzjoni ġdida tal-mekkaniżmu ta 'komunikazzjoni interproċess Binder f'Rut, u qed tikkunsidra li taħdem mill-ġdid diversi sewwieqa f'Rut. Microsoft bdiet timplimenta sewwieqa għal Hyper-V fuq Rust. ARM qed jaħdem fuq it-titjib tal-appoġġ Rust għal sistemi bbażati fuq ARM. IBM implimentat appoġġ Rust fil-qalba għas-sistemi PowerPC.

Sors: opennet.ru

Żid kumment