Rust ဘာသာစကားအတွက် ပံ့ပိုးမှုဖြင့် Linux kernel အတွက် စတုတ္ထမြောက်ထုတ်ဝေမှု

Rust-for-Linux ပရောဂျက်ကို ရေးသားသူ Miguel Ojeda သည် Linux kernel developer များမှ ထည့်သွင်းစဉ်းစားရန်အတွက် Rust ဘာသာစကားတွင် စက်ဒရိုက်ဘာများ တီထွင်ရန်အတွက် စတုတ္ထဗားရှင်းကို အဆိုပြုခဲ့သည်။ သံချေးတက်ခြင်းကို စမ်းသပ်သည်ဟု ယူဆသော်လည်း၊ linux-next ဌာနခွဲတွင် ပါဝင်ရန်အတွက် သဘောတူထားပြီးသားဖြစ်ကာ kernel ခွဲစနစ်များပေါ်တွင် abstraction layers ဖန်တီးခြင်းအပြင် drivers နှင့် modules များရေးသားခြင်းအတွက် လုံလောက်သောရင့်ကျက်မှုရှိသည်။ တီထွင်မှုကို Google နှင့် ISRG (Internet Security Research Group) တို့မှ ရန်ပုံငွေပံ့ပိုးထားပြီး Let's Encrypt ပရောဂျက်ကို တည်ထောင်သူဖြစ်ပြီး HTTPS နှင့် အင်တာနက်လုံခြုံရေးကို မြှင့်တင်ရန် နည်းပညာများ ဖွံ့ဖြိုးတိုးတက်မှုကို မြှင့်တင်ပေးပါသည်။

အဆိုပြုထားသောပြောင်းလဲမှုများသည် ဒရိုက်ဗာများနှင့် kernel module များဖန်တီးရန်အတွက် ဒုတိယဘာသာစကားအဖြစ် Rust ကိုအသုံးပြုရန် ဖြစ်နိုင်ကြောင်း သတိရပါ။ Rust ပံ့ပိုးမှုကို ပုံသေအားဖြင့် ဖွင့်မထားသော ရွေးချယ်မှုတစ်ခုအနေဖြင့် တင်ပြထားပြီး kernel အတွက် လိုအပ်သော တည်ဆောက်မှုမှီခိုမှုတစ်ခုအဖြစ် Rust ပါဝင်ခြင်းကို မဖြစ်ပေါ်စေပါ။ ယာဉ်မောင်းဖွံ့ဖြိုးတိုးတက်မှုအတွက် Rust ကိုအသုံးပြုခြင်းဖြင့် သင့်အား လွတ်ကင်းပြီးနောက် မှတ်ဉာဏ်ဝင်ရောက်ခွင့်၊ null pointer dereferences နှင့် buffer overruns ကဲ့သို့သော ပြဿနာများမှ ကင်းဝေးပြီး အနည်းငယ်သာ အားစိုက်ထုတ်ခြင်းဖြင့် ပိုမိုဘေးကင်းပြီး ပိုမိုကောင်းမွန်သော ယာဉ်မောင်းများကို ဖန်တီးနိုင်မည်ဖြစ်သည်။

ကိုးကားစစ်ဆေးခြင်း၊ အရာဝတ္တုပိုင်ဆိုင်မှုကိုခြေရာခံခြင်းနှင့် အရာဝတ္ထုသက်တမ်း (scope) တို့ကို စုစည်းချိန်တွင် Rust တွင် Memory ဘေးကင်းရေးကို ပံ့ပိုးပေးသည့်အပြင် ကုဒ်လုပ်ဆောင်နေစဉ်အတွင်း မမ်မိုရီဝင်ရောက်မှု၏ မှန်ကန်မှုကို အကဲဖြတ်ခြင်းမှတဆင့် ပေးပါသည်။ Rust သည် ကိန်းပြည့်ပြည့်လျှံမှုများကို အကာအကွယ်ပေးသည်၊ အသုံးမပြုမီ ပြောင်းလဲနိုင်သောတန်ဖိုးများကို မဖြစ်မနေစတင်လုပ်ဆောင်ရန် လိုအပ်သည်၊ စံဒစ်ဂျစ်တိုက်တွင် ပိုမိုကောင်းမွန်သော အမှားများကို ကိုင်တွယ်ရန်၊ ပုံသေအားဖြင့် မပြောင်းလဲနိုင်သော ကိုးကားချက်များနှင့် ကိန်းရှင်များ၏ သဘောတရားကို ကျင့်သုံးသည်၊ ယုတ္တိအမှားများကို အနည်းဆုံးဖြစ်စေရန် ခိုင်လုံသောအငြိမ်စာရိုက်ခြင်းကို ပံ့ပိုးပေးပါသည်။

ဖာထေးမှုများ၏ ဗားရှင်းအသစ်သည် ပထမ၊ ဒုတိယနှင့် တတိယ တည်းဖြတ်မှုများ၏ ဆွေးနွေးမှုအတွင်း ပြုလုပ်ခဲ့သော မှတ်ချက်များကို ဖယ်ရှားပေးပါသည်။ ဗားရှင်းအသစ်တွင်-

  • ကိုးကားရေးဖွဲ့မှုအဖြစ် Rust 1.58.0 ၏တည်ငြိမ်သောထွက်ရှိမှုကို အသုံးပြုခြင်းသို့ ကူးပြောင်းခြင်းကို ပြုလုပ်ထားပါသည်။ ပင်မ Rust ကိရိယာအစုံတွင် မပါဝင်သေးသည့် ပရောဂျက်အတွက် လိုအပ်သောပြောင်းလဲမှုများထဲတွင် “-Zsymbol-mangling-version=v0” အလံ (Rust 1.59.0 တွင် မျှော်လင့်ထားသည်) နှင့် “maybe_uninit_extra” မုဒ် (Rust 1.60.0 တွင် မျှော်လင့်ထားသည် .XNUMX) မှတ်ချက်ချသည်.။
  • သင့်လျော်သော Rust ကိရိယာများရရှိနိုင်မှုအတွက် အလိုအလျောက်စစ်ဆေးမှုများကို ထည့်သွင်းပြီး စနစ်ရှိ Rust ပံ့ပိုးမှုကို စမ်းသပ်နိုင်စွမ်းကို တိုးချဲ့ခဲ့သည်။
  • Rust ကုဒ်မှ စက်ပစ္စည်း identifier tables (“IdArray” နှင့် “IdTable”) မှ abstractions အသစ်များကို အဆိုပြုထားပါသည်။
  • အချိန်တိုင်းကိရိယာဆိုင်ရာ လုပ်ဆောင်ချက်များ (နာရီဘောင်) ကို အသုံးပြုရန်အတွက် အလွှာများ ထပ်ထည့်ထားသည်။
  • ပလပ်ဖောင်းဒရိုင်ဘာများကို စရိုက်လက္ခဏာ အကောင်အထည်ဖော်မှုများဖြင့် ယခုသတ်မှတ်ထားသည်။
  • ပလက်ဖောင်းဒရိုင်ဘာများ၏ မှတ်ပုံတင်ခြင်းကို ရိုးရှင်းစေရန်အတွက် မက်ခရိုအသစ်တစ်ခုကို ပေါင်းထည့်ထားပြီး ယေဘုယျယာဉ်မောင်းပုံစံအသစ်ကို အဆိုပြုထားသည်။
  • "dev_*" တည်ဆောက်ပုံများအတွက် မက်ခရိုကို ထည့်ထားသည်။
  • IoMem အမျိုးအစားအတွက် "{read,write}*_relaxed" နည်းလမ်းများကို ထည့်သွင်းခဲ့သည်။ .
  • ဖိုင်လုပ်ဆောင်ချက်များကို ရိုးရှင်းစေရန် FileOpener ပိုင်ဆိုင်မှုကို ဖယ်ရှားခဲ့သည်။
  • ယာဉ်မောင်းတစ်ဦးကို မှတ်ပုံတင်သည့်အခါ ဖြတ်သွားသော အကြောင်းပြချက်များတွင် "ThisModule" ပါရာမီတာကို ပေါင်းထည့်ထားသည်။
  • Rust ဘာသာစကားတွင် kernel module များဖန်တီးရန်အတွက် စံပုံစံပုံစံတစ်ခုကို အဆိုပြုထားသည်။

source: opennet.ru

မှတ်ချက် Add