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

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

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

  • သမ္ဘာ ထောက်ပံ့ ပုံစံတူ (Pattern ကိုက်ညီခဌင်သ။) ပေသထာသသော အရာဝတ္တုကို ထပ်ကာထပ်ကာ ပဌုလုပ်ပဌီသ ပုံစံတစ်ခု ကိုက်ညီမဟုရဟိလျဟင် တန်ဖိုသတစ်ခု သတ်မဟတ်ပါ။

    case [0၊ [1၊ 2၊ 3]] တလင် [a၊ [b၊ *c]] pa #=> 0၊
    pb #=> ၁
    pc #=> [2, 3] အဆုံသ

    အမဟုတလဲ {a: 0၊ b: 1}
    {a: 0၊ x: 1} တလင်
    :မရနိုင်ပါ။
    {a:0၊b:var} တလင်
    p var #=> ၁
    အဆုံသ

  • အပဌန်အလဟန်တုံ့ပဌန်သောတလက်ချက်မဟုမျာသ၏ irb (REPL၊ Read-Eval-Print-Loop) သည် ယခုအခါ လိုင်သပေါင်သစုံတည်သဖဌတ်နိုင်ခဌေရဟိပဌီသ၊ readline-compatible စာကဌည့်တိုက်ကို အသုံသပဌု၍ အကောင်အထည်ဖော်နိုင်သည် အာသကိုသပတ္တမဌာသဖဌင့် ရေသသာသထာသသည်။ rdoc အတလက် ပံ့ပိုသမဟုကို ပေါင်သစပ်ထာသပဌီသ၊ irb ရဟိ သတ်မဟတ်ထာသသော အတန်သမျာသ၊ မော်ဂျူသမျာသနဟင့် နည်သလမ်သမျာသပေါ်တလင် ကိုသကာသချက် အချက်အလက်မျာသကို ကဌည့်ရဟုခလင့်ပဌုသည်။ Binding#irb မဟတဆင့် ပဌထာသသော ကုဒ်မျာသဖဌင့် မျဉ်သကဌောင်သမျာသ၏ ရောင်စုံမီသမောင်သထိုသပဌပဌီသ အခဌေခံ အတန်သအစာသ အရာဝတ္ထုမျာသကို စစ်ဆေသခဌင်သ၏ ရလဒ်မျာသကို ပေသပါသည်။

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

  • အချို့သော Multi-threaded Ruby အပလီကေသရဟင်သမျာသ၏ လုပ်ဆောင်မဟုအတလင်သ ဖဌစ်ပေါ်သည့် မမ်မိုရီအကလဲကလဲအပဌာသပဌာသဖဌစ်ခဌင်သကဌောင့် မမ်မိုရီ၏ ဧရိယာကို အကလဲအပဌဲဖဌစ်စေနိုင်သော ကျစ်လစ်သိပ်သည်သသော အမဟိုက်စုဆောင်သသူ (Compaction GC) ကို ပေါင်သထည့်ထာသသည်။ အမဟိုက်ပုံပေါ်ရဟိ ပစ္စည်သမျာသကို ထုပ်ပိုသရန် အဆိုပဌုသည်။ GC.compact နည်သလမ်သသည် အသုံသပဌုသည့် မမ်မိုရီစာမျက်နဟာ အရေအတလက်ကို လျဟော့ချရန်နဟင့် လုပ်ငန်သဆောင်ရလက်မဟုမျာသအတလက် အစုကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ရန်
    CoW (copy-on-write)။

  • ဆောင်ရလက်ခဲ့ပါသည်။ စာရင်သထဲရဟိ ရာထူသအလိုက် ငဌင်သခုံမဟုမျာသ ("def foo(a,b,c)") နဟင့် အဓိကစကာသလုံသမျာသ ("def foo(ကီသ: val)") တို့ကို ခလဲခဌာသရန် ပဌင်ဆင်နေပါသည်။ သော့ချက်စကာသလုံသမျာသနဟင့် ရာထူသအပေါ်အခဌေခံ၍ အလိုအလျောက်အငဌင်သပလာသမဟုကို ရပ်တန့်လိုက်ပဌီသ Ruby 3.0 ဌာနခလဲတလင် ပံ့ပိုသပေသမည်မဟုတ်ပါ။ အထူသသဖဌင့်၊ နောက်ဆုံသအငဌင်သအခုံကို အဓိကစကာသလုံသကန့်သတ်ချက်မျာသအဖဌစ်အသုံသပဌုရန်၊ နောက်ဆုံသ hash ကန့်သတ်ဘောင်မျာသအဖဌစ် အဓိကစကာသလုံသအခဌေခံအငဌင်သအခုံမျာသကိုဖဌတ်သန်သရန်နဟင့် နောက်ဆုံသအငဌင်သအခုံကို positional နဟင့် keyword parameters မျာသအဖဌစ် ပိုင်သခဌာသရန် ငဌင်သဆိုထာသသည်။

    def foo(သော့- 42); အဆုံသ; foo({key: 42}) #သတိပေသထာသသည်။
    def foo(**kw); အဆုံသ; foo({key: 42}) #သတိပေသထာသသည်။
    def foo(သော့- 42); အဆုံသ; foo(**{key: 42}) # OK
    def foo(**kw); အဆုံသ; foo(**{key: 42}) # OK

    def foo(h၊ **kw); အဆုံသ; foo(သော့- 42) #သတိပေသထာသသည်။
    def foo(h၊ သော့- 42); အဆုံသ; foo(key: 42) # သတိပေသထာသသည်။
    def foo(h၊ **kw); အဆုံသ; foo({key: 42}) # အိုကေ
    def foo(h၊ သော့- 42); အဆုံသ; foo({key: 42}) # အိုကေ

    def foo(h={}၊ သော့- 42); အဆုံသ; foo("သော့" => 43၊ သော့- 42) # သတိပေသထာသသည်။
    def foo(h={}၊ သော့- 42); အဆုံသ; foo({"key" => 43၊ သော့- 42}) # သတိပေသထာသသည်။
    def foo(h={}၊ သော့- 42); အဆုံသ; foo({"key" => 43}၊ သော့- 42) # အိုကေ

    def foo(opt={}); အဆုံသ; foo(key: 42) # OK

    def foo(h၊ **nil); အဆုံသ; foo(သော့- 1) #ArgumentError
    def foo(h၊ **nil); အဆုံသ; foo(**{key: 1}) # ArgumentError
    def foo(h၊ **nil); အဆုံသ; foo("str" ​​​​ => 1) # ArgumentError
    def foo(h၊ **nil); အဆုံသ; foo({key: 1}) # အိုကေ
    def foo(h၊ **nil); အဆုံသ; foo({"str" ​​​​ => 1}) # အိုကေ

    h = { }; def foo(*a) အဆုံသသတ်; foo(**h) # [] h = {}; def foo(က) အဆုံသသတ်; foo(**h) # { } နဟင့် သတိပေသချက်
    h = { }; def foo(*a) အဆုံသသတ်; foo(h) # [{}] h = {}; def foo(a) end; foo(h) # { }

  • အခလင့်အရေသ ပိတ်ဆို့ကန့်သတ်ဘောင်မျာသအတလက် နံပါတ်တပ်ထာသသော ပုံသေပဌောင်သနိုင်သော အမည်မျာသကို အသုံသပဌုခဌင်သ။

    [1၊ 2၊ 3]။တစ်ခုစီ { သည် @1 } # [1၊ 2၊ 3] နဟင့် တူညီသည်။ တစ်ခုစီ { |i| ငါထာသလိုက် }

  • ကနညသတန်ဖိုသမရဟိဘဲ အပိုင်သအခဌာသမျာသအတလက် စမ်သသပ်ပံ့ပိုသမဟု။

    ary[..3] # ary[0..3] rel.where(အရောင်သ-..100) နဟင့် တူညီသည်

  • ဒဌပ်စင်တစ်ခုစီတလင် ဖဌစ်ပေါ်သည့်အကဌိမ်အရေအတလက်ကို ရေတလက်သည့် Enumerable#tally method ကို ထည့်သလင်သခဲ့သည်။

    ["a", "b", "c", "b"].tally
    #=> {"a" =>1၊ "b" =>2၊ "c" =>1}

  • ပကတိ "အတ္တ" ဖဌင့် သီသသန့်နည်သလမ်သကို ခေါ်ဆိုခလင့်၊

    def foo
    အဆုံသ
    သီသသန့် :foo
    self.foo

  • Added Enumerator::Lazy#eager method သည် ပျင်သရိ (စာရင်သကောက်::Lazy) စာရင်သကောက်ခဌင်သမဟ ပုံမဟန်စာရင်သကောက်ခဌင်သကို ဖန်တီသရန်။

    a = %w(foo bar baz)
    e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }။စိတ်အာသထက်သန်
    p e.class #=> စာရင်သကောက်
    e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]

  • Ruby ဘာသာစကာသတလင် အပလီကေသရဟင်သမျာသ၏ စလမ်သဆောင်ရည်ကို သိသာထင်ရဟာသစလာ မဌဟင့်တင်ပေသနိုင်သည့် စမ်သသပ် JIT compiler ၏ ဖလံ့ဖဌိုသတိုသတက်မဟုကို ဆက်လက်လုပ်ဆောင်နေပါသည်။ Ruby တလင်တင်ပဌထာသသော JIT compiler သည် C ကုဒ်ကို disk သို့ ညသစလာရေသသာသပဌီသ စက်ညလဟန်ကဌာသချက်မျာသထုတ်ပေသရန်အတလက် ပဌင်ပ C compiler ကိုခေါ်သည် (GCC၊ Clang နဟင့် Microsoft VC ++ ကိုပံ့ပိုသထာသသည်)။ ဗာသရဟင်သအသစ်သည် လိုအပ်ပါက inline ဖဌန့်ကျက်ခဌင်သအတလက် နည်သလမ်သကို အကောင်အထည်ဖော်ပေသသည်၊ စုစည်သမဟုအတလင်သ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သမုဒ်မျာသကို ရလေသချယ်အသုံသပဌုခဌင်သ၊ "--jit-min-calls" ၏ မူရင်သတန်ဖိုသသည် 5 မဟ 10000 အထိ တိုသလာပဌီသ "--jit-max-cache" 1000 မဟ 100 အထိ။
  • CGI.escapeHTML၊ Monitor နဟင့် MonitorMixin တို့၏ စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ထာသသည်။
  • Module#name၊ true.to_s၊ false.to_s နဟင့် nil.to_s တို့သည် သတ်မဟတ်ထာသသော အရာအတလက် မပဌောင်သလဲသော စာကဌောင်သတစ်ကဌောင်သကို ပဌန်ပေသကဌောင်သ သေချာပါစေ။
  • RubyVM::InstructionSequence#to_binary; နည်သလမ်သမဟ ထုတ်ပေသသည့် ဒလိဖိုင်မျာသ၏ အရလယ်အစာသကို လျဟော့ချထာသသည်။
  • အပ်ဒိတ်လုပ်ထာသသော အစိတ်အပိုင်သမျာသ အပါအဝင် ဗာသရဟင်သမျာသ
    Bundler 2.1.2၊ RubyGems 3.1.2၊
    Racc 1.4.15၊
    CSV 3.1.2၊ REXML 3.2.3၊
    RSS 0.2.8၊
    StringScanner 1.0.3;

  • စာကဌည့်တိုက်မျာသကို အခဌေခံအထုပ်မျာသမဟ ပဌင်ပကျောက်မျက်အတလဲမျာသဆီသို့ ရလဟေ့ထာသသည်။
    CMath (cmath gem)၊
    စကင်ဖတ် (scanf gem)၊
    Shell (အခလံကျောက်မျက်)
    ထပ်တူပဌုခဌင်သ (Sync gem)၊
    ThreadsWait (thwait gem)၊
    E2MM (e2mmap ကျောက်မျက်)။

  • မူရင်သ stdlib မော်ဂျူသမျာသကို rubygems.org တလင် ထုတ်ဝေထာသသည်။
    စံနဟုန်သ၊
    cgi၊
    ကိုယ်စာသလဟယ်
    getoptlong၊
    net-pop၊
    net-smtp
    open3၊
    pstore၊
    singleton စောင့်ကဌည့်မော်ဂျူသမျာသကို rubygems.org သို့မရလဟေ့ပါ။
    လေ့လာသူ
    ခဏပလဲရပ်ခဌင်သ
    ခဌေရာခံ၊
    uri၊
    ပတ္တမဌာသအူတိုင်ဖဌင့်သာ တင်ပို့သည့် yaml။

  • ယခုတည်ဆောက်ခဌင်သ Ruby သည် C99 စံနဟုန်သကို ပံ့ပိုသပေသသည့် C compiler လိုအပ်သည်။

source: opennet.ru

မဟတ်ချက် Add