روبی کوڈ بیس نے نئے جے آئی ٹی کمپائلر زیڈ جے آئی ٹی کو اپنایا

ایک نیا JIT مرتب کرنے والا، ZJIT، روبی لینگویج ریفرنس کے نفاذ کوڈ بیس میں شامل کیا گیا ہے اور اسے روبی جے آئی ٹی کی اگلی نسل کے طور پر رکھا گیا ہے۔ ZJIT کو Ruby 3.5 کی اگلی بڑی ریلیز میں شامل کیا جائے گا، جہاں یہ YJIT JIT کمپائلر کے ساتھ ایک آپشن کے طور پر دستیاب ہوگا، اور اسے Ruby 3.6 میں بدل سکتا ہے۔ YJIT کی طرح، نیا JIT کمپائلر Rust میں لکھا گیا ہے۔ دونوں JIT کمپائلرز کو Shopify میں ڈویلپرز کی ایک ٹیم نے روبی پروگراموں کی کارکردگی کو بہتر بنانے کے اقدام کے حصے کے طور پر بنایا تھا جو ریل فریم ورک کا استعمال کرتے ہیں اور بہت سے طریقوں کو کال کرتے ہیں۔

YJIT کے برعکس، نیا JIT کمپائلر YARV ورچوئل مشین بائیک کوڈ کو کم سطحی انٹرمیڈیٹ نمائندگی میں ترجمہ نہیں کرتا ہے (بنیادی طور پر تقریباً براہ راست مشین کوڈ میں)، لیکن بائیک کوڈ کو ایک اعلی سطحی انٹرمیڈیٹ نمائندگی SSA (سٹیٹک سنگل اسائنمنٹ) میں تبدیل کرتا ہے، جس پر اضافی اصلاحی مراحل کو لاگو کیا جا سکتا ہے، اور کوڈ کے ساتھ بڑے کوڈ پر عمل درآمد کیا جا سکتا ہے۔ صرف موجودہ آپریشنز پر انحصار کرنا۔

ZJIT ایک وقت میں ایک پورے طریقہ کی تالیف انجام دیتا ہے، جبکہ YJIT صرف بنیادی بلاکس کی تالیف کو ہینڈل کر سکتا ہے۔ ٹائپ پروفائلنگ کے لیے، ZJIT ایک کلاسک JIT فن تعمیر کو لاگو کرتا ہے جو YJIT میں استعمال ہونے والی Lazy Basic Block Versioning (LBBV) تکنیک کے بجائے ترجمان کے جمع کردہ تاریخی قسم کے ڈیٹا کو استعمال کرتا ہے۔

اعلیٰ سطحی IR کا استعمال YJIT کے پاس موجود اسکیل ایبلٹی مسائل کو حل کر دے گا، مستقبل میں کثیر سطحی JIT کی تالیف کے نفاذ کی بنیاد رکھے گا، اعلی درجے کی اصلاح کو فعال کرے گا (جیسے زیادہ جارحانہ ان لائن تعیناتی)، اور JIT کو مختلف پلیٹ فارمز کے مطابق ڈھالنا آسان بنائے گا۔ روایتی قسم کے پروفائلنگ ماڈل پر واپس آنے سے کوڈ سے پیچیدگی دور ہو جائے گی اور نئے شراکت داروں کو حصہ لینے کی اجازت ملے گی (YJIT کے LBBV کے استعمال کے نتیجے میں پروجیکٹ دوسرے شراکت داروں کے لیے غیر واضح ہو گیا اور صرف Shopify ملازمین کے ذریعے تیار کیا گیا)۔

ماخذ: opennet.ru

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