Ib tsab thib peb ntawm thaj ua rau thaj rau Linux ntsiav nrog kev txhawb nqa rau cov lus Rust

Miguel Ojeda, tus sau ntawm Rust-for-Linux project, tau thov ib qho kev xaiv thib peb rau kev tsim cov tsav tsheb hauv Rust lus rau Linux kernel developers xav txog. Kev txhawb nqa xeb yog suav tias yog kev sim, tab sis twb tau pom zoo rau kev suav nrog hauv linux-tom ntej ceg. Txoj kev loj hlob yog nyiaj txiag los ntawm Google thiab ISRG (Internet Security Research Group), uas yog tus tsim ntawm Let's Encrypt project thiab txhawb HTTPS thiab kev tsim cov thev naus laus zis los txhim kho Internet kev ruaj ntseg.

Nco qab tias cov kev hloov pauv tau ua rau nws tuaj yeem siv Rust ua hom lus thib ob rau kev tsim cov tsav tsheb thiab cov kernel modules. Kev txhawb nqa xeb yog nthuav tawm raws li qhov kev xaiv uas tsis tau qhib los ntawm lub neej ntawd thiab tsis ua rau Rust suav nrog raws li qhov yuav tsum tau muaj kev vam khom rau cov kernel. Siv Rust rau kev txhim kho tus neeg tsav tsheb yuav tso cai rau koj los tsim kom muaj kev nyab xeeb thiab zoo dua tsav tsheb nrog kev siv zog tsawg, tsis muaj teeb meem xws li kev nkag mus rau lub cim xeeb tom qab tso tawm, tsis muaj qhov taw qhia tsis zoo, thiab tsis muaj kev cuam tshuam.

Kev tuav pov hwm kev nco yog muab rau hauv Rust ntawm lub sijhawm los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom thiab lub neej ntawm cov khoom (scope), nrog rau kev ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus naj npawb overflows, yuav tsum tau pib pib ntawm qhov sib txawv ntawm qhov tseem ceeb ua ntej siv, tuav cov kev ua yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab cov kev hloov pauv los ntawm lub neej ntawd, muaj kev ntaus ntawv zoo li qub kom txo qis cov kev ua yuam kev.

Tus tshiab version ntawm thaj ua rau thaj txuas ntxiv tshem tawm cov lus hais thaum lub sijhawm sib tham ntawm thawj thiab thib ob versions ntawm thaj ua rau thaj. Cov kev hloov pauv pom tau tshaj plaws:

  • Ib qho kev hloov pauv tau ua rau siv qhov kev tso tawm ruaj khov ntawm Rust 1.57 raws li kev siv compiler thiab qhov txuas mus rau qhov ruaj khov tsab ntawm Rust 2021 hom lus tau muab. Yav dhau los, thaj ua rau thaj tau khi rau beta ceg ntawm Rust thiab siv qee yam lus nta uas. raug cais ua tsis ruaj khov. Kev hloov mus rau Rust 2021 specification tau tso cai rau peb pib ua haujlwm kom tsis txhob siv cov yam ntxwv tsis ruaj khov hauv thaj ua rau thaj ua rau const_fn_transmute, const_panic, const_unavailable_unchecked thiab core_panic thiab try_reserve.
  • Txoj kev loj hlob ntawm alloc version ntawm lub tsev qiv ntawv Rust suav nrog hauv thaj ua rau thaj tau txuas ntxiv, hloov kho kom tshem tawm lub cim xeeb faib ua haujlwm ntawm kev ua tau zoo ntawm lub xeev "kev ntshai" thaum muaj teeb meem tshwm sim, xws li tsis nco qab. Tus tshiab version siv qhov "no_rc" thiab "no_sync" cov kev xaiv los lov tes taw functionality tsis siv nyob rau hauv lub kernel Rust code, ua rau lub tsev qiv ntawv ntau modular. Ua hauj lwm txuas ntxiv nrog cov neeg tsim khoom loj, txhawm rau hloov cov kev hloov pauv uas xav tau rau cov ntsiav mus rau lub tsev qiv ntawv loj. Qhov "no_fp_fmt_parse" kev xaiv, xav tau rau lub tsev qiv ntawv ua haujlwm ntawm qib ntsiav, tau tsiv mus rau lub tsev qiv ntawv Rust puag (core).
  • Cov cai tau raug ntxuav kom tshem tawm cov lus ceeb toom tuaj yeem ua tau thaum tsim cov ntsiav hauv CONFIG_WERROR hom. Thaum lub tsev code nyob rau hauv Rust, ntxiv compiler diagnostic hom thiab Clippy linter ceeb toom yog enabled.
  • Abstractions yog npaj rau siv nyob rau hauv Rust code rau seqlocks (ib ntu locks), hu rov qab rau kev tswj fais fab, I/O Memory (readX/writeX), cuam tshuam thiab xov handlers, GPIO, nkag mus rau cov khoom siv, tsav tsheb thiab cov ntaub ntawv pov thawj.
  • Cov cuab yeej rau kev txhim kho tsav tsheb tau nthuav dav kom suav nrog cov mutexes hloov chaw, me ntsis iterators, yooj yim pointer bindings, txhim kho kev kuaj mob, thiab cov ntaub ntawv tsheb npav ywj pheej.
  • Txhim kho kev ua haujlwm nrog kev sib txuas uas siv hom yooj yim Ref, raws li refcount_t backend, uas siv cov kernel API ntawm tib lub npe rau suav cov ntaub ntawv. Kev them nyiaj yug rau Arc thiab Rc hom uas tau muab rau hauv cov tsev qiv ntawv tus qauv alloc tau raug tshem tawm thiab tsis muaj nyob rau hauv cov lej ua tiav ntawm qib kernel (kev xaiv tau npaj rau lub tsev qiv ntawv nws tus kheej uas lov tes taw cov hom).
  • Cov thaj ua rau thaj muaj xws li version ntawm PL061 GPIO tsav tsheb, rov sau dua hauv Rust. Ib qho tshwj xeeb ntawm tus neeg tsav tsheb yog tias nws qhov kev siv yuav luag los ntawm kab rov ua dua tus tsav tsheb GPIO uas twb muaj lawm hauv C lus. Rau cov neeg tsim khoom uas xav paub txog kev tsim cov tsav tsheb hauv Rust, kev sib piv ntawm kab los ntawm kab tau npaj uas tso cai rau lawv nkag siab qhov twg tsim hauv Rust C code tau hloov mus rau hauv.
  • Lub ntsiab Rust codebase tau txais rustc_codegen_gcc, rustc backend rau GCC uas siv ua ntej-ntawm-lub sij hawm (AOT) muab tso ua ke siv lub tsev qiv ntawv libgccjit. Nrog rau kev txhim kho kom zoo ntawm lub backend, nws yuav tso cai rau koj los sau cov Rust code koom nrog hauv cov ntsiav siv GCC.
  • Ntxiv rau ARM, Google thiab Microsoft, Red Hat tau qhia txog kev txaus siab siv cov lus Rust hauv Linux ntsiav. Cia peb nco qab tias Google ncaj qha muab kev txhawb nqa rau Rust rau Linux qhov project, tab tom tsim kev siv tshiab ntawm Binder interprocess kev sib txuas lus mechanism hauv Rust, thiab tab tom txiav txim siab txog qhov muaj peev xwm rov ua haujlwm ntau yam tsav tsheb hauv Rust. Microsoft tau pib siv cov tsav tsheb rau Hyper-V hauv Rust. ARM tab tom ua haujlwm los txhim kho Rust kev txhawb nqa rau ARM-based systems. IBM tau siv kev txhawb nqa Rust hauv cov ntsiav rau PowerPC systems.

Tau qhov twg los: opennet.ru

Ntxiv ib saib