Mozilla idasinthiratu kugwiritsa ntchito injini yanthawi zonse yokhala ndi Chromium

SpiderMonkey JavaScript injini yogwiritsidwa ntchito mu Firefox kusamutsidwa kugwiritsa ntchito kukhazikitsidwa kosinthidwa kwa mawu okhazikika kutengera ma code omwe alipo Irregexp kuchokera pa injini ya V8 JavaScript yomwe imagwiritsidwa ntchito pakusakatula kutengera pulojekiti ya Chromium. Kukhazikitsa kwatsopano kwa RegExp kudzaperekedwa mu Firefox 78, yomwe idakonzedwa pa Juni 30, ndipo ibweretsa zinthu zonse zomwe zikusowa ECMAScript zokhudzana ndi mawu okhazikika pa msakatuli.

Zimadziwika kuti injini ya RegExp mu SpiderMonkey idapangidwa ngati gawo losiyana, lomwe limapangitsa kuti likhale lodziyimira pawokha komanso loyenera kusinthidwa popanda kufunikira kosintha kwambiri pama code. Modularity idapangitsa kuti mu 2014 isinthe injini ya YARR RegExp yomwe idagwiritsidwa ntchito mu Firefox ndi foloko ya injini ya Irregexp kuchokera ku V8. Irregexp imamangiriridwa ku V8 API, yomangirizidwa kwa otolera zinyalala, ndipo imagwiritsa ntchito chingwe choyimira cha V8 ndi mtundu wa chinthu. Munjira yosinthira ku SpiderMonkey's API yamkati mu 2014, injini ya Irregexp idalembedwanso pang'ono, ndikusintha komwe kukubwera, monga mbendera ya '\u', ngati nkotheka. kusamutsidwa mu foloko yosungidwa ndi Mozilla.

Tsoka ilo, kusunga foloko yolumikizidwa ndizovuta komanso kumafuna zambiri. Kubwera kwa zinthu zatsopano zokhudzana ndi mawu okhazikika mu muyezo wa ECMAScript 2018, opanga Mozilla adaganiza za momwe angapangire kukhala kosavuta kusamuka ku Irregexp. Monga njira yotulukira, lingaliro lokulunga lidapangidwa, lomwe limalola kugwiritsa ntchito injini ya Irregexp yosasinthika ku SpiderMonkey (zosinthazo zimachepetsedwa pokhapokha kusinthidwa kwa "#include" midadada).

Mozilla idasinthiratu kugwiritsa ntchito injini yanthawi zonse yokhala ndi Chromium

Chikhazikitsochi chimapereka Irregexp ndi zofunikira zenizeni za V8, kuphatikizapo kasamalidwe ka kukumbukira ndi ntchito zopanga ma code, komanso mapangidwe a deta omwe amagwiritsidwa ntchito pogwiritsa ntchito makina osungira kukumbukira, makina opanga ma code, ndi SpiderMonkey.

Kukonzanso injini ya RegExp kudzalola Firefox kuthandizira zinthu monga zojambula zotchulidwa, gulu la Unicode kuthawa, mbendera ya dotAll, ndi mawonekedwe a Lookbehind:

  • Magulu otchulidwa zimakulolani kuti muyanjanitse zigawo za chingwe chofanana ndi mawu okhazikika okhala ndi mayina enaake m'malo mwa manambala ofananira (mwachitsanzo, m'malo mwa β€œ/(\d{4})-(\d{2})-(\d{ 2})/” mutha kufotokoza β€œ/( ? \d{4})-(? \d{2})-(? \d{2})/" ndikupeza chaka osati zotsatira[1], koma kudzera mu result.groups.year).
  • Maphunziro othawa Zilembo za Unicode zimawonjezera zomanga \p{...} ndi \P{...}, mwachitsanzo, \p{Number} imatanthauzira zilembo zonse zomwe zikuwonetsa manambala (kuphatikiza zizindikiro monga β‘ ), \p{Zilembo} - zilembo (kuphatikiza hieroglyphs ), \p{Math} - zizindikiro za masamu, ndi zina zotero.
  • Sakanizani dotAll zimayambitsa "." mask kuyatsa moto. kuphatikiza zilembo za feed line.
  • Njira Yang'anani kumbuyo kumakupatsani mwayi wodziwa m'mawu okhazikika kuti chitsanzo chimodzi chimatsogola china (mwachitsanzo, kufananiza ndalama za dollar popanda kutenga chizindikiro cha dola).

Pulojekitiyi inachitika ndi kutenga nawo mbali kwa opanga V8, omwe, nawonso, adagwira ntchito kuti achepetse kudalira kwa Irregexp pa V8, ndikusuntha zinthu zina zomwe sizingagwiritsidwe ntchito pogwiritsa ntchito SpiderMonkey kuletsa "#ifdef" midadada. Mgwirizanowo unakhala wopindulitsa onse. Kwa iwo, opanga Mozilla adapereka zosintha ku Irregexp zomwe zimachotsa zina zosagwirizana ndi zofunikira za JavaScript standard ndi kukonza kodi quality. Komanso, pakuyesa kwachangu kwa Firefox, zolakwika zomwe sizinawonekere mu code ya Irregexp zomwe zidayambitsa ngozi zidadziwika ndikuchotsedwa.

Source: opennet.ru

Kuwonjezera ndemanga