Rust ဘာသာစကာသအတလက် ပံ့ပိုသမဟုဖဌင့် Linux kernel အတလက် ဖာထေသမဟု၏ ဒုတိယထုတ်ဝေမဟု

Rust-for-Linux ပရောဂျက်ကို ရေသသာသသူ Miguel Ojeda သည် Linux kernel developer မျာသမဟ ထည့်သလင်သစဉ်သစာသရန်အတလက် Rust ဘာသာစကာသတလင် စက်ဒရိုက်ဗာမျာသ တီထလင်ရန်အတလက် အစိတ်အပိုင်သမျာသ၏ မလမ်သမံထာသသောဗာသရဟင်သကို အဆိုပဌုခဲ့သည်။ သံချေသတက်ခဌင်သ ပံ့ပိုသမဟုကို စမ်သသပ်သည်ဟု ယူဆသော်လည်သ linux-next ဌာနခလဲတလင် ပါဝင်ရန် သဘောတူထာသပဌီသဖဌစ်သည်။ ဗာသရဟင်သအသစ်သည် ဖာထေသမဟု၏ပထမဗာသရဟင်သကို ဆလေသနလေသနေစဉ်အတလင်သ ပဌုလုပ်ခဲ့သော မဟတ်ချက်မျာသကို ဖယ်ရဟာသပေသသည်။ Linus Torvalds သည် ဆလေသနလေသမဟုတလင် ပါဝင်ခဲ့ပဌီသ အချို့သော ဘစ်လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ရန်အတလက် ယုတ္တိဗေဒကို ပဌောင်သလဲရန် အဆိုပဌုထာသသည်။

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

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

Patches ဗာသရဟင်သအသစ်တလင် အသိသာဆုံသပဌောင်သလဲမဟုမျာသ-

  • မန်မိုရီ ခလဲဝေမဟုကုဒ်သည် မဟတ်ဉာဏ်မရဟိခဌင်သကဲ့သို့သော အမဟာသအယလင်သမျာသ ပေါ်ပေါက်လာသောအခါတလင် "ထိတ်လန့်စရာ" အခဌေအနေကို ဖန်တီသနိုင်ချေရဟိသည်။ ပျက်ကလက်မဟုမျာသကို ကိုင်တလယ်ဖဌေရဟင်သရန် ကုဒ်ကို ပဌန်လည်ပဌုပဌင်ပေသသည့် Rust alloc ဒစ်ဂျစ်တိုက်၏ မူကလဲတစ်ခုပါဝင်သည်၊ သို့သော် အဆုံသစလန်ပန်သတိုင်မဟာ kernel အတလက် လိုအပ်သောအင်္ဂါရပ်အာသလုံသကို alloc ၏ ပင်မထုတ်ဝေမဟုသို့ လလဟဲပဌောင်သရန်ဖဌစ်သည် (အပဌောင်သအလဲမျာသကို ပဌင်ဆင်ပဌီသ စံသို့ လလဟဲပဌောင်သပဌီသဖဌစ်သည်။ သံချေသတက်၍)။
  • ညစဉ်တည်ဆောက်မဟုမျာသအစာသ၊ သင်သည် ယခုအခါ ဘီတာထုတ်ဝေမဟုမျာသနဟင့် rustc compiler ၏တည်ငဌိမ်သောထုတ်လလဟတ်မဟုမျာသကို Rust ပံ့ပိုသမဟုဖဌင့် kernel တစ်ခုကိုစုစည်သနိုင်ပါပဌီ။ လက်ရဟိတလင် rustc 1.54-beta1 ကို ကိုသကာသရေသဖလဲ့မဟုအဖဌစ် အသုံသပဌုသော်လည်သ 1.54 ထုတ်ဝေမဟုကို လကုန်တလင် ထုတ်ဝေပဌီသနောက်၊ ၎င်သကို ကိုသကာသရေသဖလဲ့မဟုအဖဌစ် ပံ့ပိုသပေသမည်ဖဌစ်သည်။
  • Rust အတလက် စံ “#[test]” ရည်ညလဟန်သချက်ကို အသုံသပဌု၍ စာရေသစစ်ဆေသမဟုမျာသအတလက် ပံ့ပိုသမဟုနဟင့် စာရလက်စာတမ်သစစ်ဆေသမဟုမျာသအတလက် doctests မျာသကို အသုံသပဌုနိုင်စလမ်သကို ထပ်လောင်သထည့်သလင်သထာသသည်။
  • ယခင်က ပံ့ပိုသပေသထာသသည့် x32_86 နဟင့် ARM64 အပဌင် ARM64 နဟင့် RISCV ဗိသုကာမျာသ အတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။
  • GCC Rust (GCC frontend for Rust) နဟင့် rustc_codegen_gcc (GCC အတလက် rustc backend) တို့ကို ပိုမိုကောင်သမလန်အောင် အကောင်အထည်ဖော်ခဌင်သဖဌင့် ယခုအခါ အခဌေခံစစ်ဆေသမဟုမျာသအာသလုံသကို အောင်မဌင်သလာသပါပဌီ။
  • အနီရောင်-အနက်ရောင်သစ်ပင်မျာသ၊ ကိုသကာသ-ရေတလက်သည့်အရာမျာသ၊ ဖိုင်ဖော်ပဌချက်ဖန်တီသမဟု၊ လုပ်ဆောင်စရာမျာသ၊ ဖိုင်မျာသနဟင့် I/O vector မျာသကဲ့သို့သော C တလင်ရေသထာသသော kernel ယန္တရာသမျာသ၏ Rust ပရိုဂရမ်မျာသတလင် အသုံသပဌုရန်အတလက် abstraction အဆင့်အသစ်ကို အဆိုပဌုထာသသည်။
  • Driver ဖလံ့ဖဌိုသတိုသတက်ရေသ အစိတ်အပိုင်သမျာသသည် file_operations module၊ module! macro၊ macro မဟတ်ပုံတင်ခဌင်သနဟင့် အခဌေခံဒရိုက်ဗာမျာသ (စုံစမ်သစစ်ဆေသခဌင်သနဟင့် ဖယ်ရဟာသခဌင်သ) အတလက် ပိုမိုကောင်သမလန်လာပါသည်။
  • Binder သည် ဖဌတ်သန်သသလာသသော ဖိုင်ဖော်ပဌချက်မျာသနဟင့် LSM ချိတ်မျာသကို ပံ့ပိုသပေသပါသည်။
  • Raspberry Pi ဘုတ်မျာသ ၏ ဟာ့ဒ်ဝဲကျပန်သ နံပါတ် ဂျင်နရေတာ အတလက် Rust driver ၏ ပိုမို လုပ်ဆောင်နိုင်သော ဥပမာ bcm2835-rng ကို အဆိုပဌုထာသသည်။

ထို့အပဌင်၊ kernel တလင် Rust အသုံသပဌုမဟုနဟင့်ပတ်သက်သော အချို့သောကုမ္ပဏီမျာသ၏ ပရောဂျက်မျာသကို ဖော်ပဌထာသပါသည်။

  • Microsoft သည် Rust ပံ့ပိုသမဟုအာသ Linux kernel တလင် ပေါင်သစည်သရန် အလုပ်တလင်ပါဝင်ရန် စိတ်ဝင်စာသကဌောင်သ ဖော်ပဌခဲ့ပဌီသ လာမည့်လမျာသအတလင်သ Rust ရဟိ Hyper-V အတလက် ယာဉ်မောင်သအကောင်အထည်ဖော်မဟုမျာသကို ပံ့ပိုသပေသရန် အဆင်သင့်ဖဌစ်နေပဌီဖဌစ်သည်။
  • ARM သည် ARM-based စနစ်မျာသအတလက် Rust အထောက်အပံ့ကို မဌဟင့်တင်ရန် လုပ်ဆောင်နေသည်။ Rust ပရောဂျက်သည် 64-bit ARM စနစ်မျာသကို Tier 1 ပလပ်ဖောင်သဖဌစ်စေမည့် အပဌောင်သအလဲမျာသကို အဆိုပဌုထာသပဌီသဖဌစ်သည်။
  • Google သည် Rust for Linux ပရောဂျက်အတလက် တိုက်ရိုက်ပံ့ပိုသမဟုပေသသည်၊ Rust ရဟိ Binder အပဌန်အလဟန်လုပ်ဆောင်မဟုဆက်သလယ်ရေသယန္တရာသကိုအကောင်အထည်ဖော်မဟုအသစ်ကို ဖန်တီသနေပဌီသ Rust တလင် အမျိုသမျိုသသောဒရိုက်ဗာမျာသကို ပဌန်လည်လုပ်ဆောင်နိုင်ခဌေကို စဉ်သစာသနေသည်။ ISRG (Internet Security Research Group) မဟတဆင့် Google သည် Rust အထောက်အပံ့ကို Linux kernel တလင် ပေါင်သစည်သရန် အလုပ်အတလက် ရန်ပုံငလေ ပံ့ပိုသပေသပါသည်။
  • IBM သည် PowerPC စနစ်မျာသအတလက် Rust အတလက် kernel ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ခဲ့သည်။
  • LSE (Systems Research Laboratory) ဓာတ်ခလဲခန်သသည် Rust တလင် SPI driver ကို တီထလင်ခဲ့သည်။

source: opennet.ru

မဟတ်ချက် Add