Mozilla نے Chromium کے ساتھ ایک عام ریگولر ایکسپریشن انجن استعمال کرنے پر سوئچ کیا۔

SpiderMonkey JavaScript انجن فائر فاکس میں استعمال ہوتا ہے۔ منتقل موجودہ کوڈ کی بنیاد پر ریگولر ایکسپریشنز کا اپ ڈیٹ نفاذ استعمال کرنے کے لیے Irregexp Chromium پروجیکٹ کی بنیاد پر براؤزرز میں استعمال ہونے والے V8 JavaScript انجن سے۔ RegExp کا نیا نفاذ Firefox 78 میں پیش کیا جائے گا، جو 30 جون کو شیڈول ہے، اور براؤزر میں ریگولر ایکسپریشن سے متعلق تمام غائب ECMAScript عناصر کو لے آئے گا۔

واضح رہے کہ SpiderMonkey میں RegExp انجن کو ایک الگ پرزے کے طور پر ڈیزائن کیا گیا ہے، جو اسے نسبتاً خود مختار اور کوڈ بیس میں اہم تبدیلیوں کی ضرورت کے بغیر تبدیلی کے لیے موزوں بناتا ہے۔ ماڈیولریٹی نے 2014 میں فائر فاکس میں اصل میں استعمال ہونے والے YARR RegExp انجن کو V8 سے Irregexp انجن کے کانٹے سے تبدیل کرنا ممکن بنایا۔ Irregexp V8 API سے منسلک ہے، کوڑا کرکٹ جمع کرنے والے سے منسلک ہے، اور V8 مخصوص سٹرنگ کی نمائندگی اور آبجیکٹ ماڈل استعمال کرتا ہے۔ 2014 میں اندرونی SpiderMonkey API کو اپنانے کے عمل میں، Irregexp انجن کو جزوی طور پر دوبارہ لکھا گیا، اور ابھرتی ہوئی تبدیلیاں، جیسے '\u' پرچم، جہاں ممکن ہو منتقل موزیلا کے زیر انتظام کانٹے میں۔

بدقسمتی سے، ایک مطابقت پذیر فورک کو برقرار رکھنا مشکل اور وسائل کا حامل ہے۔ ECMAScript 2018 کے معیار میں ریگولر ایکسپریشنز سے متعلق نئی خصوصیات کی آمد کے ساتھ، Mozilla کے ڈویلپرز نے سوچا کہ Irregexp سے تبدیلیوں کو منتقل کرنا آسان کیسے بنایا جائے۔ باہر نکلنے کے راستے کے طور پر، ایک لپیٹنے کا تصور تجویز کیا گیا تھا، جو SpiderMonkey میں تقریباً غیر تبدیل شدہ Irregexp انجن کو استعمال کرنے کی اجازت دیتا ہے (تبدیلیوں کو صرف "#include" بلاکس کی خودکار تبدیلی تک کم کیا جاتا ہے)۔

Mozilla نے Chromium کے ساتھ ایک عام ریگولر ایکسپریشن انجن استعمال کرنے پر سوئچ کیا۔

فریم ورک Irregexp کو ضروری V8 مخصوص صلاحیتوں کے ساتھ فراہم کرتا ہے، بشمول میموری مینجمنٹ اور کوڈ جنریشن فنکشنز، نیز مقامی ڈیٹا ڈھانچے جو میموری مینجمنٹ انجن، کوڈ جنریٹرز، اور SpiderMonkey ڈھانچے کے استعمال سے لاگو ہوتے ہیں۔

RegExp انجن کو اپ ڈیٹ کرنے سے Firefox کو فیچرز کو سپورٹ کرنے کی اجازت ملے گی جیسے کہ نامزد کیپچرز، یونیکوڈ کریکٹر کلاس ایسکیپنگ، ڈاٹ آل فلیگ، اور Lookbehind موڈ:

  • نامزد گروپس آپ کو مماثلت کے سیریل نمبروں کی بجائے مخصوص ناموں کے ساتھ ریگولر ایکسپریشن سے مماثل اسٹرنگ کے حصوں کو منسلک کرنے کی اجازت دیتا ہے (مثال کے طور پر، "/(\d{4})-(\d{2})-(\d{ 2})/" آپ وضاحت کر سکتے ہیں "/( ? \d{4})-(؟ \d{2})-(؟ \d{2})/" اور سال تک رسائی حاصل کریں نتیجہ [1] کے ذریعے نہیں، بلکہ result.groups.year کے ذریعے)۔
  • کلاسوں سے فرار یونیکوڈ حروف تعمیرات \p{...} اور \P{...} کو شامل کرتے ہیں، مثال کے طور پر، \p{Number} اعداد کو ظاہر کرنے والے تمام ممکنہ حروف کی وضاحت کرتا ہے (بشمول ① جیسے حروف)، \p{حروف تہجی} - حروف (بشمول hieroglyphs )، \p{Math} — ریاضی کی علامتیں، وغیرہ۔
  • پرچم ڈاٹ آل "." ماسک کو آگ لگانے کا سبب بنتا ہے۔ لائن فیڈ حروف سمیت۔
  • وضع۔ پیچھے دیکھئے آپ کو باقاعدہ اظہار میں یہ تعین کرنے کی اجازت دیتا ہے کہ ایک پیٹرن دوسرے سے پہلے ہے (مثال کے طور پر، ڈالر کے نشان کو پکڑے بغیر ڈالر کی رقم سے مماثل ہونا)۔

یہ پروجیکٹ V8 ڈویلپرز کی شرکت کے ساتھ انجام دیا گیا، جنہوں نے اپنی طرف سے، V8 پر Irregexp کے انحصار کو کم کرنے کے لیے کام کیا، اور کچھ ایسے فیچرز کو منتقل کیا جو SpiderMonkey کے استعمال سے غیر فعال "#ifdef" بلاکس میں لاگو نہیں کیے جا سکتے۔ یہ تعاون باہمی طور پر فائدہ مند ثابت ہوا۔ اپنے حصے کے لیے، موزیلا ڈویلپرز نے Irregexp میں تبدیلیاں جمع کرائیں جو کچھ کو ختم کرتی ہیں۔ تضادات جاوا اسکرپٹ کے معیار کی ضروریات کے ساتھ اور بہتر کرنا کوڈ کا معیار اس کے علاوہ، فائر فاکس کی فزنگ ٹیسٹنگ کے دوران، Irregexp کوڈ میں پہلے سے کسی کا دھیان نہیں دیا گیا تھا جو کریشز کا باعث بنی تھیں اور ان کو ختم کر دیا گیا تھا۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں