Rust 1.98.0 ထုတ်ဝေမှု- ၃ လအတွင်း အကြိမ်ရေ ၅၃ သန်း ဒေါင်းလုဒ်လုပ်ထားသော arrayref package ၏ အားနည်းချက်

Mozilla ပရောဂျက်မှ တည်ထောင်ထားသော Rust 1.98 ပရိုဂရမ်ဘာသာစကားကို လွတ်လပ်သော အကျိုးအမြတ်မယူသော Rust ဖောင်ဒေးရှင်း၏ ပံ့ပိုးကူညီမှုဖြင့် ယခု ထုတ်ဝေလိုက်ပါပြီ။ ဘာသာစကားသည် မှတ်ဉာဏ်ဘေးကင်းရေးကို အာရုံစိုက်ပြီး အမှိုက်စုဆောင်းသူနှင့် runtime ကိုအသုံးမပြုဘဲ လုပ်ဆောင်နေစဉ်တွင် လုပ်ဆောင်စရာများ ပြိုင်ဆိုင်မှုမြင့်မားစေရန်အတွက် ကိရိယာများကို ပံ့ပိုးပေးသည် (runtime သည် စံစာကြည့်တိုက်၏ အခြေခံအစပျိုးခြင်းနှင့် ပြုပြင်ထိန်းသိမ်းမှုသို့ လျှော့ချထားသည်)။

Rust ရဲ့ memory management နည်းလမ်းတွေကို pointer manipulation မှာ error တွေကို ဖယ်ရှားပြီး free လုပ်ပြီးနောက် memory ကို access လုပ်တာ၊ null pointer တွေကို dereferencing လုပ်တာ၊ buffer overrun လုပ်တာ စတဲ့ low-level memory management ကနေ ပေါ်ပေါက်လာတဲ့ ပြဿနာတွေကို ကာကွယ်ဖို့ ဒီဇိုင်းထုတ်ထားပါတယ်။ ဒီ project က libraries တွေကို distribute လုပ်ဖို့၊ build တွေကို လွယ်ကူချောမွေ့စေဖို့နဲ့ dependencies တွေကို manage လုပ်ဖို့ Cargo package manager ကို တီထွင်နေပါတယ်။ crates.io repository ကို libraries တွေကို hosting အတွက် ထိန်းသိမ်းထားပါတယ်။

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

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

  • f32 နှင့် f64 floating-point အမျိုးအစားများအတွက်၊ ပေါင်းခြင်း၊ နုတ်ခြင်း၊ မြှောက်ခြင်း၊ စားခြင်းနှင့် အကြွင်းအတွက် အက္ခရာသင်္ချာနည်းလမ်းများကို အကောင်အထည်ဖော်ထားပြီး၊ C/C++ compilers ရှိ "-ffast-math" option နှင့်ဆင်တူသော optimization များကို အကောင်အထည်ဖော်ထားသည်။ ဤနည်းလမ်းများသည် loop vectorization ကဲ့သို့သော optimization များအတွက် လိုအပ်သည့်အခါ လုပ်ဆောင်ချက်များ၏အစီအစဉ်ကို ပြောင်းလဲခွင့်ပြုသည်။ ဥပမာအားဖြင့်၊ ပုံမှန်ပေါင်းခြင်းကို အသုံးပြု၍ "a + b + c + d" တွက်ချက်သောအခါ၊ compiler သည် တွက်ချက်မှုကို အမြဲတမ်းတူညီသောအစီအစဉ်အတိုင်း လုပ်ဆောင်မည်ဖြစ်သည်- "((a + b) + c) + d"၊ သို့သော် algebraic_add နည်းလမ်းကိုအသုံးပြုခြင်းဖြင့်၊ ၎င်းသည် expression ကို "(a + b) + (c + d)" အဖြစ် အုပ်စုဖွဲ့နိုင်ပြီး SIMD ညွှန်ကြားချက်များကို အသုံးပြု၍ "(a + b)" နှင့် "(c + d)" ကို parallel လုပ်ဆောင်နိုင်သည်။ အက္ခရာသင်္ချာနည်းလမ်းများကိုအသုံးပြုခြင်း၏ ကုန်ကျစရိတ်သည် တွက်ချက်မှုရလဒ်များ၏ nondeterminism ဖြစ်ပြီး၊ ၎င်းသည် error margin အတွင်း ကွဲပြားနိုင်သည်။
  • မူလ integer အမျိုးအစားအားလုံးတွင် itoa package အစား အသုံးပြုနိုင်သော ဂဏန်းများကို string များအဖြစ် ပြောင်းလဲပေးသည့် "format_into" နည်းလမ်းတစ်ခု ပါရှိသည်။ NumBuffer buffer ကို parameter အဖြစ် ပေးပို့သည်။ ၊ ၎င်း၏အရွယ်အစားသည် အသုံးပြုထားသော အမျိုးအစား၏ မည်သည့်တန်ဖိုးကိုမဆို ဒဿမပုံစံဖြင့် ရေးသားရန် လုံလောက်ကြောင်း အာမခံပါသည်။ အထွက်သည် ဖော်မတ်ချထားသော string &str ဖြစ်ပြီး ၎င်း၏သက်တမ်းကို buffer နှင့် ချိတ်ဆက်ထားသည်။
  • ManuallyDrop harness နှင့် Box smart pointer အကြား အပြန်အလှန် ဆက်သွယ်မှုကြောင့် undefined behavior ကို မဖြစ်ပေါ်စေတော့ပါ။
  • API ၏ အစိတ်အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့ထားပြီး၊ နည်းလမ်းများနှင့် စရိုက်လက္ခဏာများကို အကောင်အထည်ဖော်ရာတွင် တည်ငြိမ်အောင်ပြုလုပ်ထားသည်-
    • str::substr_range
    • [T]::subslice_range
    • core::fmt::NumBuffer
    • <{integer}>::ပုံစံ_ထဲသို့
    • std::process::CommandArgs အတွက် ပို့ရန်/ထပ်တူပြုရန်
    • {fN}::အက္ခရာသင်္ချာ_ထပ်ထည့်ခြင်း
    • {fN}::အက္ခရာသင်္ချာ_sub
    • {fN}::အက္ခရာသင်္ချာ_မူလ
    • {fN}::အက္ခရာသင်္ချာ_div
    • {fN}::အက္ခရာသင်္ချာ_ပြန်လည်တွက်ချက်မှု
    • သုညမဟုတ်သော<{integer}>::str_radix မှ
    • String::from_utf16le
    • String::from_utf16le_lossy
    • String::from_utf16be
    • String::from_utf16be_lossy
    • [T]::strip_circumfix
    • str::strip_circumfix
    • အနုမြူ ::from_mut
    • အနုမြူ ::mut_slice ရယူပါ
    • အနုမြူ ::from_mut_slice
    • std::range::legacy
  • ပစ်မှတ်ပလက်ဖောင်းများဖြစ်သည့် thumbv7a-none-eabi၊ thumbv7a-none-eabihf၊ thumbv7r-none-eabi၊ thumbv7r-none-eabihf နှင့် thumbv8r-none-eabihf တို့ကို ဒုတိယအဆင့်ပံ့ပိုးမှုသို့ ရွှေ့ပြောင်းလိုက်ပါပြီ၊ ၎င်းတွင် တည်ဆောက်မှုအာမခံချက်ပါဝင်သော်လည်း စမ်းသပ်မှုအစုံကို အောင်မြင်ရန် အာမခံချက်မရှိပါ။
  • powerpc64-unknown-linux-gnuelfv2 နှင့် aarch64-unknown-linux-pauthtest ပလက်ဖောင်းများအတွက် ပံ့ပိုးမှုကို ထည့်သွင်းထားပြီးဖြစ်ပြီး၊ ၎င်းတို့သည် ယခုအခါ level 3 ပံ့ပိုးမှုတွင် ရှိနေသည်။ Level 3 တွင် အခြေခံပံ့ပိုးမှု ပါဝင်သော်လည်း အလိုအလျောက် စမ်းသပ်ခြင်း၊ တရားဝင် တည်ဆောက်မှု ထုတ်ပြန်ချက်များ သို့မဟုတ် တည်ဆောက်မှု အတည်ပြုခြင်း မပါဝင်ပါ။

ထို့အပြင်၊ ပြီးခဲ့သည့် ၉၀ ရက်အတွင်း အကြိမ်ရေ ၅၃ သန်းကျော် ဒေါင်းလုဒ်လုပ်ထားပြီး package ၄၀၃ ခုမှ မှီခိုမှုအဖြစ် အသုံးပြုထားသည့် လူကြိုက်များသော crate package arrayref သည် တိုက်ခိုက်ခံခဲ့ရသည်။ တိုက်ခိုက်သူများသည် အန္တရာယ်ရှိသော ကုဒ်ပါ၀င်သည့် package အသစ်များကို crates.io repository တွင် တင်ခဲ့သည်- proc-macro1၊ proc-macro-en၊ aovine၊ arone၊ aronenao နှင့် tinymember။ ထို့နောက်၊ arrayref 0.3.10၊ internment 0.8.7 နှင့် append-only-vec 0.1.9 တို့၏ အသစ်ထွက်ရှိလာသော package များကို repository တွင် တင်ခဲ့ပြီး တစ်ခုချင်းစီတွင် အန္တရာယ်ရှိသော proc-macro1 package များကို မှီခိုမှုအဖြစ် ထည့်သွင်းခဲ့သည်။ arrayref package ၏ အန္တရာယ်ရှိသော ဗားရှင်းကို သြဂုတ်လ ၂၀ ရက်နေ့ နံနက် ၁၀:၁၅ (MSK) တွင် တင်ခဲ့ပြီး နံနက် ၁၁:၄၁ အထိ အသက်ဝင်နေခဲ့ပြီးနောက် crates.io administrator များမှ ဖယ်ရှားခဲ့သည်။

arrayref ရဲ့ ပြုပြင်ထိန်းသိမ်းသူကို အခြေအနေကို ရှင်းလင်းဖို့ ဆက်သွယ်မေးမြန်းခြင်း မရှိသေးပေမယ့် သူတို့ရဲ့ အထောက်အထားတွေကို တိုက်ခိုက်သူတွေက ကြားဖြတ်ယူသွားတယ်လို့ ယုံကြည်ရပါတယ်။ proc-macro1 package မှာ build script မှာ အန္တရာယ်ရှိတဲ့ ပြောင်းလဲမှုတစ်ခု ရှိနေခဲ့ပြီး external directory တစ်ခုကနေ executable file တစ်ခုကို load လုပ်ခဲ့ပါတယ်။ ဆာဗာဒေါင်းလုဒ်လုပ်ထားသောဖိုင်ကို Unix စနစ်များတွင် /tmp/rust-setup အဖြစ် သိမ်းဆည်းထားပြီး Windows — %TEMP%\rust-setup.ps1 သို့မဟုတ် %TEMP%\rust-setup-launch.vbs။

source: opennet.ru

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