Rust ပရိုဂရမ်းမင်းဘာသာစကား 2021 (1.56)

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

လိုက်ဖက်ညီမှုကို ထိန်းသိမ်းရန်၊ developer များသည် Rust ၏ ရွေးချယ်ထားသော ထုတ်ဝေမှုများနှင့် သက်ဆိုင်သော ဘာသာစကား ပြည်နယ်ချပ်များနှင့် ပရိုဂရမ်များကို ချိတ်ဆက်နိုင်စေမည့် ၎င်းတို့၏ ပရိုဂရမ်များတွင် "2015", "2018" နှင့် "2021" အညွှန်းများကို အသုံးပြုနိုင်ပါသည်။ သဟဇာတမဖြစ်သောပြောင်းလဲမှုများကို သီးခြားထုတ်ဝေမှုများကို မိတ်ဆက်ခဲ့ပြီး "[ပက်ကေ့ခ်ျ]" ကဏ္ဍရှိ “ထုတ်ဝေမှု” အကွက်မှတစ်ဆင့် ကုန်ပစ္စည်းအထုပ်များ၏ မက်တာဒေတာတွင် ထည့်သွင်းထားသည်။ ဥပမာအားဖြင့်၊ "2018" ထုတ်ဝေမှုတွင် 2018 နှစ်ကုန်ပိုင်းအထိ တည်ငြိမ်သော လုပ်ဆောင်နိုင်စွမ်းများ ပါ၀င်ပြီး လိုက်ဖက်ညီမှုမရှိသော နောက်ထပ်ပြောင်းလဲမှုများအားလုံးကိုလည်း အကျုံးဝင်ပါသည်။ 2021 ထုတ်ဝေမှုတွင် လက်ရှိ 1.56 ထုတ်ဝေမှုတွင် အဆိုပြုထားသည့် အပြန်အလှန်လုပ်ဆောင်နိုင်မှု-ချိုးဖျက်ခြင်းဆိုင်ရာ အင်္ဂါရပ်များပါ၀င်ပြီး အနာဂတ်အကောင်အထည်ဖော်မှုအတွက် အတည်ပြုထားသည်။ ဘာသာစကားကိုယ်တိုင်အပြင်၊ တည်းဖြတ်သူများသည် ကိရိယာများနှင့် စာရွက်စာတမ်းများ၏ အခြေအနေကိုလည်း ထည့်သွင်းစဉ်းစားသည်။

Rust 2021 တွင် မှတ်တမ်းတင်ထားသော အဓိက မကိုက်ညီမှုများ-

  • အပိတ်များတွင် သီးခြား ဖမ်းယူခြင်း - ပိတ်မှုများသည် ယခုအခါ သတ်မှတ်သူ တစ်ခုလုံးအစား အကွက်တစ်ခုစီ၏ အမည်များကို ဖမ်းယူနိုင်ပါပြီ။ ဥပမာ "|| ax + 1" သည် "a" အစား "ax" ကိုသာ ဖမ်းပါမည်။
  • arrays အတွက် IntoIterator စရိုက်လက္ခဏာ- array.into_iter() သည် အကိုးအကားများထက် array element များကို တန်ဖိုးများဖြင့် ထပ်ဆင့်ဖော်ပြနိုင်စေပါသည်။
  • Macro_rules တွင် "|" အသုံးအနှုန်းများကို ပြောင်းလဲထားပါသည်။ ပုံစံများတွင် (Boolean OR) - ယခုကိုက်ညီမှုများရှိ ":pat" သတ်မှတ်ချက်သည် "A | ကိုလေးစားပါသည်။ ခ"
  • ကုန်တင်ကုန်ချပက်ကေ့ဂျ်မန်နေဂျာတွင် Rust 1.51 တွင် ဖော်ပြထားသည့် ပံ့ပိုးကူညီမှု၏ ဒုတိယဗားရှင်းတွင် မူရင်းအတိုင်း ပါဝင်သည်။
  • TryFrom၊ TryInto နှင့် FromIterator စရိုက်များကို prelude standard library module တွင် ထည့်သွင်းထားသည်။
  • ထိတ်လန့်တုန်လှုပ်ဖွယ်ရာ !(..) နှင့် အခိုင်အမာ !(expr,..) မက်ခရိုများသည် ယခုအခါ println!() နှင့် ဆင်တူသော စာကြောင်းများဖော်မတ်ရန်အတွက် format_args!(..) ကို အမြဲအသုံးပြုပါသည်။
  • အသုံးအနှုန်းများကို ident#, ident»..." နှင့် ident'...' တို့ကို language syntax တွင် သိမ်းဆည်းထားသည်။
  • bare_trait_objects နှင့် ellipsis_inclusive_range_patterns သတိပေးချက်များကို အမှားများသို့ ရွှေ့ထားသည်။

Rust 1.56 တွင် အသစ်-

  • Cargo.toml တွင်၊ “[ပက်ကေ့ဂျ်]” ကဏ္ဍတွင်၊ သံချေးပုံစံအကွက်ကို ထည့်သွင်းထားပြီး၊ ၎င်းသည် ကုန်သေတ္တာပက်ကေ့ချ်အတွက် Rust ၏ အနိမ့်ဆုံးပံ့ပိုးထားသောဗားရှင်းကို သင်ဆုံးဖြတ်နိုင်မည်ဖြစ်သည်။ လက်ရှိဗားရှင်းသည် သတ်မှတ်ထားသော ကန့်သတ်ဘောင်နှင့် မကိုက်ညီပါက၊ ကုန်ပစ္စည်းသည် အမှားသတင်းတစ်ခုဖြင့် အလုပ်မလုပ်တော့ပါ။
  • "binding @ pattern" expressions များကို အသုံးပြုသည့် ပုံစံနှင့် ကိုက်ညီသောအခါ၊ အပိုစည်းနှောင်မှုများကို သတ်မှတ်ခြင်းအတွက် ပံ့ပိုးမှုပေးသည် (ဥပမာ၊ "let matrix @ Matrix { row_len, .. } = get_matrix();")။
  • API ၏ အစိတ်အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့ထားပြီး၊ နည်းလမ်းများနှင့် စရိုက်လက္ခဏာများကို အကောင်အထည်ဖော်ရာတွင် တည်ငြိမ်အောင်ပြုလုပ်ထားသည်-
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe၊ RefUnwindSafe၊ AssertUnwindSafe}
    • Vec::shrink_to
    • စာကြောင်း-:shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • ကိန်းသေများအစား မည်သည့်အကြောင်းအရာတွင်မဆို အသုံးပြုရန် ဖြစ်နိုင်ခြေကို ဆုံးဖြတ်ပေးသည့် "const" attribute ကို လုပ်ဆောင်ချက်များတွင် အသုံးပြုသည်
    • std::mem::အသံပြောင်း
    • [T]::ပထမ
    • [T]::split_first
    • [T]::နောက်ဆုံး
    • [T]::split_last
  • compiler သည် LLVM ဗားရှင်း 13 ကို အသုံးပြုရန် ပြောင်းထားသည်။
  • ပံ့ပိုးမှုဒုတိယအဆင့်ကို aarch64-apple-ios-sim ပလပ်ဖောင်းနှင့် powerpc-unknown-freebsd နှင့် riscv32imc-esp-espidf ပလပ်ဖောင်းများအတွက် တတိယအဆင့်ကို အကောင်အထည်ဖော်ခဲ့သည်။ တတိယအဆင့်တွင် အခြေခံပံ့ပိုးမှုပါဝင်သော်လည်း အလိုအလျောက်စမ်းသပ်ခြင်းမရှိဘဲ၊ တရားဝင်တည်ဆောက်မှုများကို ထုတ်ပြန်ခြင်း သို့မဟုတ် ကုဒ်ကိုတည်ဆောက်နိုင်သည်ရှိမရှိ စစ်ဆေးခြင်းမပြုဘဲဖြစ်သည်။

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

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

source: opennet.ru

မှတ်ချက် Add