Rust ဘာသာစကားအတွက် ပံ့ပိုးမှုဖြင့် Linux kernel အတွက် ပက်ခ်များဗားရှင်းအသစ်

Rust-for-Linux ပရောဂျက်ကို ရေးသားသူ Miguel Ojeda သည် Linux kernel developer များမှ ထည့်သွင်းစဉ်းစားရန်အတွက် Rust language တွင် စက်ပစ္စည်းဒရိုက်ဗာများ ဖန်တီးရန်အတွက် v5 အစိတ်အပိုင်းများကို ထုတ်ဝေရန် အဆိုပြုခဲ့သည်။ ၎င်းသည် ဗားရှင်းနံပါတ်မပါဘဲ ထုတ်ဝေသည့် ပထမဗားရှင်းကို ထည့်သွင်းစဉ်းစားပြီး ဖာထေးမှု၏ ဆဋ္ဌမမြောက်ထုတ်ဝေမှုဖြစ်သည်။ သံချေးတက်ခြင်းကို စမ်းသပ်သည်ဟု ယူဆသော်လည်း linux-next ဌာနခွဲတွင် ထည့်သွင်းထားပြီးဖြစ်ပြီး kernel subsystems များပေါ်တွင် 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.59.0 ထုတ်ဝေရန် အဆင့်မြှင့်တင်ထားသည်။ သိမ်းဆည်းထားသည့် ဒစ်ဂျစ်တိုက်၏ အမျိုးကွဲတစ်မျိုးကို မှတ်ဉာဏ်ကုန်ခန်းသွားခြင်းကဲ့သို့သော အမှားအယွင်းများ ဖြစ်ပေါ်လာသောအခါတွင် ဖြစ်နိုင်ချေရှိသော “ထိတ်လန့်ခြင်း” အခြေအနေကို ဖယ်ရှားပေးသည့် Rust ဗားရှင်းအသစ်နှင့်လည်း ထပ်တူပြုပါသည်။ တပ်ဆင်သူထည့်သွင်းမှုများ (“feature(global_asm)”) ကို အသုံးပြုနိုင်စွမ်းကို တည်ငြိမ်သွားပါပြီ။
  • kernel စုစည်းမှုအတွင်း အသုံးပြုသည့် Rust တွင် လက်ခံဆောင်ရွက်ပေးသည့် ပရိုဂရမ်များ ဖန်တီးရန်အတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။
  • ကြိုတင်ထုတ်လုပ်ထားသော ပစ်မှတ်ပလပ်ဖောင်းသတ်မှတ်ချက်ဖိုင်များကို ပေးပို့မည့်အစား၊ ၎င်းတို့ကို kernel ဖွဲ့စည်းမှုအပေါ် အခြေခံ၍ ဒိုင်နမစ်ဖြင့် ထုတ်ပေးပါသည်။
  • Rust ကို ပံ့ပိုးပေးသော ဗိသုကာလက်ရာများအတွက် ဖွင့်ရန် HAVE_RUST kernel ကန့်သတ်ဘောင်ကို ထည့်ထားသည်။
  • Abstractions များသည် hardware pseudo-random number generator အတွက် Rust code တွင် အသုံးပြုရန် အဆိုပြုထားသည်။
  • C တွင် အမှားအယွင်းကုဒ်များကို အနီးစပ်ဆုံး ကိုင်တွယ်ရန် အနီးစပ်ဆုံးပြုလုပ်ရန် "အမှား-:" ရှေ့စာ (ဥပမာ၊ "return Err(EINVAL)") မပါဘဲ အမှားကုဒ်များကို အသုံးပြုခွင့် ပြုခဲ့သည်။
  • စိတ်ကြိုက် C-strings အတွက် "CSstring" အမျိုးအစားကို ထည့်ထားသည်။ Formatter နှင့် Buffer အမျိုးအစားများကို ပေါင်းစပ်ထားသည်။
  • Bool နှင့် LockInfo အမျိုးအစားများကို ထည့်သွင်းထားသည်။
  • လှည့်ပတ်သော့ခလောက်များ အကောင်အထည်ဖော်မှုကို ရိုးရှင်းစေခဲ့သည်။

source: opennet.ru

မှတ်ချက် Add