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

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

Rust ၏ အလိုအလျောက် မှတ်ဉာဏ်စီမံခန့်ခွဲမှုသည် ညွှန်ပြချက်များကို ကိုင်တွယ်ရာတွင် အမှားအယွင်းများကို ဖယ်ရှားပေးပြီး ၎င်းကို လွတ်ပြီးသည့်နောက် မမ်မိုရီဧရိယာကို ဝင်ရောက်ခြင်း၊ အချည်းနှီးသော ညွှန်ပြမှုဆိုင်ရာ အမှားအယွင်းများ၊ ကြားခံအလွဲသုံးမှုများ စသည်တို့ကဲ့သို့သော အဆင့်နိမ့်မှတ်ဉာဏ်ကို ကိုင်တွယ်ခြင်းမှ ဖြစ်ပေါ်လာသည့် ပြဿနာများကို ကာကွယ်ပေးသည်။ စာကြည့်တိုက်များကို ဖြန့်ဝေရန်၊ စုစည်းမှုကို သေချာစေရန်နှင့် မှီခိုမှုကို စီမံခန့်ခွဲရန်၊ ပရောဂျက်သည် Cargo package manager ကို တီထွင်နေပါသည်။ crates.io repository ကို hosting libraries များအတွက် ပံ့ပိုးထားပါသည်။

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

  • "ကုန်တင်စစ်ဆေးခြင်း" နှင့် "ကုန်တင်ကုန်ချကလစ်" ညွှန်ကြားချက်များကို အကောင်အထည်ဖော်ရန် စည်းနှောင်မှုကို ဖယ်ရှားထားသည်။ ယခင်က၊ "ကုန်တင်စစ်ဆေးခြင်း" ပြီးနောက် "ကုန်တင်ကလစ်ပီ" ဟုခေါ်ဆိုခြင်းသည် ဤစစ်ဆေးမှုမုဒ်များအတွက် ကက်ရှ်ခွဲခြားမှုမရှိခြင်းကြောင့် clippy utility (linter) ကို စတင်ခြင်းမပြုခဲ့ပါ။ ယခု ဤပြဿနာကို ဖြေရှင်းပြီးသည်နှင့် “ကုန်တင်ကလစ်” နှင့် “ကုန်တင်စစ်ဆေးခြင်း” ဟူသောအမိန့်သည် အရေးမကြီးတော့ပါ။
  • အောက်ပါနည်းလမ်းများ အပါအဝင် API ၏ အပိုင်းအသစ်ကို တည်ငြိမ်သောအမျိုးအစားသို့ လွှဲပြောင်းပြီးပါပြီ၊
    • အကြောင်းပြချက်များ-:as_str
    • char::MAX
    • char-:REPLACEMENT_CHARACTER
    • char-:UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_ အမှန်ခြစ်ဖြုတ်ထားသည်။
    • char::from_u32
    • slice::partition_point
    • str::rsplit_တစ်ကြိမ်
    • str::split_တစ်ကြိမ်
  • ကိန်းသေများအစား မည်သည့်အကြောင်းအရာတွင်မဆို အသုံးပြုရန် ဖြစ်နိုင်ခြေကို ဆုံးဖြတ်ပေးသည့် "const" attribute ကို နည်းလမ်းများတွင် အသုံးပြုသည်-
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_ စာလုံးကြီး
    • char::to_ascii_ စာလုံးသေး
    • char::eq_ignore_ascii_case
    • u8::to_ascii_ စာလုံးကြီး
    • u8::to_ascii_ စာလုံးသေး
    • u8::eq_ignore_ascii_case
  • မလုံခြုံသောလုပ်ဆောင်ချက်များတွင် အသုံးပြုထားသော မလုံခြုံသောကုဒ်ကို အန္တရာယ်ကင်းသောပိတ်ဆို့မှုများဖြင့် ဘောင်ခတ်ထားခြင်းရှိမရှိ ဆုံးဖြတ်ရန် ထပ်ထည့်ထားသော အလင်းတန်းကို စစ်ဆေးပါ။
  • ၎င်းအား array element အမျိုးအစားသို့ pointers ပုံစံသို့ array များဆီသို့ mutable pointers များ ကာစ်လုပ်ရန် ခွင့်ပြုထားသည်။ mut x: [usize; 2] = [0, 0]; p = &mut x ကို *mut သုံးပါ ။ p = &mut x ကို *const ကိုသုံးပါ ။
  • စစ်ဆေးမှုအသစ် ၉ ခုကို clippy (linter) တွင် ထည့်သွင်းထားသည်။
  • ကုန်တင်ပက်ကေ့ဂျ်မန်နေဂျာသည် ယခုအခါ ပက်ကေ့ဂျ်များအတွက် JSON ရှိ “manifest_path” အကွက်ကို ပံ့ပိုးပေးပါသည်။ Crates.io သိုလှောင်မှုသို့ SPDX 3.11 ဖော်မတ်တွင် လိုင်စင်အချက်အလက်သတ်မှတ်ခြင်းအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်သွင်းထားသည်။
  • စမ်းသပ်မှုများလုပ်ဆောင်သောအခါတွင် စစ်ထုတ်မှုအများအပြားကို သတ်မှတ်ခွင့်ပြုသည်၊ ဥပမာအားဖြင့် "ကုန်တင်စမ်းသပ်မှု - foo bar" ကိုအသုံးပြုခြင်းသည် "foo" နှင့် "bar" မျက်နှာဖုံးများနှင့် ကိုက်ညီသော စမ်းသပ်မှုအားလုံးကို လုပ်ဆောင်မည်ဖြစ်သည်။
  • မူရင်း LLVM ကိရိယာအစုံကို LLVM 12 သို့ အပ်ဒိတ်လုပ်ထားသည်။
  • ပံ့ပိုးမှုတတိယအဆင့်ကို s390x-unknown-linux-musl၊ riscv32gc-unknown-linux-musl၊ riscv64gc-unknown-linux-musl နှင့် powerpc-unknown-openbsd ပလပ်ဖောင်းများအတွက် အကောင်အထည်ဖော်ခဲ့သည်။ တတိယအဆင့်တွင် အခြေခံပံ့ပိုးမှုပါဝင်သော်လည်း အလိုအလျောက်စမ်းသပ်ခြင်းမရှိဘဲ၊ တရားဝင်တည်ဆောက်မှုများကို ထုတ်ပြန်ခြင်း သို့မဟုတ် ကုဒ်ကိုတည်ဆောက်နိုင်သည်ရှိမရှိ စစ်ဆေးခြင်းမပြုဘဲဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add