Plaub tsab ntawm thaj ua rau thaj rau Linux ntsiav nrog kev txhawb nqa rau cov lus Rust

Miguel Ojeda, tus sau ntawm Rust-for-Linux qhov project, tau thov ib qho thib plaub ntawm cov khoom siv rau kev tsim cov cuab yeej tsav tsheb hauv cov lus Rust rau kev txiav txim siab los ntawm Linux kernel developers. Kev them nyiaj yug xeb yog suav tias yog kev sim, tab sis twb tau pom zoo rau kev suav nrog hauv linux-tom ntej ceg thiab paub tab txaus los pib ua haujlwm ntawm kev tsim cov txheej txheem abstraction hla kernel subsystems, nrog rau kev sau cov tsav tsheb thiab cov qauv. 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 tau ua thaum lub sijhawm sib tham ntawm thawj, thib ob thiab thib peb ntawm thaj ua rau thaj. Hauv qhov tshiab version:

  • Kev hloov pauv mus rau kev siv qhov ruaj khov tso tawm ntawm Rust 1.58.0 raws li cov ntaub ntawv siv tau ua tiav. Ntawm cov kev hloov pauv uas tsim nyog rau qhov project, uas tseem tsis tau suav nrog hauv cov khoom siv Rust tseem ceeb, "-Zsymbol-mangling-version = v0" chij (xav tau hauv Rust 1.59.0) thiab "tej zaum_uninit_extra" hom (xav tias hauv Rust 1.60.0 .XNUMX) tau sau tseg..
  • Ntxiv cov kev kuaj xyuas tsis siv neeg rau qhov muaj cov cuab yeej Rust tsim nyog thiab nthuav dav lub peev xwm los ntsuas Rust kev txhawb nqa hauv lub cev.
  • Cov ntsiab lus tshiab tau raug thov rau kev nkag mus rau cov cuab yeej cim npe cov lus ("IdArray" thiab "IdTable") los ntawm Rust code.
  • Ntxiv cov khaubncaws sab nraud povtseg rau kev nkag mus rau lub sijhawm ua haujlwm ntsig txog (lub sijhawm teev).
  • Cov neeg tsav tsheb platform tam sim no tau txhais los ntawm kev siv qhov zoo.
  • Ib qho macro tshiab tau ntxiv los ua kom yooj yim rau kev sau npe ntawm cov tsav tsheb platform, thiab cov qauv tsav tsheb tshiab tau raug npaj.
  • Ntxiv macros rau "dev_*" cov qauv.
  • Ntxiv "{read,srite}*_relaxed" txoj kev rau hom IoMem .
  • Tshem tawm cov cuab yeej FileOpener kom yooj yim cov ntaub ntawv ua haujlwm.
  • Qhov "ThisModule" parameter tau ntxiv rau cov lus sib cav dhau los thaum sau npe tus neeg tsav tsheb.
  • Ib daim qauv qauv rau kev tsim cov kernel modules hauv cov lus Rust tau thov.

Tau qhov twg los: opennet.ru

Ntxiv ib saib