Ruby codebase သည် JIT compiler ZJIT အသစ်ကို လက်ခံသည်။

JIT compiler အသစ် ZJIT ကို Ruby ဘာသာစကား ရည်ညွှန်းအကောင်အထည်ဖော်မှု codebase တွင် ထည့်သွင်းထားပြီး Ruby JIT ၏ နောက်မျိုးဆက်အဖြစ် နေရာယူထားသည်။ ZJIT သည် YJIT JIT compiler နှင့်အတူ ရွေးချယ်မှုအဖြစ် Ruby 3.5 ၏ နောက်ထွက်ရှိမှုတွင် ပါဝင်မည်ဖြစ်ပြီး ၎င်းကို Ruby 3.6 တွင် အစားထိုးနိုင်ပါသည်။ YJIT ကဲ့သို့ပင် JIT compiler အသစ်ကို Rust ဖြင့် ရေးသားထားသည်။ JIT compilers နှစ်ခုလုံးကို Rails framework ကိုသုံး၍ နည်းလမ်းများစွာကိုခေါ်ဆိုသော Ruby ပရိုဂရမ်များ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် အစပျိုးမှုတစ်စိတ်တစ်ပိုင်းအဖြစ် Shopify ရှိ developer အဖွဲ့တစ်ဖွဲ့မှ ဖန်တီးခဲ့ခြင်းဖြစ်သည်။

YJIT နှင့်မတူဘဲ JIT compiler အသစ်သည် YARV virtual machine bytecode ကို low-level intermediate ကိုယ်စားပြုမှု (အဓိကအားဖြင့် machine code အဖြစ်သို့ တိုက်ရိုက်နီးပါး) သို့ ဘာသာပြန်ခြင်းမပြုဘဲ bytecode ကို high-level intermediate representation SSA (Static Single Assignment) အဖြစ် ပြောင်းလဲပေးသည်

ZJIT သည် တစ်ချိန်တည်းတွင် နည်းလမ်းတစ်ခုလုံးကို စုစည်းမှုလုပ်ဆောင်ပြီး YJIT သည် အခြေခံလုပ်ကွက်များစုစည်းမှုကိုသာ လုပ်ဆောင်နိုင်သည်။ အမျိုးအစားပရိုဖိုင်းအတွက်၊ ZJIT သည် YJIT တွင်အသုံးပြုသော Lazy Basic Block Versioning (LBBV) နည်းပညာအစား စကားပြန်၏စုဆောင်းထားသောသမိုင်းဝင်ဒေတာအမျိုးအစားကိုအသုံးပြုသည့် ဂန္တဝင် JIT ဗိသုကာကိုအကောင်အထည်ဖော်သည်။

အဆင့်မြင့် IR ကိုအသုံးပြုခြင်းဖြင့် YJIT တွင်ရှိသော အရွယ်အစားရှိ ပြဿနာများကို ဖြေရှင်းနိုင်မည်ဖြစ်ပြီး အဆင့်များစွာသော JIT စုစည်းမှုကို အနာဂတ်တွင် အကောင်အထည်ဖော်ရန်အတွက် အခြေခံအုတ်မြစ်ချပေးကာ အဆင့်မြှင့်တင်မှုများ (ဥပမာ ပိုမိုပြင်းထန်သော inline ဖြန့်ကျက်မှုကဲ့သို့) ကိုဖွင့်ကာ JIT ကို မတူညီသောပလက်ဖောင်းများသို့ လိုက်လျောညီထွေဖြစ်စေရန် ပိုမိုလွယ်ကူစေသည်။ သမားရိုးကျ အမျိုးအစား ပရိုဖိုင်းခြင်း မော်ဒယ်သို့ ပြန်သွားခြင်းသည် ကုဒ်မှ ရှုပ်ထွေးမှုကို ဖယ်ရှားပြီး ပံ့ပိုးသူအသစ်များ ပါဝင်ခွင့်ပြုမည် (YJIT ၏ LBBV ကို အသုံးပြုခြင်းကြောင့် ပရောဂျက်ကို အခြားသော ပံ့ပိုးကူညီသူများမှ မထင်မရှားဖြစ်စေခဲ့ပြီး Shopify ဝန်ထမ်းများကသာ တီထွင်ဖန်တီးခြင်းဖြစ်သည်)။

source: opennet.ru

မှတ်ချက် Add