Ua hoʻololi ʻo Mozilla i ka hoʻohana ʻana i ka mīkini ʻōlelo maʻamau me Chromium

SpiderMonkey JavaScript engine i hoʻohana ʻia ma Firefox hoʻoili ʻia e hoʻohana i ka hoʻokō hou ʻana o nā ʻōlelo maʻamau e pili ana i ke code o kēia manawa Irregexp mai ka mīkini JavaScript V8 i hoʻohana ʻia i nā polokalamu kele pūnaewele e pili ana i ka papahana Chromium. E hāʻawi ʻia ka hoʻokō hou o RegExp ma Firefox 78, i hoʻonohonoho ʻia no Iune 30, a e lawe mai i nā mea āpau ECMAScript i nalowale e pili ana i nā ʻōlelo maʻamau i ka polokalamu kele pūnaewele.

Hoʻomaopopo ʻia ua hoʻolālā ʻia ka mīkini RegExp ma SpiderMonkey ma ke ʻano he ʻāpana ʻokoʻa, kahi e kūʻokoʻa kūʻokoʻa ai a kūpono no ka hoʻololi ʻana me ka ʻole o ka pono e hoʻololi nui i ke kumu code. Ua hiki i ka Modularity i ka makahiki 2014 ke hoʻololi i ka ʻenekini YARR RegExp i hoʻohana mua ʻia ma Firefox me kahi mākia o ka ʻenekini Irregexp mai V8. Hoʻopili ʻia ʻo Irregexp i ka V8 API, nakinaki ʻia i ka ʻohi ʻōpala, a hoʻohana i kahi hōʻike kikoʻī kikoʻī V8 a me ke kumu hoʻohālike. Ma ke kaʻina hana o ka hoʻololi ʻana i ka API kūloko o SpiderMonkey i ka makahiki 2014, ua kākau ʻia ka ʻenekini Irregexp, a me nā loli e puka mai ana, e like me ka hae '\u', inā hiki. hoʻoili ʻia i loko o kahi mākia i mālama ʻia e Mozilla.

ʻO ka mea pōʻino, paʻakikī a paʻakikī ka mālama ʻana i kahi fork synchronized. Me ka hiki ʻana mai o nā hiʻohiʻona hou e pili ana i nā hōʻike maʻamau i ka maʻamau ECMAScript 2018, ua noʻonoʻo nā mea hoʻomohala ʻo Mozilla pehea e maʻalahi ai ka neʻe ʻana i nā loli mai Irregexp. Ma ke ʻano he ala i waho, ua manaʻo ʻia kahi manaʻo wīwī, e hiki ai ke hoʻohana i ka ʻenekini Irregexp kokoke ʻole i hoʻololi ʻia ma SpiderMonkey (ua hoʻemi ʻia nā loli i ka hoʻololi ʻana i nā poloka "#include").

Ua hoʻololi ʻo Mozilla i ka hoʻohana ʻana i ka mīkini ʻōlelo maʻamau me Chromium

Hāʻawi ka framework iā Irregexp i nā mana pono V8-specific, me ka mālama ʻana i ka hoʻomanaʻo a me ka hana code generation, a me nā hale ʻikepili maoli i hoʻokō ʻia me ka hoʻohana ʻana i nā mīkini hoʻomanaʻo hoʻomanaʻo, nā code generators, a me nā hale SpiderMonkey.

ʻO ka hoʻonui ʻana i ka ʻenekini RegExp e ʻae iā Firefox e kākoʻo i nā hiʻohiʻona e like me ka hopu ʻana i ka inoa, ka holo ʻana o ka papa inoa Unicode, ka hae dotAll, a me ke ʻano Lookbehind:

  • Nā hui i kapa ʻia ʻae iā ʻoe e hoʻohui i nā ʻāpana o kahi kaula i hoʻohālikelike ʻia e ka ʻōlelo maʻamau me nā inoa kikoʻī ma kahi o nā helu serial o nā pāʻani (no ka laʻana, ma kahi o "/(\d{4})-(\d{2})-(\d{ 2})/" hiki iā ʻoe ke kuhikuhi i ka "/( ? \d{4})-(? \d{2})-(? \d{2})/" a komo i ka makahiki ʻaʻole ma ka hopena[1], akā ma ka result.groups.year).
  • Pakele i na papa Hoʻohui nā huaʻōlelo Unicode i nā hana \p{...} a me \P{...}, no ka laʻana, \p{Number} wehewehe i nā mea hiki ke hōʻike i nā helu (me nā huaʻōlelo e like me ①), \p{Alphabetic} - nā leka (me ka hieroglyphs ), \p{Math} — hōʻailona makemakika, etc.
  • Ho'āka dotAll ke ahi ka "." mask. me nā huapalapala hānai laina.
  • Hāloa Nānā hope hiki iā ʻoe ke hoʻoholo ma kahi ʻōlelo maʻamau i mua o kekahi kumu ma mua o kekahi (e like me ka hoʻohālikelike ʻana i kahi kālā me ka ʻole o ka hopu ʻana i ka hōʻailona kālā).

Ua hoʻokō ʻia ka papahana me ke komo ʻana o nā mea hoʻomohala V8, ka mea, no kā lākou ʻāpana, i hana e hōʻemi i ka hilinaʻi o Irregexp ma V8, a hoʻoneʻe i kekahi mau hiʻohiʻona i hiki ʻole ke hoʻokō ʻia me ka SpiderMonkey i hoʻopau i nā poloka "#ifdef". Ua lilo ka launa pū ʻana i mea e pono ai kekahi. No kā lākou ʻāpana, ua hoʻouna nā mea hoʻomohala Mozilla i nā loli iā Irregexp e hoʻopau i kekahi kulike ole me nā koi o ka maʻamau JavaScript a hoʻomaikaʻi maikaʻi code. Eia kekahi, i ka wā o ka hoʻāʻo ʻana o Firefox, ua ʻike ʻia a hoʻopau ʻia nā hewa i ʻike ʻole ʻia ma ke code Irregexp i alakaʻi ai i nā ulia.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka