Ruby 3.2.0 ááẠáááá¯áááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠá¡ááœááºáááá±á¬ááºááŒá®áž Perlá Javaá Pythoná Smalltalká Eiffelá Ada ááŸáá·áº Lisp ááá¯á·á á¡áá±á¬ááºážáá¯á¶ážá¡ááºá¹áá«áááºáá»á¬ážááᯠáá±á«ááºážá ááºáá¬ážááá·áº ááœááºáááºáá±á¬ á¡áá¬ááá¹áá¯ááᯠáŠážáááºááá·áº áááá¯ááááºážáááºážáá¬áá¬á áá¬ážááᯠáá¯ááºáá±áá²á·áááºá ááá±á¬áá»ááºáá¯ááºááᯠGPL ááá¯ááºá ááºááá±á¬ááºáá¯á¶ážáá¬ážááŸááºážááá¯áááºááœáŸááºážááŒá®áž GPLv2 ááŸáá·áº á¡ááŒáá·áºá¡ááááá¬áááŒá áºáá±á¬ BSD ("3-á¡ááá¯áẠBSDL") ááŸáá·áº "Ruby" ááá¯ááºá ááºáá»á¬ážá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážáááºá
á¡ááá ááá¯ážáááºááŸá¯áá»á¬áž-
- áááºááá±á¬ááºáá¬áá áºáá¯ááœáẠááá¯á·ááá¯áẠwasmtime áá²á·ááá¯á·áá±á¬ áá®ážááŒá¬ážáá¯ááºáá±á¬ááºáá»áááºáá»á¬ážá¡á±á¬ááºááœáẠáá¯ááºáá±á¬ááºáááºá¡ááœáẠWebAssembly á¡áááºá¡áááºáá¯ááºááá¯á· á á¯á ááºážáá¬ážááá·áº Cruby á áá¬ážááŒááºá áááŠážááááºáááºážáá áºáá¯ááᯠáá±á«ááºážááá·áºáá¬ážáááºá áá®ážááŒá¬ážáá¯ááºáá±á¬ááºáá±áá»áááºááœáẠáááºáááºááŸá¯á áá áºááŸáá·áº ááá¯ááºááá¯ááºá¡ááŒááºá¡ááŸááºáááºááœááºáááºá¡ááœáẠWASI (WebAssembly System Interface) API ááᯠá¡áá¯á¶ážááŒá¯áááºá á¡ááŒá¬ážá¡áá¬áá»á¬ážáá²ááœááºá áááºááẠRuby á¡ááá®áá±ážááŸááºážáá áºáá¯áá¯á¶ážááᯠwasm ááá¯ááºáá áºáá¯á¡ááœááºááŒáá·áº áááºáááºááŸá¯á¡ááŒá Ạáá¯ááºááá¯ážááá¯ááºá á±ááá·áº WASI áááááºááœáẠVFS wrapper ááᯠáá±ážáá¬ážáááºá ááá±á¬ááºáá¬áá áºáá¯ááœáẠáá¯ááºáá±á¬ááºááŒááºážá¡á¬áž TryRuby áá²á·ááá¯á·áá±á¬ áá±á·áá»áá·áºáá±ážááŸáá·áºááá¯ááºáጠáááºáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºáá®ážááẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áááºááŸáááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááá·áºááœááºá ááááºáááºážááẠThread API ááá¯á¡áá¯á¶ážáááŒá¯ááá·áº á¡ááŒá±áá¶ááŸáá·áº bootstrap á ááºážáááºááŸá¯á¡á á¯á¶áá»á¬ážááᯠá¡á±á¬ááºááŒááºá áœá¬á¡á±á¬ááºááŒááºá áœá¬ áá»á±á¬áºááŒááºááá¯ááºáá²á·áááºá ááááºáááºážááẠááá¯ááºáá¬áá»á¬ážá ááŒáœááºážáá»ááºáá»á¬ážááŸáá·áº á¡ááŸáá¯ááºá á¯áá±á¬ááºážááŸá¯ááá¯áááºáž ááá¶á·ááá¯ážáá«á
- Rails áá°áá±á¬ááºááá¯áá¯á¶ážá áááºážáááºážáá»á¬ážá
áœá¬ááá¯áá±á«áºááá¯ááá·áº Ruby áááá¯ááááºáá»á¬ážáá
áœááºážáá±á¬ááºáááºááá¯ááŒáŸáá·áºáááºááẠá¡á
áá»áá¯ážááŸá¯áá
áºá
áááºáá
áºááá¯ááºážá¡ááŒá
ẠShopify e-commerce ááááºáá±á¬ááºážá developer áá»á¬ážá០áááºáá®ážáá¬ážááá·áº YJIT áá¯ááºáááºážá
ááºá¡ááœááºáž JIT compiler ááᯠáááºááŒáááºááŒá®áž á¡áááºááá·áºááŒá
áºáá±ááŒá®áᯠááŒá±áá¬áá¬ážáááºá áá¯ááºáá¯ááºáá¯á¶ážá
áœá²ááŸá¯á áááºážáááºážáá»á¬áž áá
áºáá¯áá¯á¶ážááᯠá
á®áá¶áá±á¬ááºááœááºáá±ážááŒá®áž C language ááœáẠááŒááºá compiler ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá±á«áº á¡ááŒá±áá¶ááá·áº ááááºá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ MJIT JIT compiler ááŸáá·áº á¡áááááœá¬ááŒá¬ážáá»ááºááŸá¬ YJIT ááẠLazy Basic Block Versioning (LBBV) ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž áá±á«ááºážá
ááºáá¬ážáá±á¬ JIT compiler áá«ááŸááááºá LBBV ááŒáá·áº JIT ááẠmethod áá¡á
ááá¯áᬠááááá¯á¶áž compile áá¯ááºááŒá®áž áá»ááºá¡áá»áááºá¡áááºážáááºááŒá¬áá±á¬á¡áá«ááœáẠá¡áá¯á¶ážááŒá¯áá±á¬ variables ááŸáá·áº argument á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠexecute áá¯ááºáá±á
ááºá¡ááœááºáž áá¯á¶ážááŒááºááŒá®ážáá±á¬áẠáá»ááºáá¬ááœá±ááᯠcompile áá¯ááºáá«áááºá YJIT ááᯠLinuxá MacOSá BSD ááŸáá·áº á¡ááŒá¬ážáá±á¬ UNIX ááááºáá±á¬ááºážáá»á¬ážááœáẠx86-64 ááŸáá·áº arm64/aarch64 áááá¯áá¬áá»á¬áž á¡ááœáẠáááá¯ááºáá«áááºá
Ruby ááŸáá·áºááá°áá²á YJIT áá¯ááºááᯠRust áá¬áá¬á áá¬ážááŒáá·áº áá±ážáá¬ážáá¬ážááŒá®áž á á¯á ááºážááŸá¯á¡ááœáẠrustc 1.58.0+ compiler ááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº YJIT áááºáá±á¬ááºááŸá¯ááᯠáá¯á¶áá±á¡á¬ážááŒáá·áº ááááºáá¬ážááŒá®áž ááœá±ážáá»ááºááá¯ááºáááºááŒá áºáááºá YJIT ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá« yjit-bench test ááᯠá¡áááá¹áá¬ááºááœáá·áºááá¯ááŒááºážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á áœááºážáá±á¬ááºááẠ41% ááá¯ážáá¬ááŒá±á¬ááºáž ááŸááºáááºážáááºáá¬ážáááºá
- áááá±á¬ááºááŸá¯áááŸáá á¡áá»áááºáá¯ááºáá±á¬ áá¯á¶ááŸááºáá±á¬áºááŒáá»ááºáá»á¬áž (ReDoS) ááœáẠááŒááºááá±áá¬ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« áááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºááŸá¯áá»á¬ážááᯠááŒááºážááá¯ááŒááºážá០áá±á¬ááºáááºáá¬ááœááºááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážáááºá á¡ááœááºáá»ááºááŒááºážáááºážááá¬ááᯠá¡áá¯á¶ážááŒá¯ááá·áº ááá¯ááºáá®áá±á¬ á¡ááºáááá¯áá®áááºááẠáááááá¬áᬠááá¯ážáááºáá¬áá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá '/^a*b?a*$/ =~ "a" * 50000 + "x"' áá°áá±á¬ á áá¬ážáááºá áá¯ááºáá±á¬ááºáá»áááºááᯠ10 á០0.003 á áá¹ááá·áºááá¯á· áá»áŸá±á¬á·áá»áá²á·áááºá ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááá¯ááºáá»á ááááºááẠááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááá¯ážáá¬ááŒááºážá áááºážá¡áá¯á¶ážááŒá¯ááŸá¯ááá¬áááẠááá·áºááœááºážáá±áá¬áá¡ááœááºá¡á á¬ážááẠ10 áááá·áºááá¯ááá¯ááŒáá·áºáá¬ážáááºá áá¯ááááá¯á¶ááŒá¯á¶áá±ážááá¯ááºážáá¬ááŸá¯ááŸá¬ áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠáá¯ááºáá±á¬ááºááááºááŒá áºááŒá®áž á¡áá»áááºáá¯ááºááœá¬ážááŒááºáž (á¥ááá¬á âRegexp.timeout = 1.0â) ááẠá¡áá»áááºáá¯ááºáááºááŸááºááá¯ááºááŸá¯ááŒá áºáááºá
- syntax_suggest áá¯ááºááœáẠáá«áááºááŒá®áž áá»á±á¬ááºáá¯á¶ážáá±áá±á¬ ááá¯á·ááá¯áẠá¡ááá¯áááẠâá¡áá¯á¶ážâ á áá¬ážáááºááŸáá·áº áááºá ááºáá±áá±á¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážá á¡ááŒá±á¬ááºážáááºážáá»á¬ážááᯠá¡ááŒá±ááŸá¬ááẠáá°áá®áá±ážáááºá ááá¯ááºáá®ááŸá¯áááŸááá±á¬ `á¡áá¯á¶ážÂŽá áá»á±á¬ááºáá¯á¶ážáá±áá±á¬ á¡áááá áá¬ážáá¯á¶áž (`do'á `def`á `if` á áááºááŒáá·áº) ? 1 class Dog > 2 defbark > 3 end 4 end
- á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŸáá·áº á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááŸáá·áºáááºá ááºáá±á¬ á¡ááŸá¬ážáá»á¬ážá¡ááœáẠá¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááᯠá¡ááŸááºá¡áá¬ážááŒá¯ááá¯ááºá áœááºážááᯠá¡ááŸá¬ážáááºáá±áá¬ááŒáááŸá¯áá¯ááºááá¯á· áá±á«ááºážááá·áºááá¯ááºááẠá¥ááá¬- test.rb:2:in `+': nil ááᯠááááºážááŒáá·áº (TypeError) sum = ary [0] + ary [1] ^^^^^^
- á¡ááŒááºážá¡áá¯á¶á¡á á¯á¶áá»á¬ážááᯠá¡ááŒá¬ážáááºážáááºážáá»á¬ážááá¯á· ááŒááºááœáŸááºážáááºá¡ááœáẠá¡áá¬ážá¡ááá¯á¡áá Ạáááºááá·áºáá¬ážáááº- def foo(*) bar(*) end def baz(**) quux(**) end
- Ruby_vm/mjit/compiler ááẠRuby áá¬áá¬á áá¬ážááŒáá·áº ááŒááºáááºáá±ážáá¬ážáá¬ážáá±á¬ MJIT JIT compiler á áá°ááœá²áá áºáá¯ááŒá áºáááºá MJIT áá¯ááºáá¬ážááá¯ááºážááœáẠáá¯ááºáá±á¬ááºááá·áºá¡á á¬áž MJIT ááẠáá®ážááŒá¬ážáá¯ááºáááºážá ááºáá áºáá¯ááœáẠáá¯ááºáá±á¬ááºááŒá±á¬ááºáž áá±áá»á¬áá«á á±á
- Bundler 2.4 ááœááºá ááŸá®ááá¯ááŸá¯áá¯ááºáá±á¬ááºááŒááºážááẠDart áá¬áá¬á áá¬ážá¡ááœáẠPubGrub áá¬ážááŸááºážááŸá¬ááœá±áá±ážáááááá¬ááᯠá¡áá¯á¶ážááŒá¯áááºá ááááºáá¡áá¯á¶ážááŒá¯áá²á·ááá·áº Molinillo á¡ááºáááá¯áá®áááºááᯠRubyGems ááœáẠáááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬áºáááºáž áá±á¬ááºááœáẠPubGrub ááŒáá·áº á¡á á¬ážááá¯ážáááºááŒá áºáááºá
- áááºáááºáá¬ážáá±á¬ áá»á±á¬ááºáá»ááºáá±á¬áºáá»á°ážáá»á¬ážá áá¬ážááŸááºážáá»á¬ážááŸáá·áº á á¶áá áºáá»á áºááá¯ááºááœáẠáá«áááºáá±á¬ áá¬ážááŸááºážáá»á¬ážááᯠá¡ááºááááºáá¯ááºáá¬ážáááºá
source: opennet.ru