Rust 1.53 ထလက်ရဟိသည်။ Google သည် Linux kernel တလင် Rust ပံ့ပိုသမဟုကို ရန်ပုံငလေထည့်မည်ဖဌစ်သည်။

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

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

အဓိက တီထလင်ဆန်သသစ်မဟုမျာသ-

  • array မျာသအတလက်၊ IntoIterator trait ကို တန်ဖိုသမျာသဖဌင့် array element မျာသကို ထပ်တလဲလဲ စုစည်သနိုင်စေမည့် IntoIterator စရိုက်ကို အကောင်အထည်ဖော်နိုင်သည်- [1၊ 2၊ 3] { .. }

    array မျာသကို iterators လက်ခံသည့်နည်သလမ်သမျာသသို့ ပေသပို့နိုင်သည်၊ ဥပမာ- set = BTreeSet::from_iter([1, 2, 3]); some_iterator.chain([1]).zip([1, 2, 3]) { .. } အတလက် (a, b)

    ယခင်က IntoIterator သည် array ကိုသကာသမဟုအတလက်သာ လုပ်ဆောင်ခဲ့သည်၊ ဆိုလိုသည်မဟာ၊ ကိုသကာသချက်မျာသအသုံသပဌုရန် လိုအပ်သောတန်ဖိုသမျာသကို ကျော်ရန် (“&[1, 2, 3]”) သို့မဟုတ် “[1, 2, 3].iter()”။ array.into_iter() မဟ (&array).into_iter() သို့ အစောပိုင်သ compiler မဟ array.into_iter() သို့ ပဌောင်သလဲခဌင်သကဌောင့် ပေါင်သစပ်လိုက်ဖက်မဟု ပဌဿနာမျာသကဌောင့် အဟန့်အတာသ ဖဌစ်စေပါသည်။ ကပဌဿနာမျာသကို ဖဌေရဟင်သနည်သဖဌင့် ဖဌေရဟင်သထာသသည် - compiler သည် array.into_iter() ကို (&array).into_iter() သို့ ဆက်လက်ပဌောင်သလဲသလာသမည်ဖဌစ်ပဌီသ IntoIterator စရိုက်ကို အကောင်အထည်ဖော်ခဌင်သမရဟိပါက ".into_iter(") ကိုအသုံသပဌုသည့်နည်သလမ်သကိုခေါ်ဆိုသည့်အခါမဟသာ ဆက်လက်လုပ်ဆောင်မည်ဖဌစ်သည်။ )" အထာသအသို နဟင့် "[1၊ 2၊ 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]] ပုံစံဖဌင့် ခေါ်ဆိုမဟုမျာသကို မထိဘဲ၊ ) ” ။

  • “|” ဟူသော အသုံသအနဟုန်သမျာသကို သတ်မဟတ်ရန် ဖဌစ်နိုင်သည်။ ဥပမာအာသဖဌင့် “Some(1) | Some(2)" ယခုသင် "Some(1 | 2)" ကိုရေသနိုင်ပါပဌီ- ပလဲရလဒ် { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • ယူနီကုဒ် UAX 31 သတ်မဟတ်ချက်တလင် သတ်မဟတ်ထာသသော အီမိုဂျီအက္ခရာမျာသ မပါဝင်သော်လည်သ သင်္ကေတမျာသတလင် ASCII မဟုတ်သော အက္ခရာမျာသကို အသုံသပဌုခဌင်သကို ခလင့်ပဌုထာသသည်။ ကလဲပဌာသသော်လည်သ ဆင်တူသော အက္ခရာမျာသကို အသုံသပဌုပါက၊ စုစည်သမဟုမဟ သတိပေသချက် ထုတ်ပဌန်ပါမည်။ const BLÅHAJ: &str = "🊈"; struct 人 { 名字: ကဌိုသတစ်ချောင်သ၊ } α = 1 ရအောင်၊ letos = 2; သတိပေသချက်- အမဟတ်အသာသအတလဲ '' နဟင့် 's' အကဌာသ ရဟုပ်ထလေသသည်ဟု ယူဆသည်
  • APIs ၏ အပိုင်သအသစ်ကို အောက်ပါအတိုင်သ တည်ငဌိမ်အောင်ပဌုလုပ်ခဌင်သအပါအဝင် တည်ငဌိမ်သောအမျိုသအစာသသို့ လလဟဲပဌောင်သလိုက်သည်-
    • array::from_ref
    • array::from_mut
    • AtomicBool-:fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::ထိန်သသိမ်သပါ။
    • BTreeMap::ထိန်သသိမ်သပါ။
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • ကဌာချိန်-:ZERO
    • ကဌာချိန်-:MAX
    • ကဌာချိန်-:is_zero
    • ကဌာချိန်-:saturating_add
    • ကဌာချိန်-:saturating_sub
    • ကဌာချိန်-:saturating_mul
    • f32:: is_subnormal
    • f64:: is_subnormal
    • arrays အတလက် IntoIterator
    • { integer}::BITS
    • io::Error::မပံ့ပိုသပါ။
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • ရလေသချယ်မဟု-: ထည့်သလင်သပါ။
    • မဟာယူခဌင်သ-:is_eq
    • မဟာယူခဌင်သ-:is_ne
    • မဟာယူခဌင်သ-:is_lt
    • မဟာယူခဌင်သ-:is_gt
    • မဟာယူခဌင်သ-:is_le
    • မဟာယူခဌင်သ-:is_ge
    • OsStr::make_ascii_ စာလုံသသေသ
    • OsStr::make_ascii_ စာလုံသကဌီသ
    • OsStr::to_ascii_ စာလုံသသေသ
    • OsStr::to_ascii_ စာလုံသကဌီသ
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Peekable::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • အချပ်::IterMut::as_slice
    • အချပ်::IterMut အတလက် AsRef<[T]>
    • impl SliceIndex for (Bound ကဌိုသချည်၊ )
    • Vec::extend_from_အတလင်သ
  • wasm64-unknown-unknown platform အတလက် တတိယအဆင့် ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ပဌီသပါပဌီ။ တတိယအဆင့်တလင် အခဌေခံပံ့ပိုသမဟုပါဝင်သော်လည်သ အလိုအလျောက်စမ်သသပ်ခဌင်သမရဟိဘဲ၊ တရာသဝင်တည်ဆောက်မဟုမျာသကို ထုတ်ပဌန်ခဌင်သ သို့မဟုတ် ကုဒ်ကိုတည်ဆောက်နိုင်သည်ရဟိမရဟိ စစ်ဆေသခဌင်သမပဌုဘဲဖဌစ်သည်။
  • ပုံမဟန်အာသဖဌင့် Git repository (HEAD) ၏ အဓိကဌာနခလဲအတလက် "ပင်မ" အမည်ကို အသုံသပဌုရန် ကုန်တင်အထုပ်မန်နေဂျာကို ရလဟေ့ထာသသည်။ မာစတာအစာသ name main ကိုအသုံသပဌုသည့် repositories တလင် လက်ခံထာသသည့်မဟီခိုမဟုမျာသသည် branch = "main" ကို configure လုပ်ရန် မလိုအပ်တော့ပါ။
  • compiler တလင်၊ LLVM ၏အနည်သဆုံသဗာသရဟင်သအတလက်လိုအပ်ချက်မျာသကို LLVM 10 သို့တိုသမဌဟင့်ထာသသည်။

ထို့အပဌင်၊ Rust ဘာသာစကာသတလင် အစိတ်အပိုင်သမျာသ ဖော်ဆောင်ရန်အတလက် ကိရိယာမျာသ၏ Linux kernel တလင် ပေါင်သစပ်ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ရန်ပုံငလေပံ့ပိုသပေသမဟုကို ကျလန်ုပ်တို့ မဟတ်သာသနိုင်ပါသည်။ Let's Encrypt ပရောဂျက်ကို တည်ထောင်သူဖဌစ်သည့် ISRG အဖလဲ့အစည်သ (Internet Security Research Group) ၏ ပံ့ပိုသကူညီမဟုအောက်တလင် Prossimo ပရောဂျက်၏ မူဘောင်ဘောင်အတလင်သ ဆောင်ရလက်သလာသမည်ဖဌစ်ပဌီသ၊ HTTPS ၏ လုံခဌုံရေသကို မဌဟင့်တင်ရန်နဟင့် နည်သပညာမျာသ ဖလံ့ဖဌိုသတိုသတက်စေရန်၊ အင်တာနက်။ ရန်ပုံငလေမျာသကို Rust-for-Linux ပရောဂျက်ရေသသာသသူ Miguel Ojeda ၏အလုပ်အတလက် Google မဟ ထောက်ပံ့ပေသမည်ဖဌစ်သည်။ ယခင်က၊ ISRG နဟင့် Google သည် curl utility အတလက် အစာသထိုသ HTTP backend ဖန်တီသခဌင်သနဟင့် Apache http server အတလက် TLS module အသစ်တစ်ခု ဖလံ့ဖဌိုသတိုသတက်ရေသ အတလက် ရန်ပုံငလေ ထောက်ပံ့ပေသထာသပဌီသဖဌစ်သည်။

Microsoft နဟင့် Google တို့၏ အဆိုအရ အာသနည်သချက်မျာသ၏ 70% သည် မလုံခဌုံသော memory ကိုင်တလယ်မဟုကဌောင့် ဖဌစ်ရသည်။ စက်ပစ္စည်သဒရိုက်ဗာမျာသကဲ့သို့သော kernel အစိတ်အပိုင်သမျာသကို ဖလံ့ဖဌိုသတိုသတက်ရန် Rust ဘာသာစကာသကို အသုံသပဌုခဌင်သသည် မလုံခဌုံသောမဟတ်ဉာဏ်ကို ကိုင်တလယ်ခဌင်သကဌောင့် ဖဌစ်ပေါ်လာသော အာသနည်သချက်မျာသ၏ အန္တရာယ်ကို လျဟော့ချနိုင်ပဌီသ ၎င်သကို လလတ်မဌောက်ပဌီသ ကဌာသခံနယ်နိမိတ်မျာသကို ကျော်လလန်ပဌီသနောက် မန်မိုရီဒေသသို့ ဝင်ရောက်ခဌင်သကဲ့သို့သော အမဟာသအယလင်သမျာသကို ဖယ်ရဟာသပေသမည်ဟု မျဟော်လင့်ရသည်။

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

source: opennet.ru

မဟတ်ချက် Add