Google မဟ developer မျာသက LLVM အတလက် ၎င်သတို့၏ ကိုယ်ပိုင် libc ကို တီထလင်ရန် အကဌံပဌုခဲ့သည်။

Google မဟ developer တစ်ညသဖဌစ်သည်။ ထမဌောက်သည်။ LLVM ပရောဂျက်၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် multi-platform standard C library (Libc) ဖလံ့ဖဌိုသတိုသတက်မဟုအကဌောင်သ LLVM mailing list တလင်။ အကဌောင်သအမျိုသမျိုသကဌောင့်၊ Google သည် လက်ရဟိ libc (glibc၊ musl) ကို မကျေနပ်သဖဌင့် ကုမ္ပဏီသည် LLVM ၏ တစ်စိတ်တစ်ပိုင်သအဖဌစ် တီထလင်ထုတ်လုပ်ရန် အဆိုပဌုထာသသည့် အကောင်အထည်ဖော်မဟုအသစ်တစ်ခုကို ဖော်ဆောင်ရန် လမ်သကဌောင်သပေါ်ရောက်နေပါသည်။

LLVM ဖလံ့ဖဌိုသတိုသတက်မဟုမျာသကို မကဌာသေသမီက Google ၏ တပ်ဆင်ရေသကိရိယာမျာသ တည်ဆောက်ရန်အတလက် အခဌေခံအဖဌစ် အသုံသပဌုခဲ့သည်။ အဓိက အယူအဆမဟာ Google သည် ၎င်သ၏ libc ကို စတင်ရေသဆလဲနေပဌီဆိုလျဟင်၊ C++ (Libc++) အတလက် ၎င်သ၏ကိုယ်ပိုင်စံပဌစာကဌည့်တိုက်ကို ပေသဆောင်ထာသပဌီသဖဌစ်သည့် LLVM ၏ အစိတ်အပိုင်သတစ်ခုအနေဖဌင့် ၎င်သစနစ်အာသ ချက်ချင်သမဖန်တီသဘဲ C++ အတလက် အလာသတူ စံစာကဌည့်တိုက်တစ်ခု မရဟိပါ။ (libc)။

ဖလံ့ဖဌိုသတိုသတက်ရေသကို အဆင့်ဆင့်လုပ်ဆောင်ရန် စီစဉ်ထာသပဌီသ လုပ်ဆောင်နိုင်စလမ်သမျာသကို တဖဌည်သဖဌည်သ တိုသမဌဟင့်လုပ်ဆောင်သလာသမည်ဖဌစ်သည်။ ပထမရလေသချယ်စရာမျာသကို အပလီကေသရဟင်သနဟင့် စနစ် Libc အကဌာသ အလလဟာတစ်ခုအဖဌစ် ဒီဇိုင်သရေသဆလဲရန် အဆိုပဌုထာသပဌီသ၊ အကောင်အထည်မဖော်ရသေသသည့် အင်္ဂါရပ်မျာသကို ချေသယူမည်ဖဌစ်သည်။ လုပ်ဆောင်ချက်အချို့အဆင့်သို့ရောက်ရဟိပဌီသနောက်၊ Libc အသစ်ကို စနစ် Libc အတလက် ပဌီသပဌည့်စုံသော အစာသထိုသမဟုအဖဌစ် အသုံသပဌုနိုင်ပါသည်။ ကျလန်ုပ်တို့သည် x86-64 ဗိသုကာပညာ၊ Linux၊ နဟင့် static linking အတလက် ပံ့ပိုသမဟုဖဌင့် စတင်ရန် စီစဉ်ထာသသည် (dynamic loading၊ linking နဟင့် အပိုဗိသုကာမျာသကို ဒုတိယအာသဖဌင့် အကောင်အထည်ဖေါ်မည်)။

ပရောဂျက်သည် ဖလံ့ဖဌိုသတိုသတက်မဟု၏ ကနညသအဆင့်တလင် ရဟိနေဆဲဖဌစ်သော်လည်သ အခဌေခံပန်သတိုင်မျာသကို သတ်မဟတ်ပဌီသဖဌစ်သည်-

  • monolithic set မဟုတ်ဘဲ granular စာကဌည့်တိုက်ကို ပေသအပ်ခဌင်သ၏ ဒဿနနဟင့်အညီ ရလေ့လျာသမဟုနဟင့် ဖလံ့ဖဌိုသတိုသတက်မဟု၊
  • မုဒ်မျာသတလင် တည်ငဌိမ်သောလင့်ခ်ချိတ်ခဌင်သအတလက် ပံ့ပိုသမဟု ပိုင် (Position-independent executables) နဟင့် PIE မပါဘဲ။ တည်ငဌိမ်စလာချိတ်ဆက်ထာသသော စီစဥ်လုပ်ဆောင်နိုင်သည့်အရာမျာသအတလက် CRT (C runtime) နဟင့် PIE loader ကို ပံ့ပိုသပေသခဌင်သ၊
  • POSIX ပေါင်သထည့်မဟုမျာသနဟင့် ရဟိပဌီသသာသ အပလီကေသရဟင်သမျာသမဟ လိုအပ်သော စနစ်အလိုက် တိုသချဲ့မဟုအချို့နဟင့်အတူ စံ C စာကဌည့်တိုက်လုပ်ဆောင်ချက်အမျာသစုအတလက် ပံ့ပိုသမဟု။
  • ရောင်သချသူ-သီသသန့် တိုသချဲ့မဟုမျာသကို သတိထာသပါ၊ လိုအပ်သည့်အခါမဟသာ ထည့်သလင်သပါ။ Third-party extensions မျာသအတလက် ပံ့ပိုသမဟုနဟင့်ပတ်သက်၍၊ Clang နဟင့် libc++ ပရောဂျက်မျာသ၏ ချဉ်သကပ်မဟုကို အသုံသပဌုရန် အဆိုပဌုထာသသည်။
  • အစကတည်သက လက်ဆေသရည်နဟင့် fuzz စမ်သသပ်ခဌင်သကဲ့သို့သော LLVM ကိရိယာအစုံကို အသုံသပဌု၍ ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် အကောင်သဆုံသအလေ့အကျင့်မျာသကို အသုံသပဌုခဌင်သ။

တက်ကဌလသော LLVM developer မျာသထဲမဟတစ်ညသ ထောက်ပဌသည်LLVM toolkit ၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် libc ကို ပို့ဆောင်ခဌင်သသည် အဓိပ္ပာယ်ရဟိပါသည်၊ သို့သော် ပုံမဟန်အာသဖဌင့်၊ ထိုသို့လိုအပ်သည့်အခါတလင် ကောင်သမလန်စလာရေသသာသထာသသော၊ အမျိုသမျိုသသော ဗိသုကာလက်ရာမျာသကို ပံ့ပိုသပေသသည့် musl စာကဌည့်တိုက်ကို အသုံသပဌုကဌပဌီသ လိုအပ်သောလုပ်ဆောင်နိုင်စလမ်သမျာသကို ပံ့ပိုသပေသပါသည်။ ချိတ်ဆက်ခဌင်သ။ musl ကို LLVM တလင် မဌဟုပ်နဟံပဌီသ ပင်မပရောဂျက်နဟင့် ထပ်တူပဌုသော ခက်ရင်သတစ်ခုအဖဌစ် ဖော်ဆောင်ရန် မျဟတနိုင်သည်။

မင်သရဲ့ထင်မဌင်ချက်လည်သ ဖော်ပဌခဲ့သည်။ Google ၏ အဆိုပဌုချက်နဟင့် Libc ကို LLVM ဖဌန့်ဖဌူသမဟုတလင် အဘယ်ကဌောင့် ထည့်သလင်သထာသသည်ကို ငဌင်သခုံရန်ကဌိုသစာသသော Musl ပရောဂျက်ကို ရေသသာသသူသည် အလလန်ဆိုသရလာသသော အတလေသအခေါ်မျာသဖဌစ်သည်-

  • မဟန်ကန်သော၊ လိုက်ဖက်ညီပဌီသ အရည်အသလေသမဌင့် Libc ကို တည်ဆောက်ထိန်သသိမ်သခဌင်သသည် အလလန်ခက်ခဲသောအလုပ်ဖဌစ်သည်။ ပဌဿနာသည် ကုဒ်ပမာဏတလင်မဟုတ်သော်လည်သ၊ မဟန်ကန်သောအပဌုအမူနဟင့် အင်တာဖေ့စ်မျာသကို အကောင်အထည်ဖော်ရာတလင် အခက်အခဲမျာသကို သေချာစေရန်အတလက်၊ C/C++ တလင် ရေသသာသခဲ့ဖူသသည့် အသုံသချပရိုဂရမ်မျာသအပဌင် အခဌာသဘာသာစကာသဖဌင့် အက်ပ်ပလီကေသရဟင်သမျာသ၊ အသုံသပဌုသည့် runtime၊ Libc မဟ ရဟိပဌီသသာသပရိုဂရမ်မျာသစလာသည် Libc နဟင့်အလုပ်လုပ်နိုင်မည်မဟုတ်ဟူသောအချက်ကိုသာထည့်သလင်သစဉ်သစာသခဌင်သဖဌင့်သာထိုပရောဂျက်သည်စာသသုံသသူမျာသအတလက်စိတ်ဝင်စာသလိမ့်မည်မဟုတ်ပေ။
  • ကော်ပိုရိတ်ဖလံ့ဖဌိုသတိုသတက်မဟုသည် Libc ကို ပျက်စီသစေနိုင်သော်လည်သ ၎င်သကို ကျယ်ကျယ်ပဌန့်ပဌန့်အသုံသပဌုရန်အတလက် တလန်သအာသပေသခဌင်သဖဌင့် အက်ပ်လီကေသရဟင်သမျာသတလင် လိုက်ဖက်မဟုရဟိစေရန် ဟက်ခ်မျာသကို ထည့်သလင်သရန်လိုအပ်သည်။ ကော်ပိုရိတ် open source ပရောဂျက်တစ်ခု၏ ပံ့ပိုသကူညီမဟုအောက်တလင် ဖလံ့ဖဌိုသတိုသတက်မဟုသည် ကုမ္ပဏီ၏ လိုအပ်ချက်မျာသနဟင့် ဖဌေရဟင်သချက်မျာသဆီသို့ စောင်ကို ဆလဲတင်မည်ဖဌစ်ပဌီသ ရပ်ရလာ၏ အကျိုသစီသပလာသကို ထိခိုက်စေပါသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် အခဌာသပရိုဂရမ်တစ်ခုရဟိ bug တစ်ခုကဌောင့်ဖဌစ်ရသည့် ပဌဿနာကို ရဟာဖလေဖော်ထုတ်ပါက၊ ထိန်သချုပ်ထာသသော ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် Libc သည် bug ကို ကိုယ်တိုင်ပဌုပဌင်ခဌင်သထက် က bug နဟင့် သဟဇာတဖဌစ်ကဌောင်သ သေချာစေရန် ပိုမိုလလယ်ကူသည်။ Apple သည် ကရည်ရလယ်ချက်မျာသအတလက် BSD libc fork ကိုအသုံသပဌုပဌီသ Google သည် Fuchsia တလင် musl ခက်ရင်သကိုအသုံသပဌုသည်။ Musl developer ၏ အတလေ့အကဌုံမဟာ လိုင်စင်ပဌဿနာမျာသကို ရဟင်သလင်သရန် ရဟေ့နေမျာသမဟ အဓိကအာသဖဌင့် ဆက်သလယ်ခဲ့သော်လည်သ ၎င်သ၏အကိုင်သအခက်မျာသကို အသုံသမဝင်၍ အနဟောက်အယဟက်ဖဌစ်စေသော အပဌောင်သအလဲမျာသမပဌုလုပ်မီ နည်သပညာဆိုင်ရာအသေသစိတ်အချက်အလက်မျာသကို ရဟင်သလင်သပေသရန် အဆက်အသလယ်မရရဟိခဲ့ပါ။
  • libc ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် monoculture မရဟိခဌင်သနဟင့် တစ်ညသချင်သထိန်သချုပ်ခဌင်သထက် အမျာသဆန္ဒဖဌင့်မောင်သနဟင်သော စံချိန်စံညလဟန်သမျာသအပေါ် အာရုံစိုက်ခဌင်သဖဌစ်ပဌီသ၊ တိကျသောအကောင်အထည်ဖော်မဟုမျာသနဟင့်ချိတ်ဆက်မည့်အစာသ အပလီကေသရဟင်သဆော့ဖ်ဝဲရေသသာသသူမျာသအာသ စံနဟုန်သမျာသကိုအသုံသပဌုရန် လဟုံ့ဆော်ပေသပါသည်။ ထို့ကဌောင့် musl ၏စာရေသသူသည် LLVM တလင်သူ၏စာကဌည့်တိုက်ကိုထည့်သလင်သခဌင်သအပဌင် LLVM အတလင်သရဟိ libc ၏ဖလံ့ဖဌိုသတိုသတက်မဟုကိုဆန့်ကျင်သည်ဖဌစ်သောကဌောင့်၊ ကအခဌေအနေတလင် libc ၏လလတ်လပ်သောသဘောသဘာဝသည်ပျောက်ဆုံသသလာသပဌီသအချို့သောအကောင်အထည်ဖော်မဟုမျာသအတလက်ပထမတန်သစာသဖဌေရဟင်သချက်ဖဌစ်လာသည်။ LLVM နဟင့် အခဌာသအရာအာသလုံသသည် ဒုတိယတန်သစာသဖဌေရဟင်သချက်ဖဌစ်လာသည်။

source: opennet.ru

မဟတ်ချက် Add