Mozilla bi Chromium-ê re motorek birêkûpêk a hevpar bikar tîne

SpiderMonkey motora JavaScript-ê di Firefox-ê de tê bikar anîn veguhestin ji bo pêkanîna nûvekirina vegotinên birêkûpêk li ser bingeha koda heyî bikar bînin Irregexp ji motora V8 JavaScript-ê ku di gerokên ku li ser bingeha projeya Chromium-ê de têne bikar anîn. Pêkanîna nû ya RegExp dê di Firefox 78-ê de, ku ji bo 30-ê Hezîranê ve hatî plansaz kirin, were pêşkêş kirin, û dê hemî hêmanên winda yên ECMAScript-ê yên têkildarî vegotinên birêkûpêk bi gerokê re bîne.

Tê zanîn ku motora RegExp di SpiderMonkey de wekî pêkhateyek veqetandî hatî sêwirandin, ku ew ji bo veguheztinê bi rengek serbixwe û maqûl dike bêyî ku hewce bike ku di bingeha kodê de guhertinên girîng çêbike. Modulariyê di sala 2014-an de mimkun kir ku motora YARR RegExp ku bi eslê xwe di Firefox-ê de hatî bikar anîn bi forkek motora Irregexp ji V8-ê veguhezîne. Irregexp bi V8 API-yê ve girêdayî ye, bi berhevkarê çopê ve girêdayî ye, û nûneriya stêr û modela objektê ya V8-a taybetî bikar tîne. Di pêvajoya adaptasyona bi API-ya navxweyî ya SpiderMonkey-ê di sala 2014-an de, motora Irregexp bi qismî ji nû ve hate nivîsandin, û li ku derê gengaz be, guhertinên derketine, mîna ala '\u' veguhestin nav forkek ku ji hêla Mozilla ve tê parastin.

Mixabin, domandina forkek hevdemkirî dijwar û çavkaniyek zexm e. Bi hatina taybetmendiyên nû yên têkildarî vegotinên birêkûpêk ên di standarda ECMAScript 2018 de, pêşdebirên Mozilla fikirîn ku meriv çawa guheztina guhartinan ji Irregexp hêsantir dike. Wekî rêyek derketinê, têgehek pêçandî hate pêşniyar kirin, ku destûrê dide karanîna motora Irregexp-a hema-neguherî ya li SpiderMonkey (guhartin tenê bi veguheztina otomatîkî ya blokên "#include" kêm dibin).

Mozilla bi Chromium-ê re motorek birêkûpêk a hevpar bikar tîne

Çarçove kapasîteyên pêwîst ên V8-taybetî Irregexp peyda dike, di nav de rêveberiya bîranînê û fonksiyonên hilberîna kodê, û her weha strukturên daneya xwecihî yên ku bi karanîna motorên rêveberiya bîranînê, jeneratorên kodê, û strukturên SpiderMonkey têne bicîh kirin.

Nûvekirina motora RegExp dê bihêle Firefox piştgirî bide taybetmendiyên wekî girtina binavkirî, revîna pola karaktera Unicode, ala dotAll, û moda Lookbehind:

  • Komên bi navê destûrê dide te ku li şûna hejmarên rêzikan ên lihevhatinan, beşên rêzikan bi navên birêkûpêk ve bi navên taybetî ve girêbide (mînak, li şûna "/(\d{4})-(\d{2})-(\d{ 2})/" hûn dikarin "/( ? \d{4})-(? \d{2})-(? \d{2})/" û ne bi encama[1], lê bi riya result.groups.year ve bigihîje salê).
  • Ders direvin Karakterên Unicode avahîyan lê zêde dikin \p{...} û \P{...}, mînakî, \p{Hejmar} hemî tîpên gengaz diyar dike ku hejmaran (tevî tîpên wek ①), \p{Alfabetîk} - tîpan (tevî hieroglif ), \p{Math} - sembolên matematîkî, hwd.
  • Flag dotAll dibe sedem ku maskeya "." bişewite. di nav de tîpên feed line.
  • Mode Li paş xwe binêre dihêle hûn bi vegotinek birêkûpêk diyar bikin ku nimûneyek li pêşiya ya din e (mînak, berhevkirina mîqdarek dolar bêyî ku nîşana dolaran bigire).

Proje bi beşdariya pêşdebirên V8, yên ku, ji hêla xwe ve, xebitîn ku girêdayîbûna Irregexp bi V8 kêm bikin, û hin taybetmendiyên ku bi karanîna SpiderMonkey nekarin werin bicîh kirin veguheztin blokên "#ifdef" neçalak kirin. Hevkarî ji bo hev sûdmend derket holê. Ji hêla xwe ve, pêşdebirên Mozilla guheztinên Irregexp şandin ku hinan ji holê radikin nakokiyên bi daxwazên standard JavaScript û başkirin kalîteya kodê. Di heman demê de, di dema ceribandina fuzzingê ya Firefoxê de, di koda Irregexp de xeletiyên berê yên nedîtî yên ku bûne sedema têkçûn hatin tespît kirin û rakirin.

Source: opennet.ru

Add a comment