Rust 1.95 ထုတ်ဝေမှု။ Mir display server တွင် Rust ထည့်သွင်းခြင်း။ Rust ရှိ AyaFlow traffic analyzer။

Mozilla ပရောဂျက်မှ တည်ထောင်ထားသော Rust 1.95 ပရိုဂရမ်ဘာသာစကားကို လွတ်လပ်သော အကျိုးအမြတ်မယူသော 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 သည် ကိန်းပြည့်ပြည့်လျှံမှုများကို အကာအကွယ်ပေးသည်၊ အသုံးမပြုမီ ပြောင်းလဲနိုင်သောတန်ဖိုးများကို မဖြစ်မနေစတင်လုပ်ဆောင်ရန် လိုအပ်သည်၊ စံဒစ်ဂျစ်တိုက်တွင် ပိုမိုကောင်းမွန်သော အမှားများကို ကိုင်တွယ်ရန်၊ ပုံသေအားဖြင့် မပြောင်းလဲနိုင်သော ကိုးကားချက်များနှင့် ကိန်းရှင်များ၏ သဘောတရားကို ကျင့်သုံးသည်၊ ယုတ္တိအမှားများကို အနည်းဆုံးဖြစ်စေရန် ခိုင်လုံသောအငြိမ်စာရိုက်ခြင်းကို ပံ့ပိုးပေးပါသည်။

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

  • "cfg_select!" macro ကို ထည့်သွင်းထားပြီး၊ ၎င်းကို "cfg-if" package အစား ""match" block ပုံစံဖြင့် compilation condition များစွာကို ကိုင်တွယ်ရန် အသုံးပြုနိုင်ပါသည်။ cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* non-unix, 32-bit */ } } _ => { fn foo() { /* not unix and not 32-bit */ } } }
  • "match" blocks များအတွင်း "if let" expression များကို သတ်မှတ်နိုင်စွမ်းကို conditional pattern matching ဖန်တီးရန် တည်ငြိမ်အောင် ပြုလုပ်ထားပါသည်။ ယခင်က "&&" operator ကို အသုံးပြု၍ "let" expression များစွာကို သတ်မှတ်ခြင်းအတွက် ပံ့ပိုးမှုကို "if" နှင့် "while" blocks များအတွက် တည်ငြိမ်အောင် ပြုလုပ်ထားပါသည်။ match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • PowerPC နှင့် PowerPC64 ဗိသုကာပုံစံများအတွက် တည်ငြိမ်သော inline assembler ပံ့ပိုးမှု။
  • API ၏ အစိတ်အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ ရွှေ့ထားပြီး၊ နည်းလမ်းများနှင့် စရိုက်လက္ခဏာများကို အကောင်အထည်ဖော်ရာတွင် တည်ငြိမ်အောင်ပြုလုပ်ထားသည်-
    • MaybeUninit<[T; N]>: မှ <[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit ]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit ; N]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit ]>
    • [ဖြစ်နိုင်တယ် Uninit ; N]: မှ
    • ဆဲလ် <[T; N]>: AsRef <[ဆဲလ်] ; N]>
    • ဆဲလ် <[T; N]>: AsRef <[ဆဲလ်] ]>
    • ဆဲလ် <[T]>: AsRef <[ဆဲလ်] ]>
    • bool: TryFrom<{integer}>
    • AtomicPtr::အပ်ဒိတ်
    • AtomicPtr::try_update
    • AtomicBool::အပ်ဒိတ်
    • AtomicBool::try_update
    • AtomicIn::အပ်ဒိတ်
    • AtomicIn::try_update
    • AtomicUn::update
    • AtomicUn::try_update
    • cfg_ရွေးချယ်ပါ!
    • mod core::range
    • core::range::RangeInclusive
    • core::range::RangeInclusiveIter
    • core::hint::cold_path
    • <*const T>::as_ref_unchecked
    • <*mut T>::as_ref_unchecked
    • <*mut T>::as_mut_unchecked မလုပ်ရသေးပါ
    • Vec::push_mut
    • Vec::insert_mut
    • VecDeque::push_front_mut
    • VecDeque::push_back_mut
    • VecDeque::insert_mut
    • LinkedList::push_front_mut
    • LinkedList::push_back_mut
    • အပြင်အဆင်::dangling_ptr
    • အပြင်အဆင်::ထပ်ခါတလဲလဲ
    • အပြင်အဆင်::ထပ်ခါတလဲလဲ_ထုပ်ပိုးထားသည်
    • အပြင်အဆင်::extend_packed
  • လုပ်ဆောင်ချက်များတွင် "const" သင်္ကေတကို အသုံးပြုသည်-
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::ဆက်လက်လုပ်ဆောင်ရန်
  • toolchain ၏ stable ဗားရှင်းများတွင်၊ native target platform သတ်မှတ်ချက်များကို compiler သို့ပေးပို့ခြင်းအတွက် ပံ့ပိုးမှုကို ဖယ်ရှားလိုက်ပါပြီ။
  • powerpc64-unknown-linux-musl၊ aarch64-apple-tvos၊ aarch64-apple-tvos-sim၊ aarch64-apple-watchos၊ aarch64-apple-watchos-sim၊ aarch64-apple-visionos နှင့် aarch64-apple-visionos-sim ပစ်မှတ်ပလက်ဖောင်းများကို ပံ့ပိုးမှုအဆင့် ၂ သို့ ရွှေ့ပြောင်းထားပြီး၊ ၎င်းတွင် build အာမခံချက်ပါဝင်သော်လည်း test suite အောင်မြင်ကြောင်း အာမခံချက်မရှိပါ။

ထို့အပြင်၊ Rust နှင့် ဆက်စပ်သော မကြာသေးမီက ကြေညာခဲ့သော ပရောဂျက်များနှင့် ပွဲများကို မီးမောင်းထိုးပြလိုပါသည်-

  • Canonical က composite image တွေဖန်တီးဖို့အတွက် libraries အစုံကို ပံ့ပိုးပေးတဲ့ Mir 2.26 display server ကို မိတ်ဆက်လိုက်ပါတယ်။ ဆာဗာများ Wayland protocol ကို အခြေခံပြီး window manager များနှင့် display server များ၏ ပုံမှန်လုပ်ဆောင်ချက်များကို ပေါင်းစပ်ထားသော Mir ကို Miracle compositing manager၊ web kiosk shell ကဲ့သို့သော ပရောဂျက်များတွင် အသုံးပြုသည်။ Ubuntu Frame နှင့် Miriway အသုံးပြုသူပတ်ဝန်းကျင်။

    ယခုထွက်ရှိလာတဲ့ဗားရှင်းအသစ်ဟာ Rust မှာ components တွေ တည်ဆောက်နိုင်စွမ်းကို ထည့်သွင်းပေးထားတာ ထင်ရှားပါတယ်။ Rust မှာ အခြား input management subsystem တစ်ခုဖြစ်တဲ့ evdev-rs ကို အကောင်အထည်ဖော်ထားပြီး Wayland အတွက် Rust-based frontend ဖြစ်တဲ့ wayland-rs ကို စတင်လုပ်ဆောင်နေပါပြီ။ Mir မှာ Rust နဲ့ မသက်ဆိုင်တဲ့ ပြောင်းလဲမှုတွေမှာ Wayland protocols ext_image_copy_capture_v1 နဲ့ input-triggers တွေကို support လုပ်ပါတယ်။

  • Rust တွင်ရေးသားထားပြီး kernel subsystem ကို အသုံးပြုထားသည့် ayaFlow traffic analyzer ၏ ပထမဆုံးထွက်ရှိမှုကို ထုတ်ဝေလိုက်ပါပြီ။ Linux စွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှု အနည်းဆုံးဖြင့် ကွန်ရက်ပက်ကက်များ (IPv4/TCP/UDP) နှင့် Ethernet frame များကို ကြားဖြတ်ရန်အတွက် eBPF။ ၎င်းသည် ကုဒ်ဝှက်ထားသော အသွားအလာကို ခွဲခြမ်းစိတ်ဖြာသည့်အခါ TLS SNI နှင့် DNS query များကို ထုတ်ယူခြင်းကဲ့သို့သော application-layer (L7) protocol များကို နက်ရှိုင်းစွာ စစ်ဆေးခြင်းကို ပံ့ပိုးပေးသည်။ စနစ်သည် DashMap format ဖြင့် လက်ရှိချိတ်ဆက်မှုအခြေအနေ၏ ဇယားကို ထိန်းသိမ်းထားပြီး၊ SQLite တွင် history ကို သိမ်းဆည်းထားပြီး၊ REST API မှတစ်ဆင့် Prometheus သို့ စာရင်းအင်းများကို ပြန်ပို့သည်။
  • std::thread လုပ်ဆောင်ချက်များကို အသုံးပြု၍ Rust ဘာသာစကားဖြင့် multithreaded application များကို ဖန်တီးပြီး GPU ဘက်တွင် လုပ်ဆောင်နိုင်စွမ်းကို အကောင်အထည်ဖော်ပြီးဖြစ်သည်။

source: opennet.ru

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