ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá
áºááŸá
áºááŒá®ážáá±á¬ááº
á¡ááá
- ááá¹áá¬
áá±á¬ááºáá¶á· áá¯á¶á á¶áá° (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 ááŸáááá·áº ááŒáá¬ážáá±á¬ áá¯ááºáá»á¬ážááŒáá·áº áá»ááºážááŒá±á¬ááºážáá»á¬ážá áá±á¬ááºá á¯á¶áá®ážáá±á¬ááºážááá¯ážááŒááŒá®áž á¡ááŒá±áᶠá¡áááºážá¡á á¬áž á¡áá¬ááá¹áá¯áá»á¬ážááᯠá á áºáá±ážááŒááºážá ááááºáá»á¬ážááᯠáá±ážáá«áááºá - á¡áá»áá¯á·áá±á¬ 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}) # OKdef 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