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 တွင် ယခင်က ပံ့ပိုးမထားသော ဗိသုကာများ အတွက် သံချေးတက်သည့် ပရိုဂရမ်များကို တည်ဆောက်နိုင်စေပါသည်။
  • uutils coreutils toolkit ရဲ့ 0.0.13 ဗားရှင်းကို ယခုရရှိနိုင်ပါပြီ။ ၎င်းသည် GNU Coreutils package နှင့် ညီမျှသော Rust-based တစ်ခုကို တီထွင်ထုတ်လုပ်ထားသည်။ Coreutils တွင် sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln နှင့် ls အပါအဝင် utilities ၁၀၀ ကျော်ပါဝင်သည်။ ဤပရောဂျက်၏ ရည်မှန်းချက်မှာ Coreutils အစား cross-platform အစားထိုးတစ်ခု ဖန်တီးရန်ဖြစ်ပြီး ၎င်းတွင် အောက်ပါပလက်ဖောင်းများပေါ်တွင် လည်ပတ်နိုင်သည်။ Windows, Redox နှင့် Fuchsia နှင့် copyleft GPL လိုင်စင်အစား ခွင့်ပြုထားသော MIT လိုင်စင်အောက်တွင် ဖြန့်ဖြူးခြင်း။

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

source: opennet.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster