Rust ရှိ Linux kernel အတွက် လုံခြုံသော ဒရိုက်ဗာများကို ရေးသားရန်အတွက် မူဘောင်

Intel တွင်အလုပ်လုပ်ပြီး Crates.io ဖွံ့ဖြိုးတိုးတက်မှုကိုကြီးကြပ်သည့်ကော်မတီတွင်ရှိသော Josh Triplett သည် Open Source Technology Summit တွင်စကားပြောခဲ့သည်။ မိတ်ဆက်ပေးခဲ့သည် စနစ်ပရိုဂရမ်ရေးဆွဲခြင်းနယ်ပယ်တွင် Rust ဘာသာစကားကို C language နှင့် တန်းတူဖြစ်စေရန် ရည်ရွယ်သော အလုပ်အဖွဲ့တစ်ခု။

ဖန်တီးနေသည့် လုပ်ငန်းအဖွဲ့တွင်၊ Intel မှ အင်ဂျင်နီယာများနှင့်အတူ Rust developer များသည် စနစ်ပရိုဂရမ်ရေးဆွဲခြင်းအတွက် Rust တွင် အကောင်အထည်ဖော်ရန် လိုအပ်သည့် လုပ်ဆောင်နိုင်စွမ်းကို သတ်မှတ်သည့် သတ်မှတ်ချက်များကို ပြင်ဆင်မည်ဖြစ်သည်။ စနစ်ပရိုဂရမ်ရေးဆွဲခြင်းသည် အခွင့်ထူးခံပရိုဆက်ဆာညွှန်ကြားချက်များကို လုပ်ဆောင်ခြင်းနှင့် ပရိုဆက်ဆာ၏အခြေအနေအသေးစိတ်အချက်အလက်များကို ရယူခြင်းကဲ့သို့သော အဆင့်နိမ့်ခြယ်လှယ်မှုများ လိုအပ်သည်။ Rust အတွက် တီထွင်ထားပြီးသား အလားတူ အင်္ဂါရပ်များအနက်၊ အမည်မဖော်လိုသော ဖွဲ့စည်းပုံများ၊ သမဂ္ဂများအတွက် ပံ့ပိုးမှု၊ စည်းဝေးပွဲဘာသာစကား ထည့်သွင်းမှုများ (“asm!” macro) နှင့် BFLOAT16 ရေပေါ်အမှတ်ဖော်မတ်တို့ကို မှတ်သားထားသည်။

စနစ်ပရိုဂရမ်ရေးဆွဲခြင်း၏အနာဂတ်သည် Rust နှင့်သက်ဆိုင်သည်ဟု Josh ကယုံကြည်ပြီး ခေတ်သစ်ဖြစ်ရပ်မှန်များတွင် C language သည် လွန်ခဲ့သည့်နှစ်များက Assembly မှသိမ်းပိုက်ထားသည့်နေရာကိုတောင်းဆိုနေသည်။ သံချေး
အဆင့်နိမ့် Memory ဖြင့် အလုပ်လုပ်ခြင်းကြောင့် ဖြစ်ပေါ်လာသော C language တွင် ဖြစ်ပေါ်လာသော ပြဿနာများမှ developer များကို သက်သာရာရစေရုံသာမက ခေတ်မီ ပရိုဂရမ်ရေးဆွဲခြင်းဆိုင်ရာ ပါရာဒိုင်းများ ဖွံ့ဖြိုးတိုးတက်ရေးတွင်လည်း ၎င်းကို အသုံးပြုရန် အခွင့်အရေးကို ပေးပါသည်။

စဉ်အတွင်း ဆွေးနွေးချက်များ ဖျော်ဖြေပွဲ
Josh သည် Rust ဘာသာစကားရှိ Linux kernel တွင် driver များကို တီထွင်နိုင်စွမ်းကို ထည့်သွင်းရန် စိတ်ကူးရလာခဲ့ပြီး ၎င်းသည် လွတ်ကင်းပြီးနောက် memory access ကဲ့သို့သော ပြဿနာများမှ ကင်းလွတ်ကာ အနည်းငယ်သာ အားစိုက်ထုတ်ခြင်းဖြင့် ပိုမိုဘေးကင်းပြီး ပိုမိုကောင်းမွန်သော drivers များကို ဖန်တီးနိုင်စေမည်ဖြစ်သည်။ pointer dereferences နှင့် buffer overruns များ။

Linux kernel ၏ တည်ငြိမ်သော ဌာနခွဲကို ထိန်းသိမ်းရန် တာဝန်ရှိသော Greg Kroah-Hartman က၊ ဥပမာ C ထက် အမှန်တကယ် အားသာချက်များရှိပါက kernel တွင် Rust ဘာသာစကားဖြင့် driver များ ရေးဆွဲခြင်းအတွက် မူဘောင်တစ်ခုကို ထည့်သွင်းရန် အဆင်သင့်ရှိကြောင်း ထုတ်ဖော်ပြောကြားခဲ့သည်၊၊ Kernel API နှင့် ချိတ်ဆက်မှု။ ထို့အပြင်၊ Greg သည် kernel ပေါ်တွင် တည်ဆောက်မှုမှီခိုမှုတစ်ခုအဖြစ် Rust မပါဝင်စေရန် မူလပုံစံအတိုင်း လုပ်ဆောင်ခြင်းမရှိသည့် ရွေးချယ်မှုတစ်ခုအဖြစ် Greg ကယူဆသည်။

အဖွဲ့များစွာသည် ဤလမ်းကြောင်းအတိုင်း လုပ်ဆောင်နေပြီဟု သိလာရသည်။ ဥပမာအားဖြင့်၊ ကုမ္ပဏီ "ငါးစည်" မှ developer များ၊ ပြင်ဆင် လုံခြုံရေးတိုးမြှင့်ရန်အတွက် အင်တာဖေ့စ်များနှင့် kernel တည်ဆောက်ပုံများပေါ်ရှိ abstract အလွှာအစုံကို အသုံးပြု၍ Rust ဘာသာစကားရှိ Linux kernel အတွက် တင်နိုင်သော module များကို ရေးသားရန် ကိရိယာတန်ဆာပလာတစ်ခု။ utility ကို အသုံးပြု၍ ရှိပြီးသား kernel ခေါင်းစီးဖိုင်များအပေါ် အခြေခံ၍ အလွှာများကို အလိုအလျောက် ထုတ်ပေးပါသည်။ bingen. Clang ကို အလွှာများတည်ဆောက်ရာတွင် အသုံးပြုသည်။ interlayers အပြင်၊ စုစည်းထားသော module များသည် staticlib package ကိုအသုံးပြုသည်။

စင်ပြိုင် ဖွံ့ဖြိုးဆဲ kernel header ဖိုင်များကိုအခြေခံ၍ အလွှာများထုတ်လုပ်ရန် bindgen ကိုအသုံးပြုသည့် မြှုပ်သွင်းထားသောစနစ်များနှင့် IoT စက်ပစ္စည်းများအတွက် ဒရိုက်ဘာများကို တီထွင်ရန်အတွက် အဓိကလုပ်ဆောင်သည့် နောက်ထပ်ပရောဂျက်တစ်ခုဖြစ်သည်။ မူဘောင်သည် သင့်အား kernel တွင် အပြောင်းအလဲများမပြုလုပ်ဘဲ ယာဉ်မောင်းလုံခြုံရေးကို မြှင့်တင်နိုင်စေသည် - kernel အတွင်းရှိ ဒရိုက်ဘာများအတွက် ထပ်လောင်းအထီးကျန်အဆင့်များကို ဖန်တီးမည့်အစား ပိုမိုလုံခြုံသော Rust ဘာသာစကားကို အသုံးပြုကာ compilation အဆင့်တွင် ပြဿနာများကို ပိတ်ဆို့ရန် အဆိုပြုထားသည်။ ထိုသို့သောချဉ်းကပ်မှုသည် သင့်လျော်သောစာရင်းစစ်ကိုမလုပ်ဆောင်ဘဲ ကိုယ်ပိုင်ယာဉ်မောင်းများကို အလျင်အမြန်တီထွင်နေသော စက်ပစ္စည်းထုတ်လုပ်သူများ၏ တောင်းဆိုမှုဖြစ်နိုင်သည်ဟု ယူဆပါသည်။

ရည်ရွယ်ထားသည့် လုပ်ဆောင်နိုင်စွမ်းအားလုံးကို အကောင်အထည်မဖော်ရသေးသော်လည်း မူဘောင်သည် အလုပ်အတွက် အတော်လေးသင့်လျော်ပြီး Raspberry Pi 9512 ဘုတ်တွင် ပံ့ပိုးပေးထားသော LAN3 USB Ethernet controller အတွက် အလုပ်လုပ်သော driver တစ်ခုရေးရန် အသုံးပြုခဲ့သည်။ ရှိပြီးသား smsc95xx driver တွင် ရေးထားသော၊ C ဘာသာစကား။ Rust တွင် ဒရိုက်ဘာကို တီထွင်သောအခါတွင် မော်ဂျူးအရွယ်အစားနှင့် အပိုခေါင်းစဥ်များသည် Rust တွင် အရေးမပါသဖြင့် အကန့်အသတ်ရှိသော အရင်းအမြစ်များရှိသည့် စက်ပစ္စည်းများအတွက် မူဘောင်ကို အသုံးပြုခွင့်ပေးသည့် မူဘောင်ကို မှတ်သားထားသည်။

source: opennet.ru

မှတ်ချက် Add