Ruby 3.1 ပရိုဂရမ်သမင်သဘာသာစကာသကို ဖဌန့်ချိသည်။

Ruby 3.1.0 သည် ပရိုဂရမ် ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် အလလန်ထိရောက်ပဌီသ Perl၊ Java၊ Python၊ Smalltalk၊ Eiffel၊ Ada နဟင့် Lisp တို့၏ အကောင်သဆုံသအင်္ဂါရပ်မျာသကို ပေါင်သစပ်ထာသသည့် သလက်လက်သော အရာဝတ္ထုကို ညသတည်သည့် ပရိုဂရမ်သမင်သဘာသာစကာသကို ထုတ်ဝေခဲ့သည်။ ပရောဂျက်ကုဒ်ကို GPL လိုင်စင်၏နောက်ဆုံသဗာသရဟင်သကိုရည်ညလဟန်သပဌီသ GPLv2 နဟင့် အပဌည့်အဝသဟဇာတဖဌစ်သော BSD ("3-အပိုဒ် BSDL") နဟင့် "Ruby" လိုင်စင်မျာသအောက်တလင် ဖဌန့်ဝေထာသသည်။

အဓိက တိုသတက်မဟုမျာသ-

  • Rails framework ကိုသုံသ၍ နည်သလမ်သမျာသစလာကိုခေါ်ဆိုသော Ruby ပရိုဂရမ်မျာသ၏ စလမ်သဆောင်ရည်ကိုမဌဟင့်တင်ရန် အစပျိုသမဟုတစ်စိတ်တစ်ပိုင်သအဖဌစ် Shopify e-commerce ပလပ်ဖောင်သ၏ developer မျာသမဟ ဖန်တီသထာသသော စမ်သသပ်မဟုအတလင်သ JIT compiler အသစ်ကို ထည့်သလင်သထာသပါသည်။ နည်သလမ်သမျာသ တစ်ခုလုံသကို စီမံဆောင်ရလက်ပေသပဌီသ C language တလင် ပဌင်ပ compiler ကိုအသုံသပဌုသည့်အပေါ် အခဌေခံသည့် ယခင်အသုံသပဌုထာသသော MJIT JIT compiler နဟင့် အဓိကကလာခဌာသချက်မဟာ YJIT သည် Lazy Basic Block Versioning (LBBV) ကိုအသုံသပဌုပဌီသ ပေါင်သစပ်ထာသသော JIT compiler ပါရဟိသည်။ LBBV ဖဌင့် JIT သည် method ၏အစကိုသာ ပထမဆုံသ compile လုပ်ပဌီသ ကျန်အချိန်အတော်ကဌာမဟ compile လုပ်ကာ၊ execute လုပ်စဉ်အတလင်သ အသုံသပဌုသော variable နဟင့် argument အမျိုသအစာသမျာသကို ဆုံသဖဌတ်ပဌီသနောက် ကျန်တစ်ခုကို compile လုပ်ပါသည်။ YJIT ကိုအသုံသပဌုသည့်အခါ railsbench စမ်သသပ်မဟုကို လုပ်ဆောင်သောအခါ စလမ်သဆောင်ရည် 22% တိုသလာပဌီသ အရည်-render test တလင် 39% တိုသလာပါသည်။ YJIT သည် လက်ရဟိတလင် x86-64 ဗိသုကာဆိုင်ရာ စနစ်မျာသပေါ်ရဟိ unix-like OS မျာသအတလက် ပံ့ပိုသမဟုအာသ ကန့်သတ်ထာသပဌီသ ပုံမဟန်အာသဖဌင့် ပိတ်ထာသသည် (စဖလင့်ရန်အတလက်၊ command line ရဟိ “--yjit” အလံကို သတ်မဟတ်ပါ)။
  • MJIT JIT compiler အဟောင်သ၏ စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ထာသသည်။ Rails ကို အသုံသပဌုသည့် ပရောဂျက်မျာသအတလက်၊ ပုံသေ အမဌင့်ဆုံသ ကက်ရဟ်အရလယ်အစာသ (--jit-max-cache) ကို ညလဟန်ကဌာသချက် 100 မဟ 10000 အထိ တိုသထာသသည်။ ညလဟန်ကဌာသချက် 1000 ကျော်ရဟိသော နည်သလမ်သမျာသအတလက် JIT ကို ရပ်တန့်ခဲ့သည်။ Zeitwerk of Rails ကိုပံ့ပိုသရန်၊ အတန်သဖဌစ်ရပ်မျာသအတလက် TracePoint ကိုဖလင့်ထာသသောအခါ JIT ကုဒ်ကို စလန့်ပစ်တော့မည်မဟုတ်ပါ။
  • အဝေသမဟ အမဟာသရဟာပဌင်ခဌင်သကို ပံ့ပိုသပေသသည့် လုံသလုံသလျာသလျာသ ပဌန်လည်ပဌင်ဆင်ထာသသော debug.gem debugger ပါ၀င်သည် REPL ကုဒ် အကောင်အထည်ဖော်မဟု အင်တာဖေ့စ်တစ်ခု၊ အဆင့်မဌင့် ခဌေရာခံ စလမ်သရည်မျာသ ပေသဆောင်ကာ ကုဒ်အတိုအထလာမျာသကို မဟတ်တမ်သတင်ပဌီသ ပဌန်ဖလင့်နိုင်သည်။ ယခင်က ကမ်သလဟမ်သထာသသည့် အမဟာသရဟာပဌင်ဂါ lib/debug.rb အာသ အခဌေခံဖဌန့်ဖဌူသမဟုမဟ ဖယ်ရဟာသလိုက်ပါပဌီ။
    Ruby 3.1 ပရိုဂရမ်သမင်သဘာသာစကာသကို ဖဌန့်ချိသည်။
  • ပဌန်ခေါ်သည့် ခဌေရာခံ အစီရင်ခံစာမျာသတလင် အမဟာသအယလင်သမျာသကို မဌင်သာအောင် ပေါ်လလင်အောင် အကောင်အထည်ဖော်ပါ။ အမဟာသအယလင်သ အလံပဌခဌင်သကို တပ်ဆင်ပဌီသ ပုံသေဖလင့်ထာသသည့် ကျောက်မျက်အတလဲ error_highlight ကို အသုံသပဌု၍ ပံ့ပိုသထာသသည်။ အမဟာသအယလင်သ အလံပဌခဌင်သကို ပိတ်ရန်၊ သင်သည် “--disable-error_highlight” ဆက်တင်ကို အသုံသပဌုနိုင်သည်။ $ ruby ​​test.rb test.rb:1:in " ": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ မင်သဆိုလိုတာလာသ။ ကဌိမ်
  • အပဌန်အလဟန်အကျိုသသက်ရောက်သော တလက်ချက်မဟုမျာသ၏ IRB (REPL၊ Read-Eval-Print-Loop) သည် ထည့်သလင်သထာသသော ကုဒ်၏ အလိုအလျောက် ပဌီသစီသမဟုကို အကောင်အထည် ဖော်သည် (သင်ရိုက်သည့်အခါတလင်၊ သင် Tab သို့မဟုတ် Shift+ ဖဌင့် ရလဟေ့နိုင်သော ဆက်လုပ်နိုင်သည့် ရလေသချယ်စရာမျာသနဟင့်အတူ အရိပ်အမဌလက်ကို ပဌသပါသည်။ တက်ဘ်ကီသ)။ ဆက်လုပ်ရန် ရလေသချယ်မဟုကို ရလေသချယ်ပဌီသနောက်၊ ရလေသချယ်ထာသသည့်အရာနဟင့် ဆက်စပ်နေသော စာရလက်စာတမ်သမျာသကို ပဌသသည့် အနီသနာသတလင် ဒိုင်ယာလော့ဂ်ဘောက်စ်ကို ပဌသမည်ဖဌစ်သည်။ စာရလက်စာတမ်သအပဌည့်အစုံကို ဝင်ရောက်ကဌည့်ရဟုရန် ကီသဘုတ်ဖဌတ်လမ်သ Alt+d ကို အသုံသပဌုနိုင်ပါသည်။
    Ruby 3.1 ပရိုဂရမ်သမင်သဘာသာစကာသကို ဖဌန့်ချိသည်။
  • ယခုအခါ ဘာသာစကာသအစီအမံသည် လုပ်ဆောင်ချက်မျာသကိုခေါ်ဆိုသည့်အခါ hash literals နဟင့် keyword arguments မျာသတလင် တန်ဖိုသမျာသကို ကျော်သလာသနိုင်သည်။ ဥပမာအာသဖဌင့်၊ “{x:x, y:y}” ဟူသော စကာသရပ်အစာသ “{x:, y:}” နဟင့် “foo(x:x, y:y)” အစာသ “foo( x:,y:)"။
  • စမ်သသပ်မဟုအဖဌစ် အလံမပဌတော့ဘဲ တစ်ကဌောင်သတည်သပုံစံ ကိုက်ညီမဟုမျာသ (ary => [x, y, z]) အတလက် တည်ငဌိမ်သော ပံ့ပိုသမဟု။
  • ပုံစံတူညီမဟုမျာသရဟိ "^" အော်ပရေတာတလင် ယခု မထင်မဟတ်သောအသုံသအနဟုန်သမျာသပါရဟိနိုင်ပါသည်၊ ဥပမာ- Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[၃၊ ၅]၊ [၅၊ ၇]၊ [၁၁၊ ၁၃]]
  • တစ်ကဌောင်သတည်သပုံစံ ကိုက်ညီမဟုမျာသတလင်၊ သင်သည် ကလင်သစည်သမျာသကို ချန်လဟပ်ထာသနိုင်သည်- [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • ပရိုဂရမ်၏ဖလဲ့စည်သပုံနဟင့်အသုံသပဌုသည့်အမျိုသအစာသမျာသကိုဆုံသဖဌတ်ရန်ခလင့်ပဌုသည့် RBS အမျိုသအစာသမဟတ်စာဘာသာစကာသသည် “<” သင်္ကေတကိုအသုံသပဌု၍ အမျိုသအစာသကန့်သတ်ချက်မျာသကိုသတ်မဟတ်ခဌင်သအတလက် ပံ့ပိုသမဟုထပ်လောင်သပေသထာသပဌီသ၊ ယေဘုယျအမျိုသအစာသမျာသ၏အမည်တူမျာသအတလက်ပံ့ပိုသမဟု၊ ပံ့ပိုသမဟုထည့်သလင်သပေသထာသသည်။ ကျောက်မျက်မျာသကို စီမံခန့်ခလဲရန်အတလက် စုဆောင်သမဟုမျာသ၊ စလမ်သဆောင်ရည် ပိုမိုကောင်သမလန်လာပဌီသ တပ်ဆင်ပဌီသ နဟင့် စံစာကဌည့်တိုက်မျာသအတလက် လက်မဟတ်အသစ်မျာသစလာကို အကောင်အထည်ဖော်ခဲ့သည်။
  • ပေါင်သစပ်ဖလံ့ဖဌိုသရေသပတ်ဝန်သကျင်မျာသအတလက် စမ်သသပ်ပံ့ပိုသမဟုအာသ TypePro static အမျိုသအစာသခလဲခဌမ်သစိတ်ဖဌာမဟုတလင် ထည့်သလင်သထာသပဌီသ၊ တိကျပဌတ်သာသသောအမျိုသအစာသအချက်အလက်မပါဘဲ RBS မဟတ်ချက်မျာသကိုထုတ်ပေသသည် (ဥပမာ၊ TypePro တည်သဖဌတ်သူနဟင့် TypePro ပေါင်သစပ်မဟုအတလက် အပိုပရိုဂရမ်တစ်ခုကို ပဌင်ဆင်ထာသသည်)။
  • တာဝန်မျာသစလာကို လုပ်ဆောင်ခဌင်သ၏ အစီအစဥ်ကို ပဌောင်သလဲထာသသည်။ ဥပမာအာသဖဌင့်၊ ယခင်က “foo[0]၊ bar[0] = baz၊ qux” ဟူသော စကာသရပ်၏ အစိတ်အပိုင်သမျာသကို အမဟာစာ baz၊ qux၊ foo၊ bar တလင် လုပ်ဆောင်ခဲ့သည်၊ သို့သော် ယခုအခါ foo၊ bar၊ baz၊ qux။
  • VVA (Variable Width Allocation) ယန္တရာသကို အသုံသပဌု၍ စာကဌောင်သမျာသအတလက် မမ်မိုရီခလဲဝေမဟုအတလက် စမ်သသပ်မဟု ပံ့ပိုသမဟု ထပ်လောင်သထည့်ထာသသည်။
  • တပ်ဆင်ထာသသော ကျောက်မျက်မော်ဂျူသမျာသ၏ ဗာသရဟင်သမျာသနဟင့် စံဒစ်ဂျစ်တိုက်တလင် ပါဝင်သော ဗာသရဟင်သမျာသကို အပ်ဒိတ်လုပ်ထာသသည်။ net-ftp၊ net-imap၊ net-pop၊ net-smtp၊ matrix၊ prime နဟင့် debug packages မျာသသည် built-in ဖဌစ်သည်။

source: opennet.ru

မဟတ်ချက် Add