Nick Desagnier (
Open Source Summit နှင့် Embedded Linux ကွန်ဖရင့်တွင် မကြာသေးမီက ဆွေးနွေးမှုတစ်ခုတွင် Linus Torvalds
- “Fish in a Barrel” ကုမ္ပဏီမှ developer များ၊
ပြင်ဆင် လုံခြုံရေးတိုးမြှင့်ရန်အတွက် အင်တာဖေ့စ်များနှင့် kernel တည်ဆောက်ပုံများပေါ်ရှိ abstract အလွှာအစုံကို အသုံးပြု၍ Rust ဘာသာစကားရှိ Linux kernel အတွက် တင်နိုင်သော module များကို ရေးသားရန် ကိရိယာတန်ဆာပလာတစ်ခု။ utility ကို အသုံးပြု၍ ရှိပြီးသား kernel ခေါင်းစီးဖိုင်များအပေါ် အခြေခံ၍ အလွှာများကို အလိုအလျောက် ထုတ်ပေးပါသည်။bingen . Clang ကို အလွှာများတည်ဆောက်ရာတွင် အသုံးပြုသည်။ interlayers အပြင်၊ စုစည်းထားသော module များသည် staticlib package ကိုအသုံးပြုသည်။ - ဟောင်ကောင် တရုတ်တက္ကသိုလ်မှ သုတေသီများ
ဖွံ့ဖြိုးတိုးတက် မြှုပ်သွင်းထားသောစနစ်များနှင့် Rust ရှိ Internet of Things စက်များအတွက် ဒရိုက်ဘာများကို တီထွင်ထုတ်လုပ်ရန် ပရောဂျက်တစ်ခုဖြစ်ပြီး kernel ခေါင်းစီးဖိုင်များကို အခြေခံ၍ အလွှာများထုတ်ပေးရန် bindgen ကိုအသုံးပြုသည်။ မူဘောင်သည် သင့်အား kernel တွင် အပြောင်းအလဲများမပြုလုပ်ဘဲ ယာဉ်မောင်းလုံခြုံရေးကို မြှင့်တင်နိုင်စေသည် - kernel အတွင်းရှိ ဒရိုက်ဘာများအတွက် ထပ်လောင်းအထီးကျန်အဆင့်များကို ဖန်တီးမည့်အစား ပိုမိုလုံခြုံသော Rust ဘာသာစကားကို အသုံးပြုကာ compilation အဆင့်တွင် ပြဿနာများကို ပိတ်ဆို့ရန် အဆိုပြုထားသည်။ ထိုသို့သောချဉ်းကပ်မှုသည် သင့်လျော်သောစာရင်းစစ်ကိုမလုပ်ဆောင်ဘဲ ကိုယ်ပိုင်ယာဉ်မောင်းများကို အလျင်အမြန်တီထွင်နေသော စက်ပစ္စည်းထုတ်လုပ်သူများ၏ တောင်းဆိုမှုဖြစ်နိုင်သည်ဟု ယူဆပါသည်။ - မူဘောင်ရေးဆွဲသူများ
C2Rust C ကုဒ်ကို Rust သို့ထုတ်လွှင့်ရန်အတွက်၊ဖြုန်း အနည်းဆုံး လက်စွဲတည်းဖြတ်မှုများဖြင့် kernel module များကို ပြောင်းလဲခြင်းဆိုင်ရာ စမ်းသပ်မှုများ။ မှတ်သားထားသောပြဿနာများထဲမှတစ်ခုမှာ C2Rust တွင်မပံ့ပိုးရသေးသော GCC extension များကိုအသုံးပြုသည့် kernel ၏အစိတ်အပိုင်းများစွာတွင်အသုံးပြုခြင်းဖြစ်ပါသည်။ ဤပြဿနာကိုဖြေရှင်းရန်၊ C2Rust သည် GCC ရည်ညွှန်းချက်များ inline၊ cold၊ alias၊ used နှင့် section အပြင် inline assembler ၏စွမ်းရည်များကို ချဲ့ထွင်ပြီး aligned နှင့် packed နှစ်ခုလုံးရှိသော တည်ဆောက်ပုံများနှင့် ပြဿနာများကို ဖြေရှင်းရန် စီစဉ်ထားသည် (ဥပမာ xregs_state) . ကိုယ်တိုင်လုပ်ဆောင်ရန် လိုအပ်သည့် သိသာထင်ရှားသောပြဿနာများမှာ အသေးအဖွဲမဟုတ်သော C မက်ခရိုများကို Rust မက်ခရိုသို့ ဘာသာပြန်ဆိုနိုင်ခြင်း မရှိခြင်းနှင့် အမျိုးအစားများကို ပြန်လည်သတ်မှတ်ရန် လိုအပ်ခြင်း၊ C2Rust သည် C အမျိုးအစားများကို libc ပက်ကေ့ခ်ျတွင် အဓိပ္ပါယ်ဖွင့်ဆိုချက်များအဖြစ် ဘာသာပြန်ဆိုသော်လည်း ဤပက်ကေ့ဂျ်ကို kernel module များတွင် အသုံးမပြုနိုင်ပါ။
source: opennet.ru