Mozilla သည် Chromium ပါသည့် သာမာန်ပုံမှန်ဖော်ပြချက်အင်ဂျင်ကို အသုံးပြုခဲ့သည်။

Firefox တွင်အသုံးပြုသော SpiderMonkey JavaScript အင်ဂျင် လွှဲပြောင်း လက်ရှိကုဒ်အပေါ်အခြေခံ၍ ပုံမှန်အသုံးအနှုန်းများ၏ မွမ်းမံထားသော အကောင်အထည်ဖော်မှုကို အသုံးပြုရန် Irregexp Chromium ပရောဂျက်ကို အခြေခံ၍ ဘရောက်ဆာများတွင် အသုံးပြုသည့် V8 JavaScript အင်ဂျင်မှ။ RegExp ၏ အကောင်အထည်ဖော်မှုအသစ်ကို ဇွန်လ 78 ရက်အတွက် စီစဉ်ထားသော Firefox 30 တွင် ကမ်းလှမ်းမည်ဖြစ်ပြီး၊ ပုံမှန်ဖော်ပြချက်များနှင့်ပတ်သက်သည့် ပျောက်ဆုံးနေသော ECMAScript ဒြပ်စင်အားလုံးကို browser သို့ ယူဆောင်လာမည်ဖြစ်သည်။

SpiderMonkey ရှိ RegExp အင်ဂျင်ကို သီးခြားအစိတ်အပိုင်းတစ်ခုအဖြစ် ဒီဇိုင်းထုတ်ထားပြီး၊ ၎င်းသည် ကုဒ်အခြေခံအား သိသာထင်ရှားသောပြောင်းလဲမှုများပြုလုပ်ရန်မလိုအပ်ဘဲ အစားထိုးရန်အတွက် အတော်လေးလွတ်လပ်ပြီး အစားထိုးရန်အတွက် သင့်လျော်ကြောင်း မှတ်သားရပါသည်။ Modularity သည် Firefox တွင် မူလအသုံးပြုခဲ့သည့် YARR RegExp အင်ဂျင်ကို V2014 မှ Irregexp အင်ဂျင်၏ခက်ရင်းဖြင့် အစားထိုးရန် 8 ခုနှစ်တွင် ဖြစ်နိုင်ချေရှိခဲ့သည်။ Irregexp သည် V8 API နှင့် ချိတ်ဆက်ထားပြီး အမှိုက်စုဆောင်းသူနှင့် ချိတ်ဆက်ထားပြီး V8-specific string ကိုယ်စားပြုမှုနှင့် အရာဝတ္ထုမော်ဒယ်ကို အသုံးပြုသည်။ 2014 ခုနှစ်တွင် အတွင်းပိုင်း SpiderMonkey API နှင့် လိုက်လျောညီထွေဖြစ်အောင် လုပ်ဆောင်နေစဉ်တွင်၊ Irregexp အင်ဂျင်ကို တစ်စိတ်တစ်ပိုင်း ပြန်လည်ရေးသားထားပြီး ဖြစ်နိုင်ပါက '\u' အလံကဲ့သို့သော ပေါ်ပေါက်လာသော အပြောင်းအလဲများ၊ လွှဲပြောင်း Mozilla က ထိန်းသိမ်းထားတဲ့ ခက်ရင်းမှာ။

ကံမကောင်းစွာပဲ၊ ထပ်တူကျသောလမ်းဆုံလမ်းခွကို ထိန်းသိမ်းထားရန်မှာ ခက်ခဲပြီး အရင်းအမြစ်များ အထူးလိုအပ်ပါသည်။ ECMAScript 2018 စံနှုန်းတွင် ပုံမှန်အသုံးအနှုန်းများနှင့် ပတ်သက်သည့် အင်္ဂါရပ်အသစ်များ ပေါ်ထွန်းလာသဖြင့် Mozilla developer များသည် Irregexp မှ အပြောင်းအလဲများကို ပိုမိုလွယ်ကူစွာ ရွှေ့ပြောင်းရန် မည်သို့ပြုလုပ်ရမည်ကို စဉ်းစားခဲ့ကြသည်။ ထွက်ပေါက်တစ်ခုအနေဖြင့် SpiderMonkey ရှိ မပြောင်းလဲလုနီးပါးရှိသော Irregexp အင်ဂျင်ကို အသုံးပြုခွင့်ပြုသည့် ထုပ်ပိုးမှုသဘောတရားကို အဆိုပြုခဲ့သည် (အပြောင်းအလဲများကို “#include” blocks ၏ အလိုအလျောက် အစားထိုးခြင်းအတွက်သာ လျှော့ချသည်)။

Mozilla သည် Chromium ပါသည့် သာမာန်ပုံမှန်ဖော်ပြချက်အင်ဂျင်ကို အသုံးပြုခဲ့သည်။

မူဘောင်သည် မှတ်ဉာဏ်စီမံခန့်ခွဲမှုနှင့် ကုဒ်ထုတ်လုပ်ခြင်းလုပ်ငန်းဆောင်တာများအပါအဝင် လိုအပ်သော V8-တိကျသောစွမ်းရည်များကို Irregexp ကို ပေးဆောင်ပြီး မှတ်ဉာဏ်စီမံခန့်ခွဲမှုအင်ဂျင်များ၊ ကုဒ်ထုတ်ပေးသည့်စနစ်များနှင့် SpiderMonkey ဖွဲ့စည်းပုံများကို အသုံးပြုထားသည့် မူရင်းဒေတာတည်ဆောက်ပုံများ ပါဝင်သည်။

RegExp အင်ဂျင်ကို အပ်ဒိတ်လုပ်ခြင်းသည် အမည်ပေးထားသည့် ဖမ်းယူမှုများ၊ ယူနီကုဒ် ဇာတ်ကောင် အတန်းအစား ထွက်ပြေးခြင်း၊ dotAll အလံ နှင့် Lookbehind မုဒ်ကဲ့သို့သော အင်္ဂါရပ်များကို ပံ့ပိုးပေးနိုင်သည်-

  • အမည်ပေးထားသော အဖွဲ့များ သင့်အား ကိုက်ညီသော အမှတ်စဉ်နံပါတ်များအစား ပုံမှန်အသုံးအနှုန်းဖြင့် ကိုက်ညီသော စာကြောင်းတစ်ကြောင်း၏ အစိတ်အပိုင်းများကို ပေါင်းစည်းခွင့်ပြုပါ (ဥပမာ၊ “/(\d{4})-(\d{2})-(\d{ 2})/" "/( ? \d{4})-(? \d{2})-(? \d{2})/" နှင့် ရလဒ်[1] မှတဆင့်မဟုတ်ဘဲ၊ result.groups.year မှတဆင့်) ရယူပါ။
  • အတန်းထွက်ပြေးခြင်း။ ယူနီကုဒ် အက္ခရာများ ပေါင်းထည့်ခြင်း \p{...} နှင့် \P{...}၊ ဥပမာ၊ \p{Number} သည် နံပါတ်များ (①ကဲ့သို့ စာလုံးများအပါအဝင်)၊ \p{Alphabetic} - စာလုံးများ (အပါအဝင်၊ hieroglyphs ), \p{Math} — သင်္ချာသင်္ကေတများ စသည်တို့။
  • အလံ dotAll "" မျက်နှာဖုံးကို မီးလောင်စေတယ်။ မျဉ်းစာအက္ခရာများ အပါအဝင်။
  • Режим နောက်ကိုကြည့် ပုံစံတစ်ခုသည် နောက်တစ်ခု၏ရှေ့တွင် ပုံမှန်အသုံးအနှုန်းတစ်ခုဖြင့် ဆုံးဖြတ်ရန်ခွင့်ပြုသည် (ဥပမာ၊ ဒေါ်လာငွေပမာဏနှင့် ကိုက်ညီသည်)။

အဆိုပါပရောဂျက်ကို V8 developer များ၏ပါ၀င်မှုဖြင့်လုပ်ဆောင်ခဲ့ပြီး ၎င်းတို့အနေဖြင့် V8 တွင် Irregexp ၏မှီခိုအားထားမှုကိုလျှော့ချရန်နှင့် SpiderMonkey ကိုအသုံးပြု၍အကောင်အထည်မဖော်နိုင်သောအချို့သောအင်္ဂါရပ်များကို "#ifdef" blocks များပိတ်ခြင်းသို့ပြောင်းရွှေ့ခဲ့သည်။ ပူးပေါင်းဆောင်ရွက်မှုသည် နှစ်ဦးနှစ်ဖက် အကျိုးရှိစေပါသည်။ ၎င်းတို့၏ အစိတ်အပိုင်းအတွက် Mozilla developer များသည် ပြောင်းလဲမှုအချို့ကို ဖယ်ရှားပေးသည့် Irregexp သို့ တင်သွင်းခဲ့သည်။ ရှေ့နောက်မညီမှုများ JavaScript စံသတ်မှတ်ချက်များနှင့် လိုအပ်ချက်များနှင့် တိုးတက်နေ ကုဒ်အရည်အသွေး။ ထို့အပြင်၊ Firefox ၏ fuzzing စမ်းသပ်မှုအတွင်း၊ ပျက်စီးမှုများဖြစ်စေသော Irregexp ကုဒ်ရှိ ယခင်ကသတိမပြုမိသောအမှားများကို ရှာဖွေဖော်ထုတ်ဖယ်ရှားခဲ့သည်။

source: opennet.ru

မှတ်ချက် Add