Ruby 3.2.0 ืืฆื ืืืืจ, ืฉืคืช ืชืื ืืช ืืื ืืืช ืืื ืื ืขืฆืืื, ืืขืืื ืืืื ืืคืืชืื ืชืืื ืืืช ืืืฉืืืช ืืช ืืืื ืืชืืื ืืช ืฉื Perl, Java, Python, Smalltalk, Eiffel, Ada ื-Lisp. ืงืื ืืคืจืืืงื ืืืคืฅ ืชืืช ืจืืฉืืื ืืช BSD ("2-ืกืขืืฃ BSDL") ื-"Ruby", ืืืชืืืืก ืืืจืกื ืืขืืื ืืช ืืืืชืจ ืฉื ืจืืฉืืื GPL ืืชืืื ืืืืคื ืืื ื-GPLv3.
ืฉืืคืืจืื ืขืืงืจืืื:
- ื ืืกืคื ืืฆืืื ืจืืฉืื ืืช ืฉื ืืืชืืจืืื Cruby, ืืฉืจ ืืงืืคื ืืชืื ืงืื ืืื ืืื ืฉื WebAssembly ืืืคืขืื ืืืคืืคื ืืื ืืจื ื ืื ืชืืช ืืื ื ืจืืฆื ืขืฆืืืืื ืืืื wasmtime. ืืืื ืืจืืงืฆืื ืืฉืืจื ืขื ืืขืจืืช ืืืคืขืื ืืืฉืจ ืืื ืคืืขืืช ืื ืคืจื, ื ืขืฉื ืฉืืืืฉ ืืืืฉืง ื-API ืฉื WASI (WebAssembly System Interface). ืืื ืืืชืจ ืืกืืคืงืช ืขื ืืื WASI ืืขืืคืช VFS ืืืืคืฉืจืช ืืืจืื ืืช ืื ืืคืืืงืฆืืืช Ruby ืืืฆืืช ืืฆืืจืช ืงืืืฅ wasm ืืืื. ืจืืฆื ืืืคืืคื ืืืืื ืืฉืืฉ ืืืฆืืจืช ืฉืืจืืชื ืืื ืืจื ื ืืืืจืื ืืืืืื ืืืื TryRuby. ืืฉืื ืืคืืชืื ืื ืืืื, ืืคืืจื ืขืืืจ ืืืฆืืื ืืช ืืืืืืช ืืืืืงื ืืืกืืกืืืช ืื-bootstrap, ืฉืืื ื ืืฉืชืืฉืืช ื-Thread API. ืื ืื ืื ืืื ื ืชืืื ืืกืืืื, ืืจืืืื ืื ืืืกืืฃ ืืฉืคื.
- ืืืืจ JIT ืืชืืืื ืฉื YJIT, ืฉื ืืฆืจ ืขื ืืื ืืคืชืื ืคืืืคืืจืืช ืืืกืืจ ืืืืงืืจืื ื Shopify ืืืืง ืืืืืื ืืืืืจืช ืืืืฆืืขืื ืฉื ืชืืื ืืืช Ruby ืืืฉืชืืฉืืช ืืืกืืจืช Rails ืืงืืจืืืช ืืืจืื ืฉืืืืช, ืืืืจื ืืฆืื ืืืืื ืฉืืืืฉ ืืืืฆืืจ. ืืืืื ืืขืืงืจื ืืืืืืจ MJIT JIT ืฉืืื ืืฉืืืืฉ ืืขืืจ, ืืืืืกืก ืขื ืขืืืื ืฉืืืืช ืฉืืืืช ืืืฉืชืืฉ ืืืืืจ ืืืฆืื ื ืืฉืคืช C, ืืื ืฉ-YJIT ืืฉืชืืฉ ื-Lazy Basic Block Versioning (LBBV) ืืืืื ืืืืจ JIT ืืฉืืื. ืขื LBBV, JIT ืงืืื ืื ืงืืืคืืืฆืื ืจืง โโืืช ืชืืืืช ืืฉืืื, ืืงืืืคืืืฆืื ืืช ืืฉืืจ ืืื ืื ืืืืจ ืืื, ืืืืจ ืฉืกืืื ืืืฉืชื ืื ืืืืจืืืื ืืื ืืืฉืืฉืื ื ืงืืขืื ืืืืื ืืืืฆืืข. YJIT ืืืื ืขืืืจ ืืจืืืืงืืืจืืช x86-64 ื-arm64/aarch64 ื-Linux, MacOS, BSD ืืคืืืคืืจืืืช UNIX ืืืจืืช.
ืื ืืืื ืืจืืื, ืงืื YJIT ืืชืื ืืฉืคืช Rust ืืืืจืฉ ืืืืจ rustc 1.58.0+ ืืฆืืจื ืืืืืจ, ืื ืฉื-YJIT build ืืืฉืืช ืืืจืืจืช ืืืื ืืืื ืืืคืฆืืื ืื. ืืขืช ืฉืืืืฉ ื-YJIT, ื ืจืฉืื ืขืืืื ืฉื 41% ืืืืฆืืขืื ืืขืช ืืคืขืืช ืืืื ื-yjit-bench ืืืฉืืืื ืืฉืืืืฉ ืืคืจืฉื ืืช.
- ื ืืกืคื ืืื ื ื ืืกืคืช ืืคื ื ืืชืงืคืืช ืื ืืขืช ืฉืืจืืช ืืขืช ืขืืืื ื ืชืื ืื ืืืฆืื ืืื ืืืืืืืื ืจืืืืจืืื ืื ืืขืืืื ืืืืืืื ืืื (ReDoS). ืืืืืจืืชื ืืืชืืื, ืืืฉืชืืฉ ืืืื ืืงืช ืืฉืื ืื, ืฉืืคืจ ืืฉืืขืืชืืช. ืืืืืื, ืืื ืืืืฆืืข ืฉื ืืืืืื '/^a*b?a*$/ =~ "a" * 50000 + "x"' ืืืคืืช ื-10 ื-0.003 ืฉื ืืืช. ืขืืืช ืืืืคืืืืืืฆืื ืืื ืืืืื ืืฆืจืืืช ืืืืืจืื, ืฉืฆืจืืืชื ืืืืื ืคื 10 ืืขืจื ืืืืื ื ืชืื ื ืืงืื. ืืืฆืขื ืืืืืื ืืฉื ื ืืื ืืืืืืช ืืืืืืจ ืคืกืง ืืื (ืืืืืื, "Regexp.timeout = 1.0") ืฉืืืืืื ืืฉ ืืขืื ืืช ืืืืืื ืืจืืืืจื.
- ืืฆื syntax_suggest ืืืื, ืฉืขืืืจ ืืืืื ืืช ืืกืืืืช ืืฉืืืืืช ืืงืฉืืจืืช ืืืืืื "ืกืืฃ" ืืกืจ ืื ื ืืกืฃ. 'ืกืืฃ' ืื ืชืืื, ืืืืช ืืคืชื ืืกืจื ('ืขืฉื', 'def', 'ืื' ืืื') ? ืืื ืืืืงื 1 > 2 ืืคืืจืง > 3 ืืงืฆื 4 ืกืืฃ
- ืืืืืืช ืืกืื ืืจืืืื ืืื ืขืืืจ ืฉืืืืืช ืืงืฉืืจืืช ืืกืืืื ืืืืจืืืื ืืื ื ืืกืคื ืืืฆื ืชืฆืืืช ืืืงืื ืืฉืืืื, ืืืืืื: test.rb:2:in `+': ืื ื ืืชื ืืืคืืช ืขื nil ืืืกืคืจ ืฉืื (TypeError) sum = ary [0] + ary [1] ^^^^^^
- ื ืืกืฃ ืชืืืืจ ืืืฉ ืืืคื ืืืช ืงืืืฆืืช ืฉื ืืจืืืื ืืื ืืฉืืืืช ืืืจืืช: def foo(*) bar(*) end def baz(**) quux(**) end
- ืืืฆืข Ruby_vm/mjit/compiler - ืืจืกื ืฉื ืืืืจ MJIT JIT ืืืฉื, ืฉื ืืชื ืืืืฉ ืืฉืคืช Ruby. ืืื ืฉ-MJIT ืคืืขื ืืชืืืื ื ืคืจื ืืืงืื ืืจืืฅ ืืฉืจืฉืืจ ืขืืื ืฉื MJIT.
- ื-Bundler 2.4, ืขืืืื ืืชืืืช ืืฉืชืืฉ ืืืืื ืืจืกืช PubGrub, ืืืฉืืฉ ืื ืืื ืื ืืืืืืช ืืคืื ืขืืืจ ืฉืคืช Dart. ืืืืืืจืืชื ืฉื Molinillo ืฉืฉืืืฉ ืืขืืจ ืืืฉืื ืืืืืช ืืฉืืืืฉ ื-RubyGems, ืื ืื ืืืืืฃ ื-PubGrub ืืขืชืื.
- ืืจืกืืืช ืืขืืืื ืืช ืฉื ืืืืืื ืืื ื ืื ืืืื ืื ืืฉื ืืื ืืืืืืื ืืกืคืจืืื ืืกืื ืืจืืืช.
ืืงืืจ: OpenNet.ru