Ang Mozilla mibalhin sa paggamit sa usa ka komon nga regular nga ekspresyon nga makina sa Chromium

SpiderMonkey JavaScript nga makina nga gigamit sa Firefox gibalhin sa paggamit sa usa ka updated nga pagpatuman sa regular nga mga ekspresyon base sa kasamtangan nga code Irregexp gikan sa V8 JavaScript engine nga gigamit sa mga browser base sa proyekto sa Chromium. Ang bag-ong pagpatuman sa RegExp itanyag sa Firefox 78, nga gikatakda sa Hunyo 30, ug dad-on ang tanang nawala nga elemento sa ECMAScript nga may kalabutan sa regular nga mga ekspresyon ngadto sa browser.

Namatikdan nga ang RegExp nga makina sa SpiderMonkey gidisenyo isip usa ka bulag nga sangkap, nga naghimo niini nga medyo independente ug angay alang sa pag-ilis nga dili kinahanglan nga maghimo hinungdanon nga mga pagbag-o sa base sa code. Ang modularity nahimong posible sa 2014 aron mapulihan ang YARR RegExp engine nga orihinal nga gigamit sa Firefox gamit ang fork sa Irregexp engine gikan sa V8. Ang Irregexp gihigot sa V8 API, gihigot sa garbage collector, ug naggamit ug V8-specific string representation ug object model. Sa proseso sa pagpahiangay sa internal nga SpiderMonkey API sa 2014, ang Irregexp nga makina kay partially rewritten, ug mitumaw nga mga kausaban, sama sa '\u' flag, kung mahimo. gibalhin ngadto sa usa ka tinidor nga gimintinar sa Mozilla.

Ikasubo, ang pagpadayon sa usa ka synchronized nga tinidor lisud ug kusog sa kapanguhaan. Uban sa pag-abut sa bag-ong mga bahin nga may kalabutan sa regular nga mga ekspresyon sa ECMAScript 2018 nga sumbanan, ang mga developer sa Mozilla naghunahuna kung unsaon paghimo nga mas sayon ​​​​sa pagbalhin sa mga pagbag-o gikan sa Irregexp. Isip usa ka paagi sa paggawas, gisugyot ang usa ka konsepto sa pagputos, nga nagtugot sa paggamit sa halos wala mausab nga Irregexp nga makina sa SpiderMonkey (ang mga pagbag-o gikunhoran lamang sa awtomatik nga pagpuli sa "#include" nga mga bloke).

Ang Mozilla mibalhin sa paggamit sa usa ka komon nga regular nga ekspresyon nga makina sa Chromium

Ang balangkas naghatag sa Irregexp sa gikinahanglan nga V8-specific nga mga kapabilidad, lakip ang pagdumala sa memorya ug mga function sa paghimo sa code, ingon man ang mga istruktura sa lumad nga datos nga gipatuman gamit ang mga makina sa pagdumala sa memorya, mga generator sa code, ug mga istruktura sa SpiderMonkey.

Ang pag-update sa RegExp nga makina magtugot sa Firefox sa pagsuporta sa mga feature sama sa ginganlan nga mga kuha, Unicode character class escaping, ang dotAll flag, ug Lookbehind mode:

  • Ginganlan nga mga grupo nagtugot kanimo sa pag-asoy sa mga bahin sa usa ka hilo nga gipares sa usa ka regular nga ekspresyon nga adunay piho nga mga ngalan imbes sa mga serial number sa mga posporo (pananglitan, imbes nga "/(\d{4})-(\d{2})-(\d{ 2})/" mahimo nimong itakda ang "/( ? \d{4})-(? \d{2})-(? \d{2})/" ug i-access ang tuig dili pinaagi sa resulta[1], kondili pinaagi sa result.groups.year).
  • Pag-ikyas sa mga klase Ang mga karakter sa Unicode nagdugang mga konstruksyon \p{...} ug \P{...}, pananglitan, \p{Number} naghubit sa tanang posibleng karakter nga naghulagway sa mga numero (lakip ang mga simbolo sama sa ①), \p{Alphabetic} - mga letra (lakip ang hieroglyphs ), \p{Math} — mga simbolo sa matematika, ug uban pa.
  • Flag dotTanan hinungdan sa "." maskara sa pagsunog. lakip ang mga linya sa feed nga mga karakter.
  • Linya Tan-aw sa luyo nagtugot kanimo sa pagtino sa usa ka regular nga ekspresyon nga ang usa ka sumbanan nag-una sa lain (pananglitan, pagpares sa usa ka dolyar nga kantidad nga dili makuha ang dolyar nga timaan).

Ang proyekto gihimo uban ang partisipasyon sa mga developer sa V8, kinsa, sa ilang bahin, nagtrabaho aron makunhuran ang pagsalig sa Irregexp sa V8, ug gibalhin ang pipila ka mga bahin nga dili mapatuman base sa SpiderMonkey sa pag-disable sa "#ifdef" nga mga bloke. Ang kooperasyon nahimo nga mutually beneficial. Sa ilang bahin, ang mga developer sa Mozilla nagsumite sa mga pagbag-o sa Irregexp nga nagwagtang sa pipila mga inconsistency uban ang mga kinahanglanon sa sumbanan sa JavaScript ug pagpalambo kalidad sa code. Usab, sa panahon sa dili maayo nga pagsulay sa Firefox, ang kaniadto wala mamatikdi nga mga sayup sa Irregexp code nga misangpot sa mga pag-crash giila ug giwagtang.

Source: opennet.ru

Idugang sa usa ka comment