LLVM lld မှ ဖန်တီးထားသော Mold 1.1 လင့်ခ်ကို ဖြန့်ချိသည်။

Linux စနစ်များရှိ GNU linker အတွက် ပိုမိုမြန်ဆန်ပြီး ပွင့်လင်းမြင်သာသော အစားထိုးမှုအဖြစ် အသုံးပြုနိုင်သည့် Mold linker ကို ထုတ်ဝေလိုက်ပါပြီ။ အဆိုပါပရောဂျက်ကို LLVM lld linker ၏ရေးသားသူမှတီထွင်ခဲ့သည်။ Mold ၏ အဓိကအင်္ဂါရပ်မှာ GNU gold နှင့် LLVM lld linkers များရှေ့တွင် သိသိသာသာပင် အရာဝတ္ထုဖိုင်များကို ချိတ်ဆက်ခြင်း၏ အရှိန်အဟုန်မြင့်မားသည် (Mold တွင် ချိတ်ဆက်ခြင်းကို cp utility ဖြင့် ဖိုင်များကူးယူခြင်းကဲ့သို့ ထက်ဝက်သာမြန်ဆန်သော အမြန်နှုန်းဖြင့် လုပ်ဆောင်သည်)။ ကုဒ်ကို C++ (C++20) ဖြင့် ရေးသားထားပြီး AGPLv3 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

ဗားရှင်းအသစ်တွင်-

  • ချိတ်ဆက်ခြင်းအဆင့်တွင် ပိုမိုကောင်းမွန်အောင်ပံ့ပိုးမှု (LTO၊ Link Time Optimization) ကို ထည့်သွင်းထားသည်။ LTO optimizations သည် build process တွင်ပါ၀င်သော ဖိုင်များအားလုံး၏အခြေအနေကို ထည့်သွင်းစဉ်းစားခြင်းဖြင့် ကွဲပြားပြီး၊ သမားရိုးကျ optimization modes သည် ဖိုင်တစ်ခုစီကို သီးခြားစီ optimize လုပ်ပေးပြီး အခြားဖိုင်များတွင် သတ်မှတ်ထားသော လုပ်ဆောင်ချက်များကို ခေါ်ဆိုရန်အတွက် အခြေအနေများကို ထည့်သွင်းစဉ်းစားခြင်းမရှိပါ။ ယခင်က GCC သို့မဟုတ် LLVM အလယ်အလတ်ကုဒ် (IR) ဖိုင်များကို တွေ့ရှိသောအခါ၊ သက်ဆိုင်ရာ ld.bfd သို့မဟုတ် ld.lld လင့်ခ်များကို ခေါ်ဝေါ်ခဲ့ပြီး ယခုအခါ Mold သည် IR ဖိုင်များကို သီးခြားလုပ်ဆောင်ပြီး Linker Plugin API ကို အသုံးပြုကာ GNU ld နှင့် GNU တို့တွင်လည်း အသုံးပြုပါသည်။ ရွှေချိတ်များ။ ဖွင့်ထားသောအခါတွင်၊ LTO သည် အခြားလင့်ခ်များထက် အနည်းငယ်သာလျင်မြန်သည် အဘယ်ကြောင့်ဆိုသော် အချိန်အများစုသည် ချိတ်ဆက်ခြင်းထက် ကုဒ်ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်ခြင်းများကို လုပ်ဆောင်နေသောကြောင့်ဖြစ်သည်။
  • လက်ခံဆောင်ရွက်ပေးသူနှင့် ပစ်မှတ်ပလက်ဖောင်းများတွင် RISC-V (RV64) ဗိသုကာအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။
  • လင့်ခ်ချိတ်ခြင်းအဆင့်တွင် နောက်ဆက်တွဲအပလီကေးရှင်းအတွက် ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုများအတွက် နောက်ဆက်တွဲအပလီကေးရှင်းအတွက် ရွှေ့ပြောင်းခြင်းကဏ္ဍများကို ထည့်သွင်းသည့်ဖိုင်များမှ အထွက်ဖိုင်များဆီသို့ ရွှေ့ပြောင်းခြင်းကဏ္ဍများကို ကူးယူနိုင်စေရန် “--emit-relocs” ရွေးချယ်မှုကို ထည့်သွင်းခဲ့သည်။
  • virtual address space တွင် ၎င်းတို့၏ လိပ်စာများကို မပြုပြင်မီ ကဏ္ဍများ၏ အစီအစဥ်ကို ကျပန်းလုပ်ဆောင်ရန် "--shuffle-sections" option ကို ပေါင်းထည့်ခဲ့သည်။
  • ထည့်သွင်းသည့်ဖိုင်များကြားတွင် မှီခိုမှုများအကြောင်း CSV ဖော်မတ်အချက်အလက်တွင် ထုတ်ပေးရန်အတွက် ရွေးချယ်စရာများ "--print-dependencies" နှင့် "--print-dependencies=full" တို့ကို ထည့်သွင်းထားသည်၊ ဥပမာ၊ အရာဝတ္ထုဖိုင်အချို့ကို ချိတ်ဆက်သည့်အခါ ချိတ်ဆက်မှုအတွက် အကြောင်းရင်းများကို ခွဲခြမ်းစိတ်ဖြာရန် အသုံးပြုနိုင်သည်။ သို့မဟုတ် ဖိုင်များကြားတွင် minification အလုပ်မှီခိုမှုကို လုပ်ဆောင်သည့်အခါ။
  • "--warn-once" နှင့် "--warn-textrel" ရွေးစရာများကို ထည့်သွင်းထားသည်။
  • libxxhash အပေါ်မှီခိုမှုကို ဖယ်ရှားခဲ့သည်။

source: opennet.ru

မှတ်ချက် Add