Mozilla tau hloov mus rau kev siv lub tshuab qhia ib txwm muaj nrog Chromium

SpiderMonkey JavaScript cav siv hauv Firefox pauv siv cov kev hloov kho tshiab ntawm cov lus qhia tsis tu ncua raws li cov cai tam sim no Irregexp los ntawm V8 JavaScript cav siv hauv browsers raws li Chromium project. Qhov kev siv tshiab ntawm RegExp yuav muaj nyob rau hauv Firefox 78, teem rau Lub Rau Hli 30, thiab yuav nqa tag nrho cov ntsiab lus ECMAScript uas ploj lawm ntsig txog cov lus qhia mus rau qhov browser.

Nws tau raug sau tseg tias RegExp cav hauv SpiderMonkey yog tsim los ua ib qho kev sib cais, uas ua rau nws muaj kev ywj pheej thiab tsim nyog rau kev hloov pauv yam tsis tas yuav hloov pauv tseem ceeb rau cov cai hauv paus. Modularity ua rau nws ua tau nyob rau hauv 2014 los hloov lub YARR RegExp cav Ameslikas siv hauv Firefox nrog rab rawg ntawm Irregexp cav los ntawm V8. Irregexp yog khi rau V8 API, khi rau cov khib nyiab khib nyiab, thiab siv V8-txheej txoj hlua sawv cev thiab khoom qauv. Nyob rau hauv tus txheej txheem ntawm kev yoog rau SpiderMonkey's sab hauv API hauv 2014, lub cav Irregexp tau rov sau dua ib nrab, thiab cov kev hloov tshiab, xws li tus chij '\u', qhov twg ua tau pauv rau hauv rab rawg tswj los ntawm Mozilla.

Hmoov tsis zoo, kev tswj hwm tus nkhaus synchronized yog qhov nyuaj thiab muaj peev xwm siv tau. Nrog rau qhov tshwm sim ntawm cov yam ntxwv tshiab ntsig txog cov lus qhia tsis tu ncua hauv ECMAScript 2018 tus qauv, Mozilla cov neeg tsim khoom xav txog yuav ua li cas kom yooj yim rau kev hloov pauv ntawm Irregexp. Raws li ib txoj hauv kev tawm, lub tswv yim wrapping tau thov, uas tso cai rau siv lub cav yuav luag tsis hloov Irregexp hauv SpiderMonkey (qhov kev hloov pauv tsuas yog txo qis rau qhov tsis siv neeg hloov ntawm "# suav nrog" blocks).

Mozilla tau hloov mus rau kev siv lub tshuab qhia ib txwm muaj nrog Chromium

Lub moj khaum muab Irregexp nrog rau qhov tsim nyog V8-tshwj xeeb muaj peev xwm, suav nrog kev tswj hwm kev nco thiab cov cim cim ua haujlwm, nrog rau cov ntaub ntawv keeb kwm uas tau siv los siv lub cim xeeb tswj cav, cov qauv tsim hluav taws xob, thiab kab laug sab Monkey cov qauv.

Kev hloov kho lub cav RegExp yuav tso cai rau Firefox los txhawb cov yam ntxwv xws li muaj npe ntes, Unicode cim chav kawm khiav, tus chij dotAll, thiab Lookbehind hom:

  • Cov pab pawg muaj npe tso cai rau koj mus koom qhov chaw ntawm ib txoj hlua sib tw los ntawm cov lus qhia tsis tu ncua nrog cov npe tshwj xeeb tsis yog cov lej sib tw (piv txwv li, tsis yog "/(\d{4})-(\d{2})-(\d{ 2})/" koj tuaj yeem qhia "/(? \d{4})-(? \d{2})-(? \d{2})/" thiab nkag mus rau lub xyoo tsis yog los ntawm qhov tshwm sim[1], tab sis los ntawm result.groups.year).
  • Kev khiav tawm cov chav kawm Cov cim Unicode ntxiv kev tsim kho \p{...} thiab \P{...}, piv txwv li, \p{Number} txhais tau hais tias tag nrho cov cim tau piav qhia cov lej (xws li cov cim xws li β‘ ), \p{Alphabetic} - cov tsiaj ntawv (xws li hieroglyphs ), \p{Math} β€” lej cim, thiab lwm yam.
  • Chij dotTxhua ua rau "." daim npog qhov ncauj rau hluav taws. suav nrog cov kab noj cov cim.
  • Hom Saib tom qab tso cai rau koj los txiav txim siab nyob rau hauv ib qho kev qhia tsis tu ncua uas ib tus qauv ua ntej lwm tus (piv txwv li, sib piv tus nqi duas tsis tau ntes tus lej kos npe).

Txoj haujlwm tau ua tiav nrog kev koom tes ntawm V8 cov neeg tsim khoom, uas, rau lawv txoj haujlwm, tau ua haujlwm los txo qhov kev cia siab ntawm Irregexp ntawm V8, thiab txav qee qhov nta uas tsis tuaj yeem siv tau siv SpiderMonkey rau hauv lov tes taw "#ifdef" blocks. Kev sib koom tes tau ua kom muaj txiaj ntsig zoo. Rau lawv feem, Mozilla cov neeg tsim khoom xa cov kev hloov pauv rau Irregexp uas tshem tawm qee qhov tsis sib xws nrog rau cov kev cai ntawm JavaScript tus qauv thiab kev txhim kho code zoo. Tsis tas li ntawd, thaum lub sij hawm fuzzing sim ntawm Firefox, yav tas los unnoticed yuam kev nyob rau hauv lub Irregexp code uas coj mus rau kev sib tsoo raug txheeb xyuas thiab tshem tawm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib