Rust 1.62 ပရိုဂရမ်းမင်းဘာသာစကား ဖြန့်ချိသည်။

Mozilla ပရောဂျက်မှ တည်ထောင်ထားသော Rust 1.62 အထွေထွေ-ရည်ရွယ်ချက် ပရိုဂရမ်းမင်းဘာသာစကားကို ထုတ်ဝေခဲ့သော်လည်း ယခုအခါ လွတ်လပ်သော အကျိုးအမြတ်မယူသော အဖွဲ့အစည်း Rust Foundation ၏ ပံ့ပိုးကူညီမှုဖြင့် ထုတ်ဝေလိုက်ပါသည်။ ဘာသာစကားသည် မှတ်ဉာဏ်ဘေးကင်းရေးကို အာရုံစိုက်ပြီး အမှိုက်စုဆောင်းသူနှင့် runtime ကိုအသုံးပြုခြင်းကို ရှောင်ကြဉ်နေစဉ်တွင် မြင့်မားသောအလုပ်အပြိုင်ရရှိရန် နည်းလမ်းများကို ပံ့ပိုးပေးသည် (runtime ကို အခြေခံအစပျိုးခြင်းနှင့် စံစာကြည့်တိုက်ကို ပြုပြင်ထိန်းသိမ်းမှုသို့ လျှော့ချထားသည်)။

Rust ၏ မမ်မိုရီ ကိုင်တွယ်မှုနည်းလမ်းများသည် ညွှန်မှတ်များကို အသုံးချသည့်အခါ ဆော့ဖ်ဝဲရေးသားသူကို အမှားအယွင်းများမှ ကယ်တင်ပြီး အဆင့်နိမ့်မှတ်ဉာဏ် ကိုင်တွယ်မှုတွင် ဖြစ်ပေါ်လာသည့် ပြဿနာများကို ကာကွယ်ရန်၊ ၎င်းကို လွတ်ပြီးသည့်နောက် မမ်မိုရီဧရိယာသို့ ဝင်ရောက်ခြင်း၊ null pointers များကို ဆိုင်းငံ့ထားခြင်း၊ ကြားခံများ ကျော်လွန်ခြင်းများစသည်ဖြင့် ဖြစ်ပေါ်လာသော ပြဿနာများကို ကာကွယ်ပေးပါသည်။ စာကြည့်တိုက်များကို ဖြန့်ဝေရန်၊ တည်ဆောက်မှုများနှင့် မှီခိုအားထားမှုများကို စီမံရန်၊ ပရောဂျက်သည် Cargo package manager ကို တီထွင်သည်။ crates.io repository ကို hosting libraries များအတွက် ပံ့ပိုးထားပါသည်။

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

အဓိက တီထွင်ဆန်းသစ်မှုများ-

  • "ကုန်တင်ကုန်ချ" ပက်ကေ့ဂျ်မန်နေဂျာသည် Cargo.toml မန်နီးဖက်စ်တွင် မှီခိုမှုအသစ်များကို ပေါင်းထည့်နိုင်စေရန် သို့မဟုတ် အမိန့်ပေးစာကြောင်းမှ ရှိပြီးသားမှီခိုအားထားမှုများကို ပြောင်းလဲနိုင်စေသည့် "add" အမိန့်ပေးသည်။ အဆိုပါအမိန့်သည် သင့်အား တစ်ဦးချင်းစီ၏အင်္ဂါရပ်များနှင့် ဗားရှင်းများကို သတ်မှတ်နိုင်စေသည်၊ ဥပမာ- ကုန်တင်ကုန်ချထည့်သွင်းခြင်း —features derive cargo add nom@5
  • “#[default]” attribute ကိုအသုံးပြု၍ ပုံသေရွေးချယ်မှုကို သတ်မှတ်သည့်စာရင်းများဖြင့် “#[derive(Default)]” ကို အသုံးပြုရန် စွမ်းရည်ကို ပေါင်းထည့်ထားသည်။ #[derive(Default)] enum ဖြစ်နိုင်တယ်။ { #[default] ဘာမှ၊ Something(T), }
  • Linux ပလပ်ဖောင်းတွင်၊ Linux kernel မှပံ့ပိုးပေးထားသည့် futexes ကိုအသုံးပြုမှုအပေါ် အခြေခံ၍ Mutex ထပ်တူပြုခြင်းယန္တရား၏ ပိုမိုကျစ်လျစ်ပြီး ပိုမိုမြန်ဆန်သောအကောင်အထည်ဖော်မှုကို အသုံးပြုပါသည်။ pthreads စာကြည့်တိုက်ကို အခြေခံထားသော ယခင်အသုံးပြုခဲ့သည့် အကောင်အထည်ဖော်မှုနှင့် မတူဘဲ၊ ဗားရှင်းအသစ်သည် Mutex အခြေအနေအား သိမ်းဆည်းရန် 5 အစား 40 bytes ကိုသာ အသုံးပြုပါသည်။ အလားတူပင်၊ Condvar နှင့် RwLock လော့ခ်ချသည့် ယန္တရားများကို futex သို့ လွှဲပြောင်းထားပါသည်။
  • x86_64-unknown-none ပစ်မှတ်ပလပ်ဖောင်းအတွက် ပံ့ပိုးမှုဒုတိယအဆင့်ကို အကောင်အထည်ဖော်ခဲ့ပြီး၊ လည်ပတ်မှုစနစ်မပါဘဲ အလုပ်လုပ်နိုင်သော ဖိုင်များကို ထုတ်လုပ်ရန် ဒီဇိုင်းထုတ်ထားသည်။ ဥပမာအားဖြင့်၊ သတ်မှတ်ထားသော ပစ်မှတ်ပလပ်ဖောင်းကို kernel အစိတ်အပိုင်းများကို ရေးသားသည့်အခါတွင် အသုံးပြုနိုင်သည်။ ပံ့ပိုးမှုဒုတိယအဆင့်တွင် စည်းဝေးပွဲအာမခံချက် ပါဝင်ပါသည်။
  • ပံ့ပိုးမှုတတိယအဆင့်ကို aarch64-pc-windows-gnullvm နှင့် x86_64-pc-windows-gnullvm ပလပ်ဖောင်းများအတွက် အကောင်အထည်ဖော်ခဲ့သည်။ တတိယအဆင့်တွင် အခြေခံပံ့ပိုးမှုပါဝင်သော်လည်း အလိုအလျောက်စမ်းသပ်ခြင်းမရှိဘဲ၊ တရားဝင်တည်ဆောက်မှုများကို ထုတ်ပြန်ခြင်း သို့မဟုတ် ကုဒ်တည်ဆောက်နိုင်မှု ရှိ၊ မရှိ စစ်ဆေးခြင်းများ ပါဝင်သည်။
  • API ၏ အစိတ်အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့ထားပြီး၊ နည်းလမ်းများနှင့် စရိုက်လက္ခဏာများကို အကောင်အထည်ဖော်ရာတွင် တည်ငြိမ်အောင်ပြုလုပ်ထားသည်-
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::လိုင်းများ
    • windows::CommandExt::raw_arg
    • impl AssertUnwindSafe အတွက် မူရင်းတန်ဖိုး
    • ထံမှ > Rc အတွက်
    • ထံမှ > Arc<[u8]> အတွက်
    • EncodeWide အတွက် FusedIterator

    source: opennet.ru

မှတ်ချက် Add