Mozilla ka kaluar në përdorimin e motorit të përbashkët të shprehjeve të zakonshme me Chromium

Motori i JavaScript-it të përdorur në Firefox, SpiderMonkey u përkthye në përdorimin e një implementimi të ri të shprehjeve të zakonshme, të bazuar në kodin aktual Irregexp nga motori JavaScript V8, i përdorur në shfletuesit që bazohen në projektin Chromium. Implementimi i ri i RegExp do të prezantohet në versionin Firefox 78, i parashikuar më 30 qershor, dhe do të lejojë realizimin në shfletues të të gjitha elementeve të munguar ECMAScript që lidhen me shprehjet e zakonshme.

VĂ«rehet se motori RegExp nĂ« SpiderMonkey Ă«shtĂ« organizuar si njĂ« komponent i veçantĂ«, çka e bĂ«n atĂ« relativisht tĂ« pavarur dhe tĂ« pĂ«rshtatshĂ«m pĂ«r zĂ«vendĂ«sim pa pasur nevojĂ« pĂ«r ndryshime tĂ« rĂ«ndĂ«sishme nĂ« bazĂ«n e kodit. Modularity i mundĂ«soi nĂ« vitin 2014 zĂ«vendĂ«simin e motorit tĂ« parĂ« RegExp YARR tĂ« pĂ«rdorur nĂ« Firefox me njĂ« fork nga motori Irregexp i V8. Irregexp Ă«shtĂ« i lidhur me API-nĂ« e V8, i lidhur me mbledhĂ«sin e plehrave, pĂ«rdor njĂ« pĂ«rfaqĂ«sim specifik pĂ«r V8 tĂ« vargjeve dhe modelin e objekteve. GjatĂ« procesit tĂ« adaptimit nĂ« API-nĂ« e brendshme SpiderMonkey nĂ« vitin 2014, motori Irregexp u rishkrua pjesĂ«risht, dhe ndryshimet qĂ« shfaqeshin, si flag ‘\u’, pĂ«r sa tĂ« jetĂ« e mundur u transferuan nĂ« njĂ« degĂ« tĂ« mbĂ«shtetur nga Mozilla.

Fatkeqësisht, mbajtja e një forke të sinkronizuar është një detyrë e vështirë dhe mbështetja e saj kërkon shumë burime. Me paraqitjen e mundësive të reja në standardin ECMAScript 2018 në lidhje me shprehjet e rregullta, zhvilluesit e Mozilla menduan se si mund të lehtësohet transferimi i ndryshimeve nga Irregexp. Si zgjidhje, u propozua koncepti i përshtatjes, i cili lejon përdorimin në SpiderMonkey të motorit Irregexp pothuajse pa ndryshime (ndryshimet reduktohen vetëm në zëvendësimin automatik të blloqeve «#include»).

Mozilla ka kaluar në përdorimin e motorit të përbashkët të shprehjeve të zakonshme me Chromium

Përshtatja ofron për Irregexp funksionalitetet e nevojshme specifike të V8, duke përfshirë funksionet e menaxhimit të memories dhe gjenerimin e kodit, si dhe strukturat origjinale të të dhënave, të cilat janë implementuar mbi mekanizmat e menaxhimit të memories, gjeneratorëve të kodit dhe strukturave të SpiderMonkey.

Përditësimi i motorit RegExp do të mundësojë në Firefox mbështetje për mundësi të tilla si grupet me emra (named captures), ekranuar klasat e simboleve Unicode, flag dotAll dhe mënyra Lookbehind:

  • Grupet me emra lejojnĂ« lidhjen e pjesĂ«ve tĂ« rreshtit tĂ« pĂ«rputhura me shprehje tĂ« rregullta me emra tĂ« caktuar nĂ« vend tĂ« numrave tĂ« rendit tĂ« pĂ«rputhjes (p.sh., nĂ« vend tĂ« «/(\d{4})-(\d{2})-(\d{2})/» mund tĂ« pĂ«rdoret «/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/» dhe tĂ« aksesosh vitin jo pĂ«rmes result[1], por pĂ«rmes result.groups.year).
  • Ekranimi i klaseve Simbolet Unicode shtojnĂ« konstruksione \p{
} dhe \P{
}, pĂ«r shembull, \p{Number} pĂ«rcakton tĂ« gjithĂ« shenjat e mundshme me pamje digjitale (pĂ«rfshirĂ« simbolet si ①), \p{Alphabetic} — shkronjat (pĂ«rfshirĂ« hieroglifet), \p{Math} — simbolet matematikore etj.
  • Flamuri dotAll çon nĂ« aktivizimin e maskĂ«s «.» pĂ«rfshirĂ« simbolet e ndĂ«rrimit tĂ« rreshtit.
  • ReĆŸimi Lookbehind lejon pĂ«rcaktimin nĂ« shprehjen e rregullt se njĂ« model i caktuar e paraprin njĂ« tjetĂ«r (p.sh., pĂ«r tĂ« pĂ«rputhur shumĂ«n nĂ« dollarĂ« pa kapur shenjĂ«n e dollarit).

Projekti u realizua me ndihmën e zhvilluesve V8, të cilët nga ana e tyre punuan për të reduktuar varësinë e Irregexp nga V8, dhe transferuan disa veçori që nuk mund të implementohen mbi bazën e SpiderMonkey në blloqet e çaktivizuara «#ifdef». Bashkëpunimi rezultoi të ishte në të dyja palët e favorshme. Nga ana e tyre, zhvilluesit e Mozilla kaluan në Irregexp ndryshime që eliminojnë disa mosakordime me kërkesat e standardit JavaScript dhe përmirësojnë cilësinë e kodit. Gjithashtu, gjatë testimit fuzzing të Firefox, ishin identifikuar dhe eliminuar gabime të mëparshme të paobservuara në kodin Irregexp, që çonin në kthesa.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster