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

ထုတ်ဝေခဲ့သည်။ စနစ် ပရိုဂရမ်းမင်း ဘာသာစကား ထုတ်ဝေမှု သံချေး 1.39Mozilla ပရောဂျက်မှ တည်ထောင်ခဲ့သည်။ ဘာသာစကားသည် မှတ်ဉာဏ်ဘေးကင်းရေးကို အလေးပေးထားပြီး အလိုအလျောက်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုကို ပံ့ပိုးပေးကာ အမှိုက်စုဆောင်းသူ သို့မဟုတ် အပြေးအချိန်ကို အသုံးမပြုဘဲ မြင့်မားသောအလုပ်အပြိုင်ရရှိရန် နည်းလမ်းများကို ပံ့ပိုးပေးပါသည်။

Rust ၏ အလိုအလျောက်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုသည် developer အား pointer ခြယ်လှယ်ခြင်းမှ လွတ်မြောက်စေပြီး အခမဲ့ memory access များ၊ null pointer dereferences၊ buffer overruns ကဲ့သို့သော အဆင့်နိမ့်မှတ်ဉာဏ် ခြယ်လှယ်မှုမှ ဖြစ်ပေါ်လာသည့် ပြဿနာများကို ကာကွယ်ပေးပါသည်။ စာကြည့်တိုက်များကို ဖြန့်ဝေရန်၊ စုဝေးမှုကို သေချာစေရန်နှင့် ပရောဂျက်မှ မှီခိုမှုများကို စီမံခန့်ခွဲရန် ပက်ကေ့ဂျ်မန်နေဂျာကို တီထွင်နေပါသည်။ ကုန်စည်ပရိုဂရမ်အတွက် လိုအပ်သော စာကြည့်တိုက်များကို တစ်ချက်နှိပ်ရုံဖြင့် သင်ရနိုင်မည်ဖြစ်သည်။ လက်ခံထားသည့် စာကြည့်တိုက်များအတွက် သိုလှောင်မှုအား ပံ့ပိုးထားသည်။ crates.io.

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

  • တည်မြဲ "async" လုပ်ဆောင်ချက်၊ async ရွှေ့ခြင်း { ... } block နှင့် ".ait" အော်ပရေတာတို့အပေါ် အခြေခံသည့် အပြိုင်အဆိုင် ပရိုဂရမ်းမင်း အထားအသိုအသစ်တစ်ခု၊ ပင်မအမိန့်ပေးစီးဆင်းမှုကို ပိတ်ဆို့ခြင်းမပြုသော ကိုင်တွယ်သူများကို ရေးသားရန် ပိုမိုလွယ်ကူစေသည်။ asynchronous I/O အတွက် ယခင်က ကမ်းလှမ်းထားသော API နှင့် နှိုင်းယှဉ်ပါက async/.ait constructs များသည် နားလည်ရန် ရိုးရှင်းပြီး အလွန်ဖတ်ရှုနိုင်ကာ ရှုပ်ထွေးသော အဆက်ဖြတ်နိုင်သော အပြန်အလှန်တုံ့ပြန်မှုများကို လှည့်ကွက်များ၊ အခြေအနေဆိုင်ရာ ထုတ်ပြန်ချက်များနှင့် ခြွင်းချက်များအပေါ် အခြေခံ၍ ရင်းနှီးသော စီးဆင်းမှုထိန်းချုပ်မှုနည်းပညာများကို အသုံးပြု၍ အကောင်အထည်ဖော်နိုင်စေပါသည်။

    Async-await syntax သည် ၎င်းတို့၏ လုပ်ဆောင်ချက်ကို ခေတ္တရပ်ထားနိုင်ပြီး ပင်မကြိုးသို့ ထိန်းချုပ်မှုပြန်သွားကာ ၎င်းတို့ထွက်ခွာသွားသည့်နေရာမှ လုပ်ဆောင်ချက်ကို ပြန်လည်စတင်နိုင်သည့် လုပ်ဆောင်ချက်များကို ဖန်တီးနိုင်စေမည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ I/O စီမံဆောင်ရွက်ရာတွင် ခေတ္တနားရန် လိုအပ်ပြီး နောက်ဒေတာအပိုင်းကို စောင့်ဆိုင်းနေစဉ်တွင် အခြားအလုပ်များကို လုပ်ဆောင်နိုင်သည်။ "async fn" နှင့် "async move" ဖြင့် သတ်မှတ်ထားသော လုပ်ဆောင်ချက်များနှင့် ပိတ်ဆို့မှုများသည် စရိုက်လက္ခဏာကို ပြန်ပေးသည်။ အနာဂတ်ရွှေ့ဆိုင်းထားသော အပြိုင်အဆိုင်တွက်ချက်ခြင်းဆိုင်ရာ ကိုယ်စားပြုမှုကို သတ်မှတ်သည်။ သင်သည် ရွှေ့ဆိုင်းထားသော တွက်ချက်မှုကို တိုက်ရိုက်စတင်နိုင်ပြီး “.ait” အော်ပရေတာကို အသုံးပြု၍ ရလဒ်ကို ရယူနိုင်သည်။ မည်သည့်လုပ်ဆောင်မှုမျှ လုပ်ဆောင်ခြင်း သို့မဟုတ် ကြိုတင်စီစဉ်ထားခြင်း မရှိပါ။ စောင့်ဆိုင်းခြင်းကို ခေါ်ပြီး ရှုပ်ထွေးသော အသိုက်အ၀န်းများကို အပိုဆောင်းပေါ်မှမပါဘဲ ဖန်တီးနိုင်စေပါသည်။

    async fn first_function() -> u32 { .. }
    ...
    let future = first_function();
    ...
    ရလဒ်- u32 = အနာဂတ်.ait;

  • တည်မြဲ "#![feature(bind_by_move_pattern_guards)]", binding type "" နှင့် variable များကို အသုံးပြုခွင့်ပေးသည်။by-ရွှေ့" တမ်းပလိတ်များတွင် နှင့် စကားရပ်၏ "if" ကဏ္ဍရှိ ဤကိန်းရှင်များကို ကိုးကားအသုံးပြုပါ။မီးခြစ်” . ဥပမာအားဖြင့်၊ အောက်ဖော်ပြပါ အဆောက်အဦများကို ယခုခွင့်ပြုထားသည်။

    fn ပင်မ() {
    Let array: Box<[u8; 4]> = Box::new([1၊ 2၊ 3၊ 4]);

    ကိုက်ညီသော အခင်းအကျင်း {
    နံပါတ်များ
    nums.iter().sum::() == ၁၀

    => {
    drop(နံပါတ်များ);
    }
    _ => ဆက်သွယ်၍မရပါ!(),
    }
    }

  • ညွှန်ပြခွင့်ပြုထားသည်။ ဂုဏ်တော်များ လုပ်ဆောင်ချက်ဘောင်များ၊ အပိတ်များနှင့် လုပ်ဆောင်ချက်ညွှန်ပြချက်များကို သတ်မှတ်သည့်အခါ။ lint (ခွင့်ပြု၊ သတိပေး၊ ငြင်းဆိုခြင်းနှင့် တားမြစ်ခြင်း) နှင့် auxiliary macro calling attributes များမှတစ်ဆင့် ရောဂါရှာဖွေမှုများကို ထိန်းချုပ်သည့် အခြေအနေအလိုက် စုစည်းမှုအရည်အချင်းများ (cfg, cfg_attr) ကို ပံ့ပိုးထားသည်။

    fn len(
    #[cfg(windows)] slice: &[u16]၊ // Windows ပေါ်ရှိ ကန့်သတ်ဘောင်ကို အသုံးပြုပါ။
    #[cfg(not(windows))] slice: &[u8]၊ // အခြား OS တွင် အသုံးပြုနိုင်သည်။
    ) --> အသုံးပြုမှု {
    slice.len()
    }

  • NLL (Non-Lexical Lifetimes) နည်းပညာကို အသုံးပြု၍ ကိန်းရှင်များ (ချေးယူစစ်ဆေးသူ) ကို စစ်ဆေးသည့်အခါ ဖော်ထုတ်ထားသော ပြဿနာများနှင့် ပတ်သက်၍ သတိပေးချက်များ၊ ဘာသာပြန် ဆိုးဝါးသောအမှားများ အမျိုးအစားထဲသို့ ချေးထားသောကိန်းရှင်များ၏ သက်တမ်းကို ထည့်သွင်းတွက်ချက်သည့် ယန္တရားအသစ်ကို အခြေခံ၍ အတည်ပြုခြင်းစနစ်သည် စိစစ်ရေးကုဒ်ဟောင်းကြောင့် သတိမပြုမိသော ပြဿနာအချို့ကို ဖော်ထုတ်နိုင်ခဲ့ကြောင်း သတိရကြပါစို့။ ထိုစစ်ဆေးမှုများအတွက် အမှားအယွင်းထွက်ရှိမှုသည် ယခင်လုပ်ဆောင်နေသည့်ကုဒ်နှင့် လိုက်ဖက်ညီမှုကို ထိခိုက်စေနိုင်သောကြောင့် သတိပေးချက်များကို အမှားများအစား အစပိုင်းတွင် ထုတ်ပြန်ခဲ့သည်။ Rust 2018 မုဒ်တွင် လုပ်ဆောင်သည့်အခါ သတိပေးချက်များကို အမှားအယွင်းများဖြင့် အစားထိုးလိုက်ပါပြီ။ နောက်ထွက်ရှိမှုတွင်၊ အမှားအယွင်းအထွက်ကို Rust 2015 မုဒ်တွင် အကောင်အထည်ဖော်မည်ဖြစ်ပြီး၊ နောက်ဆုံးတွင် ချေးယူထားသည့် စစ်ဆေးသူဟောင်းကို ဖယ်ရှားနိုင်မည်ဖြစ်သည်။
  • ကိန်းသေများအစား မည်သည့်အကြောင်းအရာတွင်မဆို အသုံးပြုရန် ဖြစ်နိုင်ခြေကို ဆုံးဖြတ်ပေးသည့် “const” ရည်ညွှန်းချက်အား Vec::new, String::new, LinkedList::new, str::len, [T]::len လုပ်ဆောင်ချက်များအတွက် အသုံးပြုပါသည်။ , str::as_bytes၊
    abs၊ wrapping_abs နှင့် overflowing_abs;

  • တည်ငြိမ်အောင်ပြုလုပ်ထားသော နည်းလမ်းများအပါအဝင် API ၏ အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ လွှဲပြောင်းထားပါသည်။
    Pin::into_inner၊ ချက်ခြင်း-:checked_duration_since နှင့် ချက်ခြင်း-:saturating_duration_since;

  • ယခုအခါ ကုန်တင်ကုန်ချပက်ကေ့ဂျ်မန်နေဂျာသည် ဖွဲ့စည်းမှုဖိုင်များအတွက် “.toml” တိုးချဲ့မှုကို အသုံးပြုနိုင်သည်။ Cargo မှ တိုက်ရိုက် စံပြစာကြည့်တိုက် တည်ဆောက်ခြင်းအတွက် ပဏာမ ပံ့ပိုးမှု ထည့်ပေးခဲ့သည်။ အငြင်းပွားဖွယ် "--all" အလံကို အစားထိုးပြီး "--workspace" အလံကို ပေါင်းထည့်ခဲ့သည်။ မက်တာဒေတာသို့ အကွက်အသစ်တစ်ခု ထည့်လိုက်သည်"ပုံနှိပ်ထုတ်ဝေ"၊ git tag နှင့် ဗားရှင်းနံပါတ်ကို သတ်မှတ်ခြင်းဖြင့် မှီခိုမှုကို ထုတ်ဝေခွင့်ပြုသည်။ အမျိုးမျိုးသောစုစည်းမှုအဆင့်များ၏လုပ်ဆောင်မှုအချိန်များ၏ HTML အစီရင်ခံစာကိုထုတ်လုပ်ရန်စမ်းသပ်မှုရွေးချယ်စရာ "-Ztimings" ကိုထည့်သွင်းထားသည်။
  • rustc compiler တွင်၊ ရောဂါရှာဖွေရေးစာတိုများသည် terminal နှင့်မကိုက်ညီသော ကုဒ်အမြီးများကို ဖြတ်တောက်ခြင်း ပါဝင်သည်။ ပစ်မှတ်ပလက်ဖောင်းများအတွက် တတိယအဆင့် ပံ့ပိုးမှုပေးထားသည်။
    i686-unknown-uefi နှင့် sparc64-unknown-openbsd။ တတိယအဆင့်တွင် အခြေခံပံ့ပိုးမှုပါဝင်သော်လည်း အလိုအလျောက်စမ်းသပ်ခြင်းနှင့် တရားဝင်တည်ဆောက်မှုများကို ထုတ်ပြန်ခြင်းမရှိဘဲ။

source: opennet.ru

မှတ်ချက် Add