Mozilla skipti yfir í að nota algenga reglubundna tjáningarvél með Chromium

SpiderMonkey JavaScript vél notuð í Firefox þýtt að nota uppfærða útfærslu á reglulegum tjáningum byggða á núverandi kóða Irregexp frá V8 JavaScript vélinni sem notuð er í vöfrum sem byggja á Chromium verkefninu. Nýja útfærslan á RegExp verður boðin í Firefox 78, áætluð 30. júní, og mun koma öllum ECMAScript þáttum sem vantar sem tengjast reglulegum tjáningum í vafrann.

Tekið er fram að RegExp vélin í SpiderMonkey er hönnuð sem aðskilinn íhlutur, sem gerir hana tiltölulega sjálfstæða og hæfir til skiptis án þess að gera verulegar breytingar á kóðagrunninum. Modularity gerði það mögulegt árið 2014 að skipta út YARR RegExp vélinni sem upphaflega var notuð í Firefox fyrir gaffal af Irregexp vélinni frá V8. Irregexp er tengt við V8 API, tengt við sorphirðuna og notar V8-sértæka strengjaframsetningu og hlutlíkan. Í því ferli að aðlagast innra API SpiderMonkey árið 2014 var Irregexp vélin endurskrifuð að hluta og nýjar breytingar, svo sem „\u“ fáninn, þar sem hægt var. flutt inn í gaffal sem Mozilla hefur viðhaldið.

Því miður er erfitt og auðlindafrekt að viðhalda samstilltum gaffli. Með tilkomu nýrra eiginleika sem tengjast reglulegum tjáningum í ECMAScript 2018 staðlinum, hugsuðu Mozilla verktaki um hvernig hægt væri að gera það auðveldara að flytja breytingar frá Irregexp. Sem leið út var lagt til umbúðahugtak sem gerir kleift að nota næstum óbreytta Irregexp vél í SpiderMonkey (breytingarnar minnka aðeins við sjálfvirka skiptingu á "#include" kubbum).

Mozilla skipti yfir í að nota algenga reglubundna tjáningarvél með Chromium

Ramminn veitir Irregexp nauðsynlega V8-sértæka getu, þar á meðal minnisstjórnun og kóðaframleiðsluaðgerðir, auk innfæddra gagnabygginga sem eru útfærð með minnisstjórnunarvélum, kóðaframleiðendum og SpiderMonkey mannvirkjum.

Uppfærsla á RegExp vélinni mun leyfa Firefox að styðja eiginleika eins og nafngreindar handtökur, Unicode stafaflokksslepping, dotAll fánann og Lookbehind ham:

  • Nafngreindir hópar leyfa þér að tengja hluta strengs sem passa við reglulega segð við ákveðin nöfn í stað raðnúmera samsvörunar (til dæmis í stað “/(\d{4})-(\d{2})-(\d{ 2})/“ þú getur tilgreint „/( ? \d{4})-(? \d{2})-(? \d{2})/" og fáðu aðgang að árinu ekki í gegnum niðurstöðu[1], heldur í gegnum result.groups.year).
  • Flýjanleg námskeið Unicode stafir bæta við byggingu \p{...} og \P{...}, til dæmis, \p{Number} skilgreinir alla mögulega stafi sem sýna tölustafi (þar á meðal stafi eins og ①), \p{Stafrófsröð} - stafir (þar á meðal héroglyphs ), \p{Math} — stærðfræðileg tákn o.s.frv.
  • Flagga punkturAllt veldur því að "." gríman kviknar. þar á meðal stafi línustraums.
  • Ham Horfðu á bak gerir þér kleift að ákvarða í reglulegri tjáningu að eitt mynstur komi á undan öðru (td að passa við dollaraupphæð án þess að fanga dollaramerkið).

Verkefnið var unnið með þátttöku V8 forritara, sem fyrir sitt leyti unnu að því að draga úr ósjálfstæði Irregexp á V8, og færðu nokkra eiginleika sem ekki er hægt að útfæra með SpiderMonkey í slökkva á „#ifdef“ blokkum. Samstarfið reyndist gagnkvæmt. Fyrir sitt leyti lögðu Mozilla fram breytingar á Irregexp sem útrýma sumum ósamræmi með kröfum JavaScript staðalsins og batnar kóða gæði. Einnig, við óljós prófun á Firefox, voru áður óséðar villur í Irregexp kóðanum sem leiddu til hruns auðkenndar og eytt.

Heimild: opennet.ru

Bæta við athugasemd