Ruby 3.1.0 เปเบเปเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒ, เปเบเบฑเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบตเปเปเบเบฑเปเบเบงเบฑเบเบเบธเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบเปเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบผเปเบเบผเบกเปเบฅเบฐเบฅเบงเบกเปเบญเบปเบฒเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบ Perl, Java, Python, Smalltalk, Eiffel, Ada เปเบฅเบฐ Lisp. เบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบเปเบกเปเบเปเบเบเบขเบฒเบเบเบฒเบเปเบเปเปเบเบญเบฐเบเบธเบเบฒเบ BSD ("2-clause BSDL") เปเบฅเบฐ "Ruby", เปเบเบดเปเบเบซเบกเบฒเบเปเบเบดเบเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบเบเบญเบเปเบเบญเบฐเบเบธเบเบฒเบ GPL เปเบฅเบฐเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบ GPLv3.
เบเบฒเบเบเบฑเบเบเบธเบเบเบปเปเบเบเป:
- เบเบฒเบเบเบปเบเบฅเบญเบ JIT compiler เปเบเบเบฐเบเบงเบเบเบฒเบเปเบซเบกเป, YJIT, เปเบเปเบเบทเบเปเบเบตเปเบก, เบชเปเบฒเบเปเบเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบงเบเบตเบเบฒเบเบเปเบฒ e-commerce Shopify เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเบฅเบดเปเบฅเบตเปเบกเปเบเบทเปเบญเบเบฑเบเบเบธเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเปเบเบฅเปเบเบฅเบก Ruby เบเบตเปเปเบเปเบเบญเบเบเบญเบ Rails เปเบฅเบฐเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบเบซเบผเบฒเบ. เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบตเป เบชเบณ เบเบฑเบเบเบฒเบเปเบเบทเปเบญเบเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบ MJIT JIT เบเบตเปเปเบเปเปเบเปเบกเบทเปเบญเบเปเบญเบ, เปเบเบดเปเบเบญเบตเบเปเบชเปเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบฑเบ เปเบปเบ เปเบฅเบฐเปเบเปเบเบปเบงเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบเบเบฒเบเบเบญเบเปเบเบเบฒเบชเบฒ C, เปเบกเปเบเบงเปเบฒ YJIT เปเบเป Lazy Basic Block Versioning (LBBV) เปเบฅเบฐเบกเบตเบเบปเบงเบชเบฑเบเบฅเบงเบก JIT เบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ. เบเปเบงเบ LBBV, JIT เบเปเบฒเบญเบดเบเบฅเบงเบเบฅเบงเบกเบเบฝเบเปเบเปเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบงเบดเบเบตเบเบฒเบ, เปเบฅเบฐเบฅเบงเบเบฅเบงเบกเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเปเบเปเบงเบฅเบฒเบเปเปเบกเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฐเปเบเบเบเบญเบเบเบปเบงเปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบฝเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบทเบเบเปเบฒเบเบปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ. เปเบกเบทเปเบญเบเปเบฒเปเบเป YJIT, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบตเปเบกเบเบถเปเบ 22% เปเบเปเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเปเบเบเบฒเบเบเบปเบเบชเบญเบ railsbench, เปเบฅเบฐ 39% เปเบเบตเปเบกเบเบถเปเบเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบชเบฐเปเบเบเบเบปเบเบเบญเบเปเบซเบผเบง. เปเบเบเบฑเบเบเบธเบเบฑเบ YJIT เปเบเปเบเบทเบเบเปเบฒเบเบฑเบเปเบเบทเปเบญเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบ OSes เบเปเบฒเบเบเบท unix เปเบเบฅเบฐเบเบปเบเบเบตเปเบกเบตเบชเบฐเบเบฒเบเบฑเบเบเบฐ x86-64 เปเบฅเบฐเบเบทเบเบเบดเบเปเบเปเบเบฒเบเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ (เปเบเบทเปเบญเปเบเบตเบเปเบเป, เบฅเบฐเบเบธเบเบธเบ "--yjit" เปเบเปเบเบงเบเปเบฒเบชเบฑเปเบ).
- เบเบฑเบเบเบธเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบ MJIT JIT compiler เปเบเบปเปเบฒ. เบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบเบตเปเปเบเป Rails, เบเบฐเบซเบเบฒเบ cache เบชเบนเบเบชเบธเบเปเบเบเบญเบเบเบปเปเบ (--jit-max-cache) เปเบเปเปเบเบตเปเบกเบเบถเปเบเบเบฒเบ 100 เปเบเบฑเบ 10000 เบเปเบฒเปเบเบฐเบเปเบฒ. เบขเบธเบเปเบเบปเบฒเบเบฒเบเบเปเบฒเปเบเป JIT เบชเปเบฒเบฅเบฑเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบซเบผเบฒเบเบเบงเปเบฒ 1000 เบเปเบฒเปเบเบฐเบเปเบฒ. เปเบเบทเปเบญเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ Zeitwerk of Rails, เบฅเบฐเบซเบฑเบ JIT เบเบฐเบเปเปเบเบทเบเบเบปเบเปเบฅเบตเบเบญเบตเบเบเปเปเปเบเปเบกเบทเปเบญ TracePoint เบเบทเบเปเบเบตเบเปเบเปเบชเปเบฒเบฅเบฑเบเปเบซเบเบเบฒเบเปเบเบเบฑเปเบเบฎเบฝเบ.
- เบกเบฑเบเบเบฐเบเบญเบเบกเบตเบเบปเบงเปเบเปเปเบ debug.gem เบเบตเปเบเบฝเบเบเบทเบเปเบซเบกเปเบขเปเบฒเบเบชเบปเบกเบเบนเบ, เปเบเบดเปเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบเบตเบเบฑเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ, เบเปเปเบเปเบฒเบฅเบปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเบเบฑเบ, เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบเบฒเบเปเบเปเบเบญเบเบเบฒเบเบเบตเบเบฑเบเบเบฑเปเบเบชเบนเบ (VSCode เปเบฅเบฐ Chrome), เบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบ debugging multi-threaded เปเบฅเบฐ multi-process applications, เบชเบฐเบซเบเบญเบ. เบเบฒเบเปเบเปเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบ REPL, เบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบดเบเบเบฒเบกเปเบเบเบเบดเปเบชเบ, เบชเบฒเบกเบฒเบเบเบฑเบเบเบถเบเปเบฅเบฐเบซเบผเบดเปเบเบเบทเบ snippets เบฅเบฐเบซเบฑเบ. debugger 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 เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเปเบญเบเบฐเบชเบฒเบเบชเบฐเบเบฑเบเปเบเบฑเบก.
- syntax เบเบฒเบชเบฒเปเบเบเบฑเบเบเบธเบเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเปเบ hash literals เปเบฅเบฐเบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบเปเบฒเบกเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบซเบฒเบซเบเปเบฒเบเบตเป. เบเบปเบงเบขเปเบฒเบ, เปเบเบเบเบตเปเบเบณเบงเปเบฒ โ{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 #= > ? [[3, 5], [5, 7], [11, 13]]
- เปเบเบเบฒเบเบเบฑเบเบเบนเปเบฎเบนเบเปเบเบเปเบชเบฑเปเบเบเบฝเบง, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเปเบฅเบตเบเบงเบปเบเปเบฅเบฑเบ: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
- เบเบฒเบชเบฒ annotation เบเบฐเปเบเบ RBS, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเปเบเบเบชเปเบฒเบเบเบญเบเปเบเบฅเปเบเบฅเบกเปเบฅเบฐเบเบฐเปเบเบเบเบตเปเปเบเปเปเบเป, เปเบเปเปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบปเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบเปเบเบดเบเบเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฐเปเบเบเปเบเบเปเบเปเบชเบฑเบเบเบฒเบฅเบฑเบ "<", เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบกเปเบเบเบเบญเบเบเบฐเปเบเบเบเบปเปเบงเปเบ, เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ เบเบฒเบเปเบเบฑเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเปเบกเบเบญเบเปเบเปเบงเบเบฐเปเบชเบตเบ, เบเบฑเบเบเบธเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบฅเบฒเบเปเบเบฑเบเปเบซเบกเปเบเปเบฒเบเบงเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบกเบตเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเบกเบฒเบเบเบฐเบเบฒเบ.
- เบเบฒเบเบเบปเบเบฅเบญเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเปเบเปเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบปเบงเบงเบดเปเบเบฒเบฐเบเบฐเปเบเบเบชเบฐเบเบดเบเบเบญเบ TypePro, เปเบเบดเปเบเบชเปเบฒเบ RBS annotations เปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฐเบซเบฑเบเปเบเบเบเปเปเบกเบตเบเปเปเบกเบนเบเบเบฐเปเบเบเบเบตเปเบเบฑเบเปเบเบ (เบเบปเบงเบขเปเบฒเบ, add-on เปเบเปเบเบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบงเบก TypePro เบเบฑเบเบเบฑเบเบเบฒเบเบดเบเบฒเบ VSCode).
- เบฅเบณเบเบฑเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบฒเบเบกเบญเบเปเบฒเบเบซเบผเบฒเบเบญเบฑเบเปเบเปเบเบทเบเบเปเบฝเบเปเบเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบญเบเบซเบเปเบฒเบเบตเปเบญเบปเบเบเบฐเบเบญเบเบเบญเบ "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 เปเบกเปเบเบกเบตเบขเบนเปเปเบเบเบปเบง.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru