70% ntawm cov teeb meem kev ruaj ntseg hauv Chromium yog tshwm sim los ntawm kev nco yuam kev

Cov neeg tsim tawm ntawm qhov project Chromium soj ntsuam 912 muaj kev pheej hmoo siab thiab qhov tsis txaus ntseeg tseem ceeb tau txheeb xyuas nyob rau hauv kev ruaj ntseg tso tawm ntawm Chrome txij li xyoo 2015, thiab xaus lus tias 70% ntawm lawv tau tshwm sim los ntawm kev nco tsis ruaj ntseg (yuam kev thaum ua haujlwm nrog cov pointers hauv C / C ++ code). Ib nrab ntawm cov teeb meem no (36.1%) yog tshwm sim los ntawm kev nkag mus rau qhov tsis muaj tom qab tso lub cim xeeb cuam tshuam nrog nws (siv-tom qab-dawb).

70% ntawm cov teeb meem kev ruaj ntseg hauv Chromium yog tshwm sim los ntawm kev nco yuam kev

Thaum tsim Chromium nws yog thawj zaug pw ua ke, hais tias nws muaj peev xwm ua yuam kev tshwm sim hauv txoj cai, yog li qhov tseem ceeb tau muab tso rau ntawm kev siv sandbox cais los txwv qhov tshwm sim ntawm qhov tsis zoo. Tam sim no, qhov muaj peev xwm ntawm kev siv cov thev naus laus zis no tau mus txog qhov txwv ntawm lawv lub peev xwm thiab ntxiv kev tawg mus rau hauv cov txheej txheem yog qhov ua tsis tau zoo los ntawm qhov pom ntawm kev siv peev txheej.

Txhawm rau tswj kev ruaj ntseg ntawm codebase, Google kuj tseem tswj hwm "txoj cai ob", raws li cov cai ntxiv yuav tsum ua kom tsis pub ntau tshaj ob ntawm peb yam xwm txheej: ua haujlwm nrog cov ntaub ntawv tsis raug cai, siv cov lus programming tsis ruaj ntseg (C / C ++) thiab khiav nrog cov cai tsim nyog. Txoj cai no txhais tau hais tias txoj cai rau kev ua cov ntaub ntawv sab nraud yuav tsum raug txo kom tsawg kawg nkaus (kev cais tawm) lossis sau ua hom lus ruaj ntseg.

Txhawm rau txhim kho kev ruaj ntseg ntawm lub hauv paus code, ib qhov project tau raug tso tawm los tiv thaiv kev nco yuam kev los ntawm kev tshwm sim hauv lub hauv paus code. Muaj peb txoj hauv kev tseem ceeb: tsim C ++ cov tsev qiv ntawv nrog cov haujlwm rau kev ua haujlwm nyab xeeb ntawm kev nco thiab nthuav dav ntawm cov khoom khib nyiab, siv cov cuab yeej tiv thaiv kho vajtse. MTE (Memory Tagging Extension) thiab sau cov khoom hauv cov lus uas ua kom muaj kev nyab xeeb ua haujlwm nrog lub cim xeeb (Java, Kotlin, JavaScript, Rust, Swift).

Nws cia siab tias kev ua haujlwm yuav tau tsom mus rau ob qho chaw:

  • Kev hloov pauv tseem ceeb rau C ++ txoj kev txhim kho, uas tsis suav nrog kev cuam tshuam tsis zoo rau kev ua haujlwm (ntxiv cov ntawv khij thiab khaws cov khib nyiab). Es tsis txhob raw cov taw tes, nws yog npaj los siv hom MiraclePtr, uas tso cai rau koj los txo qis kev siv-tom qab-dawb yuam kev rau kev sib tsoo uas tsis ua rau muaj kev hem thawj rau kev nyab xeeb, tsis muaj kev cuam tshuam tsis zoo rau kev ua haujlwm, nco noj thiab ruaj khov.
  • Kev siv cov lus tsim los ua kev ntsuam xyuas kev nco txog kev nyab xeeb ntawm lub sijhawm sib sau (yuav tshem tawm qhov cuam tshuam tsis zoo ntawm kev ua tau zoo hauv cov tshev no thaum lub sijhawm ua tiav code, tab sis yuav ua rau cov nqi ntxiv rau kev teeb tsa kev sib cuam tshuam ntawm cov lej hauv cov lus tshiab nrog cov lej hauv C++).

Kev siv cov tsev qiv ntawv nco-kev nyab xeeb yog qhov yooj yim tshaj plaws, tab sis kuj tseem siv tau tsawg dua. Rewriting code hauv Rust yog ntsuas raws li qhov ua tau zoo tshaj plaws, tab sis kuj tseem kim heev.

70% ntawm cov teeb meem kev ruaj ntseg hauv Chromium yog tshwm sim los ntawm kev nco yuam kev

Tau qhov twg los: opennet.ru

Ntxiv ib saib