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

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

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

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

  • အင်္ဂါရပ်များအတွင်း လုပ်ဆောင်ချက်နှင့်တူသော မက်ခရိုများကို အသုံးပြုနိုင်သည့် စွမ်းရည်ကို ပေါင်းထည့်ထားသည် (“macro_rules!” macro ကို အသုံးပြု၍ ဖန်တီးထားသော မက်ခရိုများ)။ ထိုသို့သော မက်ခရိုများကို “!” သင်္ကေတဖြင့် လုပ်ဆောင်ချက်များနှင့် ခွဲခြားထားသည်။ အမည်နောက်တွင် (macro!(...))) လုပ်ဆောင်ချက်ခေါ်ဆိုမှုကို ထုတ်လုပ်မည့်အစား မက်ခရိုရင်းမြစ်စာသားကို အစားထိုးခြင်း။ ရည်ညွှန်းချက်များအတွင်း မက်ခရိုများကို ခေါ်ဆိုခြင်းသည် မှတ်ချက်များကို မှတ်တမ်းတင်ရာတွင် အခြားဖိုင်များမှ အကြောင်းအရာများ အပါအဝင် အသုံးဝင်ပါသည်။ ဥပမာအားဖြင့်၊ README ဖိုင်၏ အကြောင်းအရာများနှင့် ဇာတ်ညွှန်းလုပ်ဆောင်မှု၏ ရလဒ်ကို ထည့်သွင်းရန်၊ သင်သည် သတ်မှတ်နိုင်သည်- #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" "), "/generated.rs" )] mod ထုတ်ပေးသည်;
  • wasm32 ပလပ်ဖောင်းအတွက် built-in compiler လုပ်ဆောင်ချက်များ (Intrinsics) သည် WebAssembly တွင် SIMD ညွှန်ကြားချက်များကို အသုံးပြုခွင့်ပေးသည်။ v128_bitselect ကဲ့သို့သော လုပ်ဆောင်ချက်အများစုသည် "safe" မုဒ်တွင် ရနိုင်သော်လည်း အချို့သောလုပ်ဆောင်ချက်များသည် pointers (ဥပမာ၊ v128_load) သည် "မလုံခြုံ" ဆဲဖြစ်သည်။
  • တိုးမြင့်စုစည်းမှု၏ ပုံသေအသုံးပြုမှုသည် ပြန်လည်ရောက်ရှိလာပြီး သေးငယ်သောပြောင်းလဲမှုများပြုလုပ်ပြီးနောက် ပရောဂျက်တစ်ခုတည်ဆောက်ရန် လိုအပ်သည့်အချိန်ကို သိသိသာသာလျှော့ချနိုင်သည့်ကုဒ်၏ ပြောင်းလဲထားသောအစိတ်အပိုင်းများကိုသာ ပြန်လည်တည်ဆောက်နိုင်စေမည်ဖြစ်သည်။ ဒစ်ခ်ကက်ရှ်မှ ဒေတာများတင်ခြင်းအတွက် ထပ်လောင်းစစ်ဆေးမှုကို ထည့်သွင်းပြီးနောက် ပေါ်လာသည့် ဝှက်ထားသော ချို့ယွင်းချက်များကြောင့် တိုးမြှင့်စုစည်းမှုအား ထုတ်ဝေမှု 1.52.1 တွင် ပိတ်ထားသည်။
  • APIs ၏ အပိုင်းအသစ်ကို အောက်ပါအတိုင်း တည်ငြိမ်အောင်ပြုလုပ်ခြင်းအပါအဝင် တည်ငြိမ်သောအမျိုးအစားသို့ လွှဲပြောင်းလိုက်သည်-
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • ကုန်တင်သစ်ပင်တွင် ရွေးချယ်စရာများ ထည့်ထားသည်- “—သုတ်သင်ပါ။ "-dependency ဂရပ်မှ ပက်ကေ့ဂျ်တစ်ခုကို ဖယ်ရှားရန်၊ "-depth" သည် မှီခိုမှုသစ်ပင်ရှိ ပေးထားသည့် nesting အဆင့်၏ဒြပ်စင်များကိုသာပြသရန်၊ "-edges no-proc-macro" လုပ်ထုံးလုပ်နည်း macro မှီခိုမှုကို ဖုံးကွယ်ရန် "-depth"။

source: opennet.ru

မှတ်ချက် Add