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 á¡á¬áž á¡ááŒá±áá¶ááŒáá·áºááŒá°ážááŸá¯á០áááºááŸá¬ážááá¯ááºáá«ááŒá®á
- ááŒááºáá±á«áºááá·áº ááŒá±áá¬áᶠá¡á á®áááºáá¶á á¬áá»á¬ážááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŒááºáá¬á¡á±á¬áẠáá±á«áºááœááºá¡á±á¬áẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá«á á¡ááŸá¬ážá¡ááœááºáž á¡áá¶ááŒááŒááºážááᯠáááºáááºááŒá®áž áá¯á¶áá±ááœáá·áºáá¬ážááá·áº áá»á±á¬ááºáá»ááºá¡ááœá² 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 ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
- ááá¯á¡áá« áá¬áá¬á áá¬ážá¡á á®á¡áá¶ááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯áá±á«áºááá¯ááá·áºá¡áá« 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