သံချေး 1.96.0

ထုတ်ပြန်ချက်ထုတ်ပြန်ပြီးပါပြီ သံချေး 1.96.0 — Rust ပရိုဂရမ်းမင်းဘာသာစကား၏ နောက်ဆုံးထွက် တည်ငြိမ်သောဗားရှင်း။ အပ်ဒိတ်ကို ထုတ်ပြန်လိုက်ပါပြီ။ 28 မေလ 2026 နှစ်ပေါင်း; ၎င်းကို standard rustup update stable command ကို အသုံးပြု၍ ထည့်သွင်းနိုင်သည်။ အဓိကပြောင်းလဲမှုများတွင် core::range ရှိ range အမျိုးအစားအသစ်များ၊ pattern matching macros များ၏ တည်ငြိမ်မှု၊ WebAssembly build behavior ကို တင်းကျပ်ခြင်းနှင့် Cargo ရှိ အားနည်းချက်နှစ်ခုအတွက် ပြင်ဆင်မှုများ ပါဝင်သည်။

အဓိကအပြောင်းအလဲများ

  • core::range::Range* ၏ range အမျိုးအစားအသစ်များ။
    စံသတ်မှတ်ထားသောစာကြည့်တိုက်တွင် core::range::Range၊ RangeFrom၊ RangeInclusive နှင့် ၎င်းတို့နှင့်ဆက်စပ်နေသော iterator များတွင် range အမျိုးအစားအသစ်များကို တည်ငြိမ်အောင်ပြုလုပ်ထားသည်။ core::ops မှ အမျိုးအစားဟောင်းများနှင့်မတူဘဲ၊ range အသစ်များသည် Iterator ကို တိုက်ရိုက်အကောင်အထည်ဖော်ခြင်းမပြုဘဲ IntoIterator မှတစ်ဆင့် iterator အဖြစ်ပြောင်းလဲသည်။ ၎င်းသည် ဤအကွာအဝေးများကို Copyable ဖြစ်စေပြီး ဥပမာအားဖြင့်၊ range တစ်ခုကို structure field အဖြစ်သိမ်းဆည်းသည့်အခါတွင် အဆင်ပြေစေသည်။ 0..1 ကဲ့သို့သော syntax သည် လက်ရှိတွင် range အမျိုးအစားဟောင်းများကို ဖန်တီးပေးသော်လည်း ဘာသာစကား၏ အနာဂတ်ဗားရှင်းတွင် အမျိုးအစားအသစ်များသို့ ရွှေ့ပြောင်းရန် စီစဉ်ထားသည်။

  • assert_matches! နှင့် debug_assert_matches! တို့ကို ထည့်သွင်းထားသည်။
    မက်ခရိုအသစ်များက တန်ဖိုးတစ်ခုသည် ပေးထားသောပုံစံနှင့် ကိုက်ညီမှုရှိမရှိ စစ်ဆေးနိုင်စေပါသည်။ ၎င်းသည် assert!(matches!(…)) နှင့် သဘောတရားအားဖြင့် ဆင်တူသော်လည်း၊ အမှားအယွင်းတစ်စုံတစ်ရာရှိပါက တန်ဖိုး၏ debug ကိုယ်စားပြုမှုကို ရိုက်နှိပ်ပေးသောကြောင့် ရောဂါရှာဖွေခြင်းကို ရိုးရှင်းစေသည်။ ဤမက်ခရိုများကို လူကြိုက်များသော third-party crates များနှင့် ပဋိပက္ခများကို ရှောင်ရှားရန် Prelude တွင် မထည့်သွင်းထားသောကြောင့် ၎င်းတို့ကို core သို့မဟုတ် std မှ ရှင်းလင်းစွာ import လုပ်ရပါမည်။

  • WebAssembly ပစ်မှတ်များ၏ အပြုအမူကို ပြောင်းလဲခဲ့သည်။
    Rust သည် WebAssembly builds များအတွက် linker သို့ --allow-undefined ကို မဖြတ်သန်းတော့ပါ။ Undefined symbols များကို "env" module မှ imports များအဖြစ် အလိုအလျောက်ပြောင်းလဲမည့်အစား linking လုပ်နေစဉ်အတွင်း error များအဖြစ် ယခုအခါ သတ်မှတ်ပါသည်။ ၎င်းသည် build error များနှင့် invalid symbol names များကို စောစောစီးစီး ဖမ်းယူသင့်သည်။ လိုအပ်ပါက RUSTFLAGS=-Clink-arg=--allow-undefined ကို အသုံးပြု၍ သို့မဟုတ် #[link(wasm_import_module = "env")] ကို အသုံးပြု၍ imported wasm module ကို ရှင်းလင်းစွာ သတ်မှတ်ခြင်းဖြင့် အဟောင်းအပြုအမူကို ပြန်လည်ပြောင်းလဲနိုင်သည်။

  • Cargo သည် လုံခြုံရေးပြင်ဆင်မှုများ ရရှိထားသည်။
    Rust 1.96.0 သည် third-party registry အသုံးပြုသူများအပေါ် သက်ရောက်မှုရှိသော အားနည်းချက်နှစ်ခုကို ပြင်ဆင်ပေးပါသည်။ CVE-2026-5223 crate tarball များအတွင်းရှိ symlink များကို ကိုင်တွယ်ခြင်းနှင့် ဆက်စပ်၍- third-party registry မှ malicious package တစ်ခုသည် တူညီသော registry မှ အခြား package တစ်ခု၏ cache ကို overwrite လုပ်နိုင်သည်။ Rust 1.96.0 မှစတင်၍ Cargo သည် symlink များပါရှိသော crate archive များကို ငြင်းပယ်သည်။ CVE-2026-5222 ဤပြဿနာသည် sparse registry ရှိ URL normalization နှင့် သက်ဆိုင်ပြီး ရှားရှားပါးပါးအခြေအနေများတွင် Cargo token ကို malicious registry သို့ ပေးပို့ခြင်း ဖြစ်ပေါ်စေနိုင်သည်။ Rust အဖွဲ့၏ အဆိုအရ crates.io အသုံးပြုသူများသည် ဤပြဿနာများကြောင့် ထိခိုက်ခံရခြင်း မရှိပါ။

  • ဘာသာစကားပြောင်းလဲမှုများ။
    ထုတ်ပြန်ချက်တွင် အောက်ပါတို့ ပါဝင်သည်- အသေးစားပြင်ဆင်မှုများနှင့် မြှင့်တင်မှုအချို့- macros များ၏ expr metavariables များကို cfg သို့ပေးပို့ခွင့်ပြုခြင်း၊ tuple expression များတွင် never-type casting ကိုပြင်ဆင်ခြင်း၊ function arguments များအတွက် မှားယွင်းသော type inference hints များ၏ ရှားရှားပါးပါးဖြစ်ရပ်များကို ပြင်ဆင်ခြင်း၊ inline assembly ရှိ s390x vector registers များအတွက် ပံ့ပိုးမှုကို ထည့်သွင်းခြင်းနှင့် ManuallyDrop constant များကို template များအဖြစ် ပြန်လည်ခွင့်ပြုခြင်း—၎င်းသည် Rust 1.94.0 တွင် မိတ်ဆက်ခဲ့သော regression ကို ပြင်ဆင်ပေးပါသည်။

  • compiler နှင့် platform များတွင် ပြောင်းလဲမှုများ။
    အတွက် LinuxLoongArch ပစ်မှတ်များအတွက် Link relaxation support ကို ဖွင့်ထားပြီးဖြစ်သည်—ကုဒ်ဖြန့်ကျက်ပြီးနောက် အချို့သောအကူးအပြောင်းများနှင့်ခေါ်ဆိုမှုများကို ရိုးရှင်းစေသည့် linking optimization တစ်ခုဖြစ်သည်။ riscv64gc-unknown-fuchsia အတွက်၊ base configuration ကို vector extension များအတွက် support ဖြင့် RVA22 profile သို့ update လုပ်ထားသည်။

  • စံသတ်မှတ်ထားသောစာကြည့်တိုက်အပ်ဒိတ်များ။
    NonZero integer range များပေါ်တွင် iterating အတွက် support ကို ထည့်သွင်းထားသည်။ ToSocketAddr မှတစ်ဆင့် SGX ရှိ host address များကို ပျင်းရိစွာကိုင်တွယ်ခြင်းကိုလည်း ပြင်ဆင်ပြီးဖြစ်ပြီး "readable/writeable" memory ၏ အဓိပ္ပာယ်ဖွင့်ဆိုချက်ကို documentation နှင့် internal contracts များတွင် ရှင်းလင်းဖော်ပြထားသည်- null pointer ကို general definition မှ ဖယ်ရှားထားပြီး၊ ယခုအခါ specific methods များအတွက် exception များကို သီးခြားသတ်မှတ်ထားသည်။

  • တည်ငြိမ်သော API များ။
    တည်ငြိမ်သော interface များထဲတွင် From ၏ assert_matches!, debug_assert_matches!, အကောင်အထည်ဖော်မှုများ ပါဝင်သည်။ AssertUnwindSafe အတွက် , LazyCell နှင့် LazyLock core::range မှ Range၊ RangeFrom၊ RangeToInclusive နှင့် ၎င်းတို့၏ iterators များ အပါအဝင် range အမျိုးအစားအသစ်များနှင့် iterators များ။

  • Cargo: မှီခိုမှုများနှင့် စာရွက်စာတမ်းများအပေါ် ပြောင်းလဲမှုများ။
    dependency တစ်ခုသည် Git repository နှင့် အခြား registry နှစ်ခုလုံးကို ယခု သတ်မှတ်နိုင်ပါပြီ- Git ဗားရှင်းကို ဒေသတွင်းတွင် အသုံးပြုမည်ဖြစ်ပြီး၊ crates.io တွင် လုပ်ဆောင်သကဲ့သို့ registry ဗားရှင်းကို ထုတ်ဝေစဉ်အတွင်း အသုံးပြုမည်ဖြစ်သည်။ Cargo configuration တွင် target.'cfg(..)'.rustdocflags အတွက် ပံ့ပိုးမှုကိုလည်း ထည့်သွင်းထားပါသည်။

  • Rustdoc သည် ယခုအခါ စာရွက်စာတမ်းများကို ပိုမိုတိကျစွာ ကိုင်တွယ်ပါသည်။
    ရပ်ဆိုင်းထားသော API မှတ်စုများကို white-space: pre-wrap မှတစ်ဆင့် ယခင်အထူးလုပ်ဆောင်မှုမရှိဘဲ ပုံမှန်စာရွက်စာတမ်းအဖြစ် ပြန်လည်ဖော်ပြပါသည်။ ထို့အပြင်၊ rustdoc သည် impl အတွင်းရှိ element များအတွက် missing_doc_code_examples များကို lint မလုပ်တော့ဘဲ၊ method များနှင့် ဆက်စပ် function များကို documentation sidebar တွင် ခွဲထားသည်။

  • ဖြစ်နိုင်ချေရှိသော သဟဇာတမဖြစ်မှုများ။
    ထုတ်ဝေမှုတွင် စံမဟုတ်သော ကုဒ်တွင် ပြသနိုင်သည့် ပြောင်းလဲမှုများစွာ ပါဝင်သည်- #[repr(Int)] enum အချို့၏ layout ကို အလွန်အမင်းကိစ္စများတွင် ပြင်ဆင်ပြီးဖြစ်ပြီး Pin ရှိ အသုံးမဝင်သော unsize casts အချို့ကို disable လုပ်ထားသည်။ ၊ WebAssembly builds များသည် ယခုအခါ undefined symbols များတွင် crash ဖြစ်သွားပြီး၊ မတော်တဆ တည်ငြိမ်သွားသော #![reexport_test_harness_main] attribute ကို feature gated ပြန်လုပ်ထားပြီး၊ -Csoft-float option ကို ဖယ်ရှားထားပြီး၊ အနည်းဆုံး external LLVM version ကို 21 အထိ တိုးမြှင့်ထားသည်။ AVR အတွက်၊ C doubles များသည် ဤ targets များတွင် default အားဖြင့် 32-bit ဖြစ်သောကြောင့် c_double type ကို f32 သို့ ပြောင်းလဲထားသည်။

source: linux.org.ru

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