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

Rust-for-Linux ပရောဂျက်ကိုရေသသာသသူ Miguel Ojeda သည် Linux kernel developer မျာသအတလက် Rust language တလင် device drivers မျာသဖန်တီသရန်အတလက် တတိယအစိတ်အပိုင်သရလေသချယ်မဟုကို အဆိုပဌုခဲ့သည်။ သံချေသတက်ခဌင်သ ပံ့ပိုသမဟုကို စမ်သသပ်သည်ဟု ယူဆသော်လည်သ linux-next ဌာနခလဲတလင် ပါဝင်ရန် သဘောတူထာသပဌီသဖဌစ်သည်။ တီထလင်မဟုကို 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.57 ၏တည်ငဌိမ်သောထုတ်ဝေမဟုကိုအသုံသပဌုပဌီသ Rust 2021 ဘာသာစကာသ၏တည်ငဌိမ်သောထုတ်ဝေမဟုလင့်ခ်ကို ပေသဆောင်ထာသသည်။ ယခင်က ဖာထေသမဟုမျာသကို Rust ၏ beta ဌာနခလဲနဟင့်ချိတ်ဆက်ထာသပဌီသ အချို့သောဘာသာစကာသအင်္ဂါရပ်မျာသကိုအသုံသပဌုခဲ့သည်။ မတည်မငဌိမ်အဖဌစ် သတ်မဟတ်ထာသသည်။ Rust 2021 သတ်မဟတ်ချက်သို့ ကူသပဌောင်သခဌင်သသည် const_fn_transmute၊ const_panic၊ const_unavailable_unchecked နဟင့် core_panic နဟင့် try_reserve ကဲ့သို့သော ဖာထေသမဟုမျာသတလင် မတည်မငဌိမ်သော အင်္ဂါရပ်မျာသကို အသုံသပဌုခဌင်သမဟ ရဟောင်ကဌဉ်နိုင်စေပါသည်။
  • ဖာထေသမဟုမျာသတလင် ပါဝင်သော Rust စာကဌည့်တိုက်၏ ခလဲဝေသုံသစလဲမဟုဗာသရဟင်သ ဖလံ့ဖဌိုသတိုသတက်မဟုကို ဆက်လက်လုပ်ဆောင်နေပဌီသ အမဟာသအယလင်သမျာသ ပေါ်ပေါက်လာသောအခါတလင် အမဟာသအယလင်သမျာသ ပေါ်ပေါက်လာသောအခါတလင် “ထိတ်လန့်ခဌင်သ” အခဌေအနေ၏ ဖဌစ်နိုင်ခဌေရဟိသော “ထိတ်လန့်ခဌင်သ” အခဌေအနေ၏ မလမ်သမံမဟုမျာသအာသ ဖယ်ရဟာသရန် ပဌုပဌင်ခဲ့သည်။ ဗာသရဟင်သအသစ်တလင် kernel Rust ကုဒ်တလင် အသုံသမပဌုသည့် လုပ်ဆောင်ချက်မျာသကို ပိတ်ရန် "no_rc" နဟင့် "no_sync" ရလေသချယ်မဟုမျာသကို အကောင်အထည်ဖော်ပဌီသ စာကဌည့်တိုက်ကို မော်ဂျူလာဖဌစ်စေသည်။ kernel အတလက် လိုအပ်သော အပဌောင်သအလဲမျာသကို ပင်မစာကဌည့်တိုက်သို့ လလဟဲပဌောင်သပေသရန် ရည်ရလယ်သော ပင်မခလဲတမ်သဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသနဟင့်အတူ အလုပ်ဆက်လုပ်သည်။ kernel အဆင့်တလင် လုပ်ဆောင်ရန် စာကဌည့်တိုက်အတလက် လိုအပ်သော “no_fp_fmt_parse” ရလေသချယ်ခလင့်ကို Rust အခဌေခံစာကဌည့်တိုက် (core) သို့ ရလဟေ့ထာသသည်။
  • CONFIG_WERROR မုဒ်တလင် kernel ကိုတည်ဆောက်သောအခါ ဖဌစ်နိုင်သော compiler သတိပေသချက်မျာသကို ဖယ်ရဟာသရန် ကုဒ်ကို သန့်စင်ထာသသည်။ Rust တလင် ကုဒ်တည်ဆောက်သည့်အခါ၊ ထပ်ဆောင်သ compiler ရောဂါရဟာဖလေရေသမုဒ်မျာသနဟင့် Clippy linter သတိပေသချက်မျာသကို ဖလင့်ထာသသည်။
  • Abstractions မျာသသည် seqlocks (sequence locks)၊ power management အတလက် callback calls၊ I/O Memory (readX/writeX)၊ interrupt နဟင့် thread handlers၊ GPIO၊ စက်မျာသ၊ ယာဉ်မောင်သမျာသနဟင့် အထောက်အထာသမျာသထံ ဝင်ရောက်ခလင့်အတလက် Abstractions မျာသကို အသုံသပဌုရန် အဆိုပဌုထာသပါသည်။
  • ယာဉ်မောင်သဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ကိရိယာမျာသတလင် နေရာရလဟေ့ပဌောင်သနိုင်သော mutexes၊ bit iterators၊ ရိုသရဟင်သသော pointer bindings၊ ပိုမိုကောင်သမလန်သော အမဟာသရဟာဖလေခဌင်သမျာသနဟင့် ဒေတာဘတ်စ်ကာသ-အမဟီအခိုကင်သသော အခဌေခံအဆောက်အညမျာသပါ၀င်ရန် ချဲ့ထလင်ထာသပါသည်။
  • အကိုသအကာသမျာသရေတလက်ရန်အတလက် တူညီသောအမည်၏ kernel API ကိုအသုံသပဌုသည့် refcount_t နောက်ခံကိုအခဌေခံ၍ ရိုသရဟင်သသော Ref အမျိုသအစာသကို အသုံသပဌုသည့် လင့်ခ်မျာသဖဌင့် ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်ပါ။ Standard alloc ဒစ်ဂျစ်တိုက်တလင် ပံ့ပိုသပေသထာသသည့် Arc နဟင့် Rc အမျိုသအစာသမျာသအတလက် ပံ့ပိုသမဟုကို ဖယ်ရဟာသလိုက်ပဌီသ kernel အဆင့်တလင် လုပ်ဆောင်သည့် ကုဒ်တလင် မရရဟိနိုင်ပါ (ကအမျိုသအစာသမျာသကို ပိတ်ထာသသည့် စာကဌည့်တိုက်ကိုယ်တိုင်အတလက် ရလေသချယ်စရာမျာသကို ပဌင်ဆင်ထာသသည်)။
  • ဖာထေသမဟုမျာသတလင် Rust တလင် ပဌန်လည်ရေသသာသထာသသော PL061 GPIO ဒရိုက်ဘာဗာသရဟင်သတစ်ခုပါဝင်သည်။ ဒရိုင်ဘာ၏ အထူသအင်္ဂါရပ်မဟာ ၎င်သ၏ အကောင်အထည်ဖော်ဆောင်ရလက်မဟုသည် လက်ရဟိ GPIO ဒရိုက်ဘာကို C ဘာသာစကာသဖဌင့် ထပ်ခါတလဲလဲ လုပ်ဆောင်နေခဌင်သ ဖဌစ်သည်။ Rust တလင် ဒရိုက်ဘာမျာသ ဖန်တီသခဌင်သနဟင့် ရင်သနဟီသလိုသည့် developer မျာသအတလက်၊ Rust တလင် မည်သည့် constructs မျာသကို C ကုဒ်အဖဌစ်သို့ ပဌောင်သလဲမည်ကို နာသလည်နိုင်စေမည့် လိုင်သတစ်ခုချင်သ နဟိုင်သယဟဉ်ချက်ကို ပဌင်ဆင်ထာသပါသည်။
  • ပင်မ Rust ကုဒ်ဘေ့စ်သည် libgccjit စာကဌည့်တိုက်ကို အသုံသပဌု၍ အချိန်မတိုင်မီ (AOT) စုစည်သမဟုကို အကောင်အထည်ဖော်သည့် GCC အတလက် rustc နောက်ခံအယ်လ်ဘမ် rustc_codegen_gcc ကို အသုံသပဌုထာသသည်။ backend ၏ မဟန်ကန်သော ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့်အတူ၊ ၎င်သသည် GCC ကို အသုံသပဌု၍ kernel တလင်ပါဝင်သော Rust ကုဒ်ကို စုဆောင်သနိုင်စေမည်ဖဌစ်သည်။
  • ARM၊ Google နဟင့် Microsoft အပဌင် Red Hat သည် Linux kernel တလင် Rust ဘာသာစကာသကို အသုံသပဌုရန် စိတ်ဝင်စာသကဌောင်သ ဖော်ပဌခဲ့သည်။ Google သည် Rust for Linux ပရောဂျက်အတလက် တိုက်ရိုက်ပံ့ပိုသမဟုပေသသည်၊ Rust ရဟိ Binder အပဌန်အလဟန်ဆက်သလယ်မဟုယန္တရာသ၏အကောင်အထည်ဖော်မဟုအသစ်ကို ဖန်တီသနေပဌီသ Rust တလင် အမျိုသမျိုသသောဒရိုက်ဗာမျာသကို ပဌန်လည်လုပ်ဆောင်နိုင်ခဌေကို စဉ်သစာသနေကဌောင်သ ကျလန်ုပ်တို့သတိရကဌပါစို့။ Microsoft သည် Rust တလင် Hyper-V အတလက် drivers မျာသကိုစတင်အကောင်အထည်ဖော်ခဲ့သည်။ ARM သည် ARM-based စနစ်မျာသအတလက် Rust အထောက်အပံ့ကို မဌဟင့်တင်ရန် လုပ်ဆောင်နေသည်။ IBM သည် PowerPC စနစ်မျာသအတလက် kernel တလင် Rust ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ခဲ့သည်။

source: opennet.ru

မဟတ်ချက် Add