Ruby 3.1.0 ืืื ืืืคืจืืื, ืึท ืืื ืึทืืืฉ ืืืืคืขืฅ-ืึธืจืืขื ืืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทื ืืืึธืก ืืื ืืขืืกื ืขืคืขืงืืืื ืืื ืคึผืจืึธืืจืึทื ืึทื ืืืืืงืืื ื ืืื ืื ืงืึธืจืคึผืขืจืืืฅ ืื ืืขืกืืขืจ ืคึฟืขืึดืงืืืื ืคืื Perl, Java, Python, Smalltalk, Eiffel, Ada ืืื Lisp. ืื ืคึผืจืืืขืงื ืงืึธื ืืื ืคืื ืื ืืขืจืืขืืืืื ืืื ืืขืจ ืื BSD ("2-ืงืืึธื BSDL") ืืื "Ruby" ืืืืกืึทื ืกืื, ืืืึธืก ืจืขืคืขืจืก ืฆื ืื ืืขืฆืืข ืืืขืจืกืืข ืคืื โโโโืื GPL ืืขืจืืืืืขื ืืฉ ืืื ืืื ืืึธืจ ืงืึทืืคึผืึทืืึทืืึทื ืืื GPLv3.
ืืืืคึผื ืืืคึผืจืืืืืึทื ืฅ:
- ื ื ืืึทืข ืืงืกืคึผืขืจืืขื ืึทื ืืื-ืคึผืจืึธืกืขืก JIT ืงืึทืืคึผืืืืขืจ, YJIT, ืืื ืฆืืืขืืขืื, ืืืฉืืคื ืืืจื ืื ืืขืืืขืืึธืคึผืขืจืก ืคืื ืื Shopify E- ืืึทื ืื ืคึผืืึทืืคืึธืจืืข ืืื ืึท ืืืื ืคืื ืึทื ืืื ืืฆืืืืืื ืฆื ืคึฟืึทืจืืขืกืขืจื ืื ืคืึธืจืฉืืขืืื ื ืคืื ืจืืื ืืืืื ืืืึธืก ื ืืฆื ืื ืจืึทืืืก ืคืจืืืืืืขืจืง ืืื ืจืืคื ืึท ืคึผืืึทืฅ ืคืื ืืขืืืึธืืก. ืืขืจ ืฉืืืกื ืืืืืง ืคืื ืื ืคืจืืขืจ ืืขืืืืื ื MJIT JIT ืงืึทืืคึผืืืืขืจ, ืืืึธืก ืืื ืืืืืจื ืืืืฃ ืคึผืจืึทืกืขืกืื ื ืืึทื ืฅ ืืขืืืึธืืก ืืื ื ืืฆื ืึท ืคืื ืืจืืืกื ืืืง ืงืึทืืคึผืืืืขืจ ืืื ืื C ืฉืคึผืจืึทื, ืืื ืึทื YJIT ื ืืฆื Lazy Basic Block Versioning (LBBV) ืืื ืึผืืื ืึทื ืื ืึทืืจืืืืื JIT ืงืึทืืคึผืืืืขืจ. ืืื LBBV, JIT ืขืจืฉืืขืจ ืงืึทืืคึผืืืื ืืืืื ืื ืึธื ืืืื ืคืื ืืขื ืืืคึฟื, ืืื ืงืึทืืคึผืืืื ืื ืื ืืื ืขืืืขืืข ืืึธื ืฉืคึผืขืืขืจ, ื ืึธื ืื ืืืืคึผืก ืคืื ืืืขืจืืึทืืึทืื ืืื ืึทืจืืืืขื ืื ืืขื ืขื ืืืฉืืืกื ืืขืฉืึทืก ืืืจืืคืืจืื ื. ืืืขื ืืืจ ื ืืฆื YJIT, ืึท 22% ืคืึทืจืืจืขืกืขืจื ืืื ืคืึธืจืฉืืขืืื ื ืืื ืจืขืงืึธืจืืขื ืืืขื ืคืืืกื ืืืง ืื ืจืืืืืืขื ืืฉ ืืขืกื, ืืื ืึท 39% ืคืึทืจืืจืขืกืขืจื ืืื ืื ืคืืืกืืง ืืคืคืืจื ืคึผืจืืืืจื. YJIT ืืื ืืขืจืืืืึทื ืืืืืืขื ืฆื ืฉืืืฆื ืคึฟืึทืจ ืืื ืืงืก-ืืื ืึธืกืขืก ืืืืฃ ืกืืกืืขืืขื ืืื x86-64 ืึทืจืงืึทืืขืงืืฉืขืจ ืืื ืืื ืคืึทืจืงืจืืคึผืื ืืืจื ืคืขืืืงืืึทื (ืฆื ืึทืงืืึทืืืืื, ืกืคึผืขืฆืืคืืฆืืจื ืื "--yjit" ืคืึธื ืืื ืื ืืึทืคึฟืขืื ืฉืืจื).
- ืืืคึผืจืืืื ืคืึธืจืฉืืขืืื ื ืคืื ืื ืึทืื MJIT JIT ืงืึทืืคึผืืืืขืจ. ืคึฟืึทืจ ืคึผืจืึทืืืฉืขืงืก ื ืืฆื ืจืึทืืืก, ืื ืคืขืืืงืืึทื ืืึทืงืกืืืื ืงืึทืฉ ืืจืืืก (--jit-max-cache) ืืื ืืขืืืืงืกื ืคืื 100 ืฆื 10000 ืื ืกืืจืึทืงืฉืึทื ื. ืคืืจืฉืืืคื ื ืืฆื JIT ืคึฟืึทืจ ืืขืืืึธืืก ืืื ืืขืจ ืืื 1000 ืื ืกืืจืึทืงืฉืึทื ื. ืฆื ืฉืืืฆื Zeitwerk of Rails, JIT ืงืึธื ืืื ื ืื ืืขืจ ืึทืืืขืงืืขื ืืืขื ืืืขื TracePoint ืืื ืขื ืืืืึทืื ืคึฟืึทืจ ืงืืึทืก events.
- ืขืก ืื ืงืืืื ืึท ืืึธืจ ืจืืจืืืึทื debug.gem ืืขืืืืืขืจ, ืืืึธืก ืฉืืืฆื ืืืืึทื ืืืืึทืืื ื, ืืื ื ืืฉื ืคึผืึทืืขืืขื ืื ืืืืึทืืื ื ืึทืคึผืืึทืงืืืฉืึทื, ืฉืืืฆื ืื ืืึทืืจืืืฉืึทื ืืื ืึทืืืึทื ืกืืจืืข ืืืืึทืืื ื ืื ืืขืจืคืืืกืื (VSCode ืืื Chrome), ืงืขื ืขื ืืืขืจื ืืขื ืืฆื ืคึฟืึทืจ ืืืืึทืืื ื ืืืืื-ืืจืขืืื ืืื ืืืืื-ืคึผืจืึธืกืขืก ืึทืคึผืืึทืงืืืฉืึทื ื. ืึท REPL ืงืึธื ืืืจืืคืืจืื ื ืฆืืืื ื, ืึธืคืคืขืจืก ืึทืืืึทื ืกืืจืืข ืืจืืืกืื ื ืงืืืคึผืึทืืืืึทืืื, ืงืขื ืขื ืจืขืงืึธืจืืืจื ืืื ืจืืคึผืืื ืงืึธื ืกื ืืคึผืึทืฅ. ืื ืคืจืืขืจ ืืขืคึฟืื ื ืืขืืืืืขืจ lib/debug.rb ืืื ืึทืืืขืงืืขื ืืืขื ืคืื ืื ืืึทืืข ืคืึทืจืฉืคึผืจืืืืื ื.
- ืืืคึผืืึทืืขื ืึทื ืืืืืฉืึทืืืึทื ืืืืืืืืื ื ืคืื ืขืจืจืึธืจืก ืืื ืจืืคื ืฆืืจืืง ืฉืคึผืืจ ืจืืคึผืึธืจืฅ. ืืขืืช ืคืืึทืืื ื ืืื ืฆืืืขืฉืืขืื ืืื ืื ืืขืืืื-ืืื ืืื ืคืขืืืงืืึทื-ืขื ืืืืึทืื ืืืืืฉืืืื ืคึผืขืงื error_highlight. ืฆื ืืืกืืืืึทื ืืขืืช ืคืืึทืืื ื, ืืืจ ืงืขื ืขื ื ืืฆื ืื "--disable-error_highlight" ืืึทืฉืืขืืืงื. $ ruby โโtest.rb test.rb: 1: ืืื " ": ืื ืืขืคืื ืขื ืืืคึฟื "ืฆืืื" ืคึฟืึทืจ 1: ืื ืืขืืขืจ (ื ืึธืืขืืืึธืืขืจืจืึธืจ) 1.ืืืืข {} ^^^^^ ืืื ืืืจ ืืืื ืขื? ืืื
- ืื ืฉืึธื ืคืื ืื ืืขืจืึทืงืืืื ืืฉืืื ืืช IRB (REPL, Read-Eval-Print-Loop) ืืืคึผืืึทืืึทื ืฅ ืึธืืึทืืึทืืืง ืงืึทืืคึผืืืฉืึทื ืคืื ืื ืืจืืื ืงืึธื (ืืืขื ืืืจ ืืจืืงื, ืึท ืึธื ืฆืืืขืจืขื ืืฉ ืืื ืืขืืืืื ืืื ืึธืคึผืฆืืขืก ืคึฟืึทืจ ืงืึทื ืืื ืืืื ื ืึทืจืืึทื ืฉืจืืึทื, ืฆืืืืฉื ืืืึธืก ืืืจ ืงืขื ืขื ืืึทื ืืื ืื ืืึทื ืึธืืขืจ ืฉืืคื + ืืึทื ืฉืืืกื). ื ืึธื ืกืึทืืขืงืืื ื ืื ืงืึทื ืืื ืืืืืฉืึทื ืึธืคึผืฆืืข, ืึท ืืืึทืืึธื ืงืขืกืื ืืื ืืขืืืืื ื ืืจืืื ืืืึธืก ืืืกืคึผืืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืคึฟืึทืจืืื ืื ืืื ืื ืืืืกืืขืงืืืื ื ืืืขืจ. ืื ืงืืึทืืืืึทืืืจ ืืืจืืืืขื ืึทืื + ื ืงืขื ืขื ืืืื ืืขืืืืื ื ืฆื ืึทืงืกืขืก ืื ืคืื ืืึทืงืืืืขื ืืืืฉืึทื.
- ืื ืฉืคึผืจืึทื ืกืื ืืึทืงืก ืืืฆื ืึทืืึทืื ืืืึทืืืขืก ืืื ืืึทืฉ ืืืืขืจืึทื ืืื ืงืืืืขืจื ืึทืจืืืืขื ืื ืฆื ืืืื ืกืงืืคึผื ืืืขื ืืืจ ืจืืคื ืคืึทื ืืงืฉืึทื ื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืึทื ืฉืืึธื ืคืื ืื ืืืืกืืจืืง "{ืจืขื ืืืขื : ืจืขื ืืืขื , ื: ื}" ืืืจ ืงืขื ืขื ืืืฆื ืกืคึผืขืฆืืคืืฆืืจื "{ืจืขื ืืืขื :, ื:}", ืืื ืึทื ืฉืืึธื ืคืื "ืคืึธืึธ (ืจืขื ืืืขื : ืจืขื ืืืขื , ื: ื)" - foo ( ืจืขื ืืืขื :, ื: )".
- ืกืืึทืืืืืืขื ืฉืืืฆื ืคึฟืึทืจ ืืืื-ืฉืืจื ืืืกืืขืจ ืฉืืืขืืขืืขื (ืึทืจื => [ืจืขื ืืืขื , ื, ื]), ืืืึธืก ืืขื ืขื ื ืื ืืขืจ ืคืืึทืื ืืื ืืงืกืคึผืขืจืืขื ืึทื.
- ืืขืจ "^" ืึธืคึผืขืจืึทืืึธืจ ืืื ืืืกืืขืจ ืฉืืืขืืขืืขื ืงืขื ืขื ืืืฆื ืึทื ืืืึทืืื ืึทืจืืืืจืึทืจืืฉ ืืืืกืืจืืงื, ืืืฉื: Prime.each_cons(2).lazy.find_all{_1 ืืื [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
- ืืื ืืืื-ืฉืืจื ืืืกืืขืจ ืฉืืืขืืขืืขื, ืืืจ ืงืขื ืขื ืคืึทืจืืึธืื ืงืืึทืืขืจื: [0, 1] => _, ืจืขื ืืืขื {ื: 2} => ื: ืจืขื ืืืขื #=> 1 ื #=> 2
- ืื RBS ืืืคึผ ืึทื ืึธืืึทืฆืืข ืฉืคึผืจืึทื, ืืืึธืก ืึทืืึทืื ืืืจ ืฆื ืืึทืฉืืืืขื ืื ืกืืจืืงืืืจ ืคืื ืื ืคึผืจืึธืืจืึทื ืืื ืื ืืืืคึผืก ืืขื ืืฆื, ืืื ืฆืืืขืืืืื ืฉืืืฆื ืคึฟืึทืจ ืกืคึผืขืฆืืคืืฆืืจื ืื ืืืืืขืจืฉืืขืจ ืฉืืขืืจ ืคืื ืืืคึผ ืคึผืึทืจืึทืืขืืขืจืก ื ืืฆื ืื "<" ืกืืืืึธื, ืฆืืืขืืืืื ืฉืืืฆื ืคึฟืึทืจ ืืืืืึทืกืื ืคืื ืืืฉืึทื ืขืจืืง ืืืืคึผืก, ืืืคึผืืึทืืขื ืึทื ืฉืืืฆื ืคึฟืึทืจ ืืึทืืืื ืืขื ืคึฟืึทืจ ืึธื ืคืืจืื ื ืืขืืก, ืืืคึผืจืืืื ืคืึธืจืฉืืขืืื ื ืืื ืืืคึผืืึทืืขื ืึทื ืคืืืข ื ืืึทืข ืกืืื ืึทืืฉืขืจื ืคึฟืึทืจ ืืขืืืื-ืืื ืืื ื ืึธืจืืึทื ืืืืืจืขืจืื.
- ืขืงืกืคึผืขืจืืืขื ืืึทื ืฉืืืฆื ืคึฟืึทืจ ืื ืึทืืจืืืืื ืึทื ืืืืืงืืื ื ืื ืืืืืจืึทื ืืึทื ืฅ ืืื ืฆืืืขืืขืื ืฆื ืื TypePro ืกืืึทืืืง ืืืคึผ ืึทื ืึทืืืืขืจ, ืืืึธืก ืืืฉืขื ืขืจืืืฅ RBS ืึทื ืึทืืืืฉืึทื ื ืืืืืจื ืืืืฃ ืงืึธื ืึทื ืึทืืืกืืก ืึธื ืืงืกืคึผืืืกืึทื ืืืคึผ ืืื ืคึฟืึธืจืืึทืฆืืข (ืืืฉื, ืึทื ืึทืืืฉืึทื ืืื ืฆืืืขืืจืืื ืคึฟืึทืจ ืื ืืึทืืจืืืืื ื TypePro ืืื ืื VSCode ืจืขืืึทืงืืึธืจ).
- ืืขืจ ืกืืจ ืคืื ืคึผืจืึทืกืขืกืื ื ืงืืืคื ืึทืกืืื ืืึทื ืฅ ืืื ืคืืจืขื ืืขืจื. ืฆืื ืืืืฉืคึผืื, ืืื ืึทืืขืจ, ืื ืงืึทืืคึผืึธืื ืึทื ืฅ ืคืื ืื ืืืืกืืจืืง "ืคืึธืึธ [0], ืืึทืจ [0] = ืืึทื, ืงืืืงืก" ืืขื ืขื ืคึผืจืึทืกืขืกื ืืื ืื ืกืืจ baz, qux, foo, bar, ืึธืืขืจ ืืืฆื foo, bar, baz, qux.
- ืฆืืืขืืืืื ืืงืกืคึผืขืจืืขื ืึทื ืฉืืืฆื ืคึฟืึทืจ ืืึผืจืื ืึทืืึทืงืืืฉืึทื ืคึฟืึทืจ ืกืืจืื ืืก ื ืืฆื ืื VWA (Variable Width Allocation) ืืขืงืึทื ืืืึทื.
- ืืขืจืืืึทื ืืืงื ืืืขืจืกืืขืก ืคืื ืืขืืืื-ืืื ืืืืืฉืืืื ืืึทืืืฉืืื ืืื ืื ืึทืจืืึทื ืืขืจืขืื ื ืืื ืื ื ืึธืจืืึทื ืืืืืืึธืืขืง. ืื ื ืขืฅ-ftp, net-imap, net-pop, net-smtp, ืืึทืืจืืฅ, ืืืืคึผื ืืื ืืืืึทื ืคึผืึทืงืึทืืืฉืึทื ืืขื ืขื ืืขืืืื-ืืื.
ืืงืืจ: opennet.ru