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

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

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

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

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

  • rustc compiler တလင် စမ်သသပ်နေစဉ်အတလင်သ ကုဒ်လလဟမ်သခဌုံမဟုကို အကဲဖဌတ်ရန် အသုံသပဌုသည့် လလဟမ်သခဌုံဒေတာထုတ်ပေသရန်အတလက် တည်ငဌိမ်သော LLVM-based စနစ်တစ်ခု ရဟိသည်။ စည်သဝေသပလဲအတလင်သ လလဟမ်သခဌုံမဟုဒေတာကို ဖလင့်ရန်အတလက် သင်သည် “-Cinstrument-coverage” အလံကို အသုံသပဌုရမည်ဖဌစ်ပဌီသ၊ ဥပမာအာသဖဌင့်၊ “RUSTFLAGS=”-C instrument-coverage” cargo build” အမိန့်ဖဌင့် စည်သဝေသပလဲကို စတင်ပါ။ ကနည်သဖဌင့် စုစည်သထာသသော executable file ကို run ပဌီသနောက်၊ llvm-tools-preview အစိတ်အပိုင်သမဟ llvm-profdata utility ကို အသုံသပဌု၍ လုပ်ဆောင်ရန်အတလက် default.profraw ဖိုင်ကို လက်ရဟိ directory တလင် သိမ်သဆည်သမည်ဖဌစ်ပါသည်။ ထို့နောက် llvm-profdata မဟ လုပ်ဆောင်ခဲ့သော အထလက်အာသ အမဟတ်အသာသပဌု ကုဒ်လလဟမ်သခဌုံမဟု အစီရင်ခံစာကို ထုတ်ပေသရန်အတလက် llvm-cov သို့ ပေသပို့နိုင်ပါသည်။ အရင်သအမဌစ်ကုဒ်သို့ လင့်ခ်နဟင့်ပတ်သက်သည့် အချက်အလက်ကို အကျုံသဝင်သည့်ကောင်တာမျာသနဟင့် ကုဒ်ကဌာသချိတ်ဆက်မဟုဆိုင်ရာ လိုအပ်သောဒေတာမျာသပါ၀င်သည့် စစ်ဆေသမဟုလုပ်ဆောင်နိုင်သောဖိုင်မဟ ရယူပါသည်။ 1| 1|fn main() { 2| 1| println!("မင်္ဂလာပါ ကမ္ဘာ!"); ၃| 3|}
  • ကုန်တင်ကုန်ချပက်ကေ့ဂျ်မန်နေဂျာတလင်၊ တည်ဆောက်မဟုတိုသတက်မဟုနဟင့် အဆင့်တစ်ခုစီ၏လုပ်ဆောင်မဟုအချိန်တို့ပါဝင်သည့် "-times" အလံအတလက် ပံ့ပိုသမဟုကို တည်ငဌိမ်အောင်ပဌုလုပ်ထာသသည်။ စည်သဝေသပလဲလုပ်ငန်သစဉ်၏ စလမ်သဆောင်ရည်ကို အကောင်သဆုံသဖဌစ်အောင် အစီရင်ခံစာသည် အသုံသဝင်နိုင်သည် ။
  • ကုန်တင်ကုန်ချပက်ကေ့ဂျ်မန်နေဂျာသည် [အင်္ဂါရပ်မျာသ] ကဏ္ဍရဟိ အမည်ရဟိဂုဏ်သတ္တိမျာသစာရင်သကို စာရင်သပဌုစုပဌီသ ပက်ကေ့ခ်ျတည်ဆောက်စဉ်အတလင်သ ဂုဏ်သတ္တိမျာသကို ဖလင့်ထာသခဌင်သဖဌင့် စိတ်ကဌိုက်ရလေသချယ်မဟုဆိုင်ရာ စိတ်ကဌိုက်ရလေသချယ်မဟုဆိုင်ရာ ယန္တရာသအတလက် အထာသအသိုအသစ်တစ်ခု ပေသဆောင်ပေသပါသည်။ "--features" အလံကို အသုံသပဌု. ဗာသရဟင်သအသစ်သည် သီသခဌာသ namespaces နဟင့် အာသနည်သသော မဟီခိုမဟုမျာသအတလက် မဟီခိုအာသဖဌည့်ပေသပါသည်။

    ပထမကိစ္စတလင်၊ ကမဟီခိုမဟုအာသ အင်္ဂါရပ်တစ်ခုအဖဌစ် သလယ်ဝိုက်သောအာသဖဌင့် ကိုယ်စာသပဌုခဌင်သမပဌုဘဲ ရလေသချယ်နိုင်သောမဟီခိုမဟုတစ်ခုသို့ ပဌတ်သာသစလာလင့်ခ်ချိတ်ရန် "[features]" ကဏ္ဍအတလင်သ ရဟေ့ဆက် “dep:” ပါသော ဒဌပ်စင်မျာသကို အသုံသပဌုနိုင်သည်။ ဒုတိယကိစ္စတလင်၊ “?” ဆိုင်သဘုတ်ဖဌင့် အမဟတ်အသာသပဌုလုပ်ရန် ပံ့ပိုသမဟုကို ထည့်သလင်သထာသသည်။ ("package-name?/feature-name") ပေသထာသသည့် ရလေသချယ်ခလင့်ဆိုင်ရာ မဟီခိုမဟုအချို့တလင် အခဌာသပိုင်ဆိုင်မဟုအချို့ ပါဝင်မဟသာ ထည့်သလင်သသင့်သော စိတ်ကဌိုက်မဟီခိုမဟုမျာသ။ ဥပမာအာသဖဌင့်၊ အောက်ဖော်ပဌပါ ဥပမာတလင်၊ serde ပိုင်ဆိုင်မဟုကို ဖလင့်ထာသခဌင်သဖဌင့် "serde" မဟီခိုမဟုအပဌင် "rgb" မဟီခိုမဟုအတလက် "serde" ပိုင်ဆိုင်မဟုကို ဖလင့်ပေသမည်ဖဌစ်သော်လည်သ အခဌာသနေရာတလင် "rgb" မဟီခိုမဟုကို ဖလင့်ထာသမဟသာ- [dependencies] serde = { ဗာသရဟင်သ = " 1.0.133 "၊ ချန်လဟပ် = မဟန် } rgb = { ဗာသရဟင်သ = " 0.8.25 "၊ ချန်လဟပ် = မဟန် } [features] serde = ["dep:serde", "rgb?/serde"]

  • နောက်ဆုံသထုတ်ဝေမဟုတလင် ပိတ်ထာသသည့် တိုသမဌဟင့်စုစည်သမဟုအတလက် ပံ့ပိုသမဟုအာသ ပဌန်လည်ပေသအပ်လိုက်ပါပဌီ။ အင်္ဂါရပ်ကို ပိတ်ထာသစေသော ကလန်ပလော်ဘာဂ်ကို ဖဌေရဟင်သပဌီသဖဌစ်သည်။
  • အိပ်စက်မဟုမုဒ်တလင် စနစ်အသုံသပဌုသည့်အချိန်ကို ထည့်သလင်သစဉ်သစာသပေသသည့် မိုနိုတိုနစ်အချိန်ကိုက်မဟုဆိုင်ရာ အာမခံချက်ဖဌင့် ချက်ခဌင်သအချိန်တိုင်သကိရိယာမျာသကို ပံ့ပိုသပေသခဌင်သဖဌင့် ပဌဿနာအချို့ကို ဖဌေရဟင်သခဲ့သည်။ ယခင်က၊ ဟာ့ဒ်ဝဲပဌဿနာမျာသ၊ virtualization အသုံသပဌုမဟု သို့မဟုတ် လည်ပတ်မဟုစနစ်တလင် အမဟာသအယလင်သမျာသကဲ့သို့သော အချိန်၏ monotony ကို ချိုသဖျက်သည့် ပဌဿနာမျာသကို ထည့်သလင်သစဉ်သစာသခဌင်သမရဟိသည့် အချိန်တိုင်သကိရိယာကို လုပ်ဆောင်ရန် ဖဌစ်နိုင်သည့်အခါတိုင်သ OS API ကို အသုံသပဌုခဲ့သည်။
  • API ၏ အစိတ်အပိုင်သအသစ်ကို တည်ငဌိမ်သောအမျိုသအစာသသို့ ရလဟေ့ထာသပဌီသ၊ နည်သလမ်သမျာသနဟင့် စရိုက်လက္ခဏာမျာသကို အကောင်အထည်ဖော်ရာတလင် တည်ငဌိမ်အောင်ပဌုလုပ်ထာသသည်-
    • Arc::new_cyclic
    • Rc::new_cyclic
    • slice::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::escape_ascii
    • Vec::spare_capacity_mut
    • Uninit::assume_init_drop
    • Uninit::assume_init_read ဖဌစ်နိုင်ပါတယ်။
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • isize::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • အသုံသပဌုမဟု-:abs_diff
    • io::ErrorKind အတလက်ပဌသခဌင်သ။
    • ExitCode အတလက်
    • အတလက် မဟုတ်ဘူသ ! ("ဘယ်တော့မဟ" ဟုရိုက်ပါ)
    • _Op_Assign <$t>
    • arch::is_aarch64_feature_detected!
  • ပံ့ပိုသမဟုတတိယအဆင့်ကို mips64-openwrt-linux-musl* နဟင့် armv7-unknown-linux-uclibceabi (softfloat) ပလပ်ဖောင်သမျာသအတလက် အကောင်အထည်ဖော်ခဲ့သည်။ တတိယအဆင့်တလင် အခဌေခံပံ့ပိုသမဟုပါဝင်သော်လည်သ အလိုအလျောက်စမ်သသပ်ခဌင်သမရဟိဘဲ၊ တရာသဝင်တည်ဆောက်မဟုမျာသကို ထုတ်ပဌန်ခဌင်သ သို့မဟုတ် ကုဒ်ကိုတည်ဆောက်နိုင်သည်ရဟိမရဟိ စစ်ဆေသခဌင်သမပဌုဘဲဖဌစ်သည်။
  • compiler သည် LLVM 14 ကို အသုံသပဌုရန် ပဌောင်သထာသသည်။

ထို့အပဌင်၊ သင်သည် မဟတ်သာသနိုင်သည်-

  • GCC ရဟိ ကုဒ်ထုတ်လုပ်သူအဖဌစ် rustc ပရောဂျက်မဟ libgccjit စာကဌည့်တိုက်ကို အသုံသပဌုခလင့်ပဌုသည့် rustc_codegen_gcc နောက်ခံကို အသုံသပဌု၍ rustc compiler ကို bootstrapping လုပ်ခဌင်သအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်သလင်သထာသသည်။ Compiler မဌဟင့်တင်ခဌင်သဆိုသည်မဟာ rustc compiler ကိုယ်တိုင်တည်ဆောက်ရန်အတလက် GCC-based code generator ကိုသုံသနိုင်သည်။ လက်တလေ့တလင်၊ ကအင်္ဂါရပ်သည် သင့်အာသ rustc တလင် ယခင်က ပံ့ပိုသမထာသသော ဗိသုကာမျာသ အတလက် သံချေသတက်သည့် ပရိုဂရမ်မျာသကို တည်ဆောက်နိုင်စေပါသည်။
  • Rust ဘာသာစကာသဖဌင့် ပဌန်လည်ရေသသာသထာသသည့် GNU Coreutils ပက်ကေ့ခ်ျ၏ analogue တစ်ခုဖဌစ်သည့် uutils coreutils 0.0.13 ကိရိယာအစုံကို ရရဟိနိုင်ပါပဌီ။ Coreutils သည် မျိုသခလဲ၊ cat၊ chmod၊ chown၊ chroot၊ cp၊ date၊ dd၊ echo၊ hostname၊ id၊ ln နဟင့် ls အပါအဝင် အသုံသအဆောင်ပေါင်သ တစ်ရာကျော် ပါရဟိပါသည်။ ပရောဂျက်၏ရည်မဟန်သချက်မဟာ Windows၊ Redox နဟင့် Fuchsia ပလပ်ဖောင်သမျာသတလင်လည်ပတ်နိုင်သည့် Coreutils ၏ဖဌတ်ကျော်ပလပ်ဖောင်သအစာသထိုသအကောင်အထည်ဖော်မဟုတစ်ခုဖန်တီသရန်ဖဌစ်ပဌီသ၊ GPL မိတ္တူလက်ဝဲလိုင်စင်အစာသ ခလင့်ပဌုထာသသော MIT လိုင်စင်အောက်တလင် ဖဌန့်ဖဌူသပေသရန်ဖဌစ်သည်။

    ဗာသရဟင်သအသစ်သည် GNU ပရောဂျက်မဟ ၎င်သတို့၏လုပ်ဖော်ကိုင်ဖက်မျာသနဟင့် cp, dd, df, split နဟင့် tr utilities မျာသ သိသိသာသာ လိုက်ဖက်ညီမဟု တိုသမဌင့်လာမဟု အပါအဝင် အသုံသအဆောင်မျာသစလာကို ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်ပေသထာသပါသည်။ အလန်လိုင်သစာရလက်စာတမ်သမျာသ ပေသထာသသည်။ clap parser ကို "--help" အလံအတလက် output ကိုတိုသတက်ကောင်သမလန်လာစေပဌီသ ရဟည်လျာသသောအမိန့်စာမျာသ၏ အတိုကောက်မျာသအတလက် ပံ့ပိုသမဟုထပ်ဖဌည့်ပေသသည် (ဥပမာ၊ သင်သည် "ls -color" အစာသ "ls -col" ကို သတ်မဟတ်နိုင်သည်။ ”)

source: opennet.ru

မဟတ်ချက် Add