70% yamavuto achitetezo mu Chromium amayamba chifukwa cha zolakwika za kukumbukira

Madivelopa a projekiti ya Chromium kusanthula 912 pachiwopsezo chachikulu komanso zosatetezeka zomwe zadziwika pakutulutsidwa kosasunthika kwa Chrome kuyambira 2015, ndipo adatsimikiza kuti 70% yaiwo idachitika chifukwa chakulephera kukumbukira (zolakwika pogwira ntchito ndi zolozera mu C/C++ code). Theka la mavutowa (36.1%) amayamba chifukwa chofikira ku buffer pambuyo pomasula kukumbukira komwe kumalumikizidwa nayo (kugwiritsa ntchito-pambuyo paulere).

70% yamavuto achitetezo mu Chromium amayamba chifukwa cha zolakwika za kukumbukira

Popanga Chromium zinali poyamba anagona pansikuti ndizotheka kuti zolakwika zitha kuwoneka mu code, kotero kutsindika kwakukulu kunayikidwa pakugwiritsa ntchito kudzipatula kwa sandbox kuti achepetse zotsatira za chiwopsezo. Pakadali pano, mwayi wogwiritsa ntchito ukadaulo uwu wafika polekezera pa kuthekera kwawo ndipo kugawikana kwina m'njira sikungatheke potengera kugwiritsa ntchito zinthu.

Kusunga chitetezo cha codebase, Google imakakamizanso "lamulo la awiri", malinga ndi zomwe nambala iliyonse yowonjezeredwa iyenera kukwaniritsa zinthu zosaposa ziwiri mwa zitatu: kugwira ntchito ndi deta yosavomerezeka, kugwiritsa ntchito chinenero chopanda chitetezo (C / C ++) ndikuthamanga ndi mwayi wapamwamba. Lamuloli likutanthauza kuti code yokonza deta yakunja iyenera kuchepetsedwa kukhala mwayi wochepa (odzipatula) kapena kulembedwa m'chinenero chotetezedwa.

Kupititsa patsogolo chitetezo cha code base, pulojekiti yakhazikitsidwa kuti iteteze zolakwika za kukumbukira kuti zisawonekere mu code base. Pali njira zitatu zazikuluzikulu: kupanga malaibulale a C ++ okhala ndi ntchito zokumbukira bwino ndikukulitsa kuchuluka kwa otolera zinyalala, pogwiritsa ntchito njira zoteteza zida. MTE (Memory Tagging Extension) ndikulemba zigawo m'zilankhulo zomwe zimatsimikizira kugwira ntchito motetezeka ndi kukumbukira (Java, Kotlin, JavaScript, Rust, Swift).

Zikuyembekezeka kuti ntchitoyo idzayang'ana mbali ziwiri:

  • Kusintha kwakukulu ku ndondomeko yachitukuko ya C ++, zomwe sizimapatulapo zotsatira zoipa pa ntchito (zowonjezera malire macheke ndi kusonkhanitsa zinyalala). M'malo mwa zolozera zaiwisi, akufunsidwa kugwiritsa ntchito mtunduwo MiraclePtr, zomwe zimakulolani kuti muchepetse zolakwika zomwe zingagwiritsidwe ntchito pambuyo-pambuyo pa ngozi zomwe sizikuwopseza chitetezo, popanda kuwononga kowoneka bwino pakuchita, kukumbukira kukumbukira komanso kukhazikika.
  • Kugwiritsiridwa ntchito kwa zilankhulo zomwe zimapangidwira kuti ziwonetsetse chitetezo cha kukumbukira panthawi yophatikiza (zidzachotsa zovuta zomwe zimachitika pakuwunika kotereku pakupanga ma code, koma zidzabweretsa ndalama zowonjezera pakukonza kulumikizana kwa ma code muchilankhulo chatsopano ndi code in. C ++).

Kugwiritsa ntchito malaibulale osakumbukira kukumbukira ndi njira yosavuta, komanso yocheperako. Kulembanso kachidindo mu Rust kumavoteledwa ngati njira yothandiza kwambiri, komanso yokwera mtengo kwambiri.

70% yamavuto achitetezo mu Chromium amayamba chifukwa cha zolakwika za kukumbukira

Source: opennet.ru

Kuwonjezera ndemanga