αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Ruby 3.1

Ruby 3.1.0 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αžŠαŸ‚αž›αž‡αžΆαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαž˜αŸ’αžšαž„αŸ‹αž‘αž·αžŸαžœαžαŸ’αžαž»αžαžΆαž˜αžœαž“αŸ’αž αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαžšαž”αžŸαŸ‹ Perl, Java, Python, Smalltalk, Eiffel, Ada αž“αž·αž„ Lisp αŸ” αž›αŸαžαž€αžΌαžŠαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αžŽαŸ’αžŽ BSD ("2-αžƒαŸ’αž›αžΆ BSDL") αž“αž·αž„ "Ruby" αžŠαŸ‚αž›αžŸαŸ†αžŠαŸ…αž‘αŸ…αž›αžΎαž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒαž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ GPL αž αžΎαž™αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αž‡αžΆαž˜αž½αž™ GPLv3 αŸ”

αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ JIT αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαžαŸ’αž˜αžΈ YJIT αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαžœαŸαž‘αž·αž€αžΆαž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αž’αŸαž‘αž·αž…αžαŸ’αžšαžΌαž“αž·αž€ 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 αž…αžΆαžŸαŸ‹αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž”αŸ’αžšαžΎ Rails αž‘αŸ†αž αŸ†αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž’αžαž·αž”αžšαž˜αžΆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ (--jit-max-cache) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“αž–αžΈ 100 αž‘αŸ… 10000 αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αŸ” αžˆαž”αŸ‹αž”αŸ’αžšαžΎ JIT αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 1000αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžš Zeitwerk of Rails αž€αžΌαžŠ JIT αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž…αŸ„αž›αž‘αŸ€αžαž‘αŸ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› TracePoint αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžαŸ’αž“αžΆαž€αŸ‹αŸ”
  • αžœαžΆαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αžΌαžœαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αžΌαžœ debug.gem αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž€αŸ‚αž€αŸ†αž αž»αžŸαž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αž˜αž·αž“αž”αž“αŸ’αžαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ (VSCode αž“αž·αž„ Chrome) αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž αž»αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸ’αžšαžΎαž“ αž•αŸ’αžαž›αŸ‹ αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠ REPL αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αžαžΆαž˜αžŠαžΆαž“αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ αž’αžΆαž…αž€αžαŸ‹αžαŸ’αžšαžΆ αž“αž·αž„αž…αžΆαž€αŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž€αŸ†αžŽαžΆαžαŸ‹αž€αžΌαžŠαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž–αžΈαž˜αž»αž“ lib/debug.rb αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαž€αž…αŸαž‰αž–αžΈαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ”
    αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Ruby 3.1
  • αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž”αž“αŸ’αž›αž·αž…αžŠαŸ‚αž›αž˜αžΎαž›αžƒαžΎαž‰αž“αŸƒαž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž αŸ…αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αŸ” αž€αžΆαžšαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž”αžΌαž„αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ αž“αž·αž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ 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) αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž› (αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžœαžΆαž™ αžαž˜αŸ’αžšαž»αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαž˜αž½αž™αž‡αž˜αŸ’αžšαžΎαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž”αž“αŸ’αž αžšαžœαžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‡αžΆαž˜αž½αž™αž•αŸ’αž‘αžΆαŸ†αž„ ឬ Shift+ αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αžαŸαž”) αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αž˜αŸ’αžšαžΎαžŸαž”αž“αŸ’αž αž”αŸ’αžšαž’αž”αŸ‹αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž”αŸ‚αžšαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž’αžΆαžαž»αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αž•αŸ’αž›αžΌαžœαž€αžΆαžαŸ‹αž€αŸ’αžαžΆαžšαž…αž»αž… Alt+d αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαž–αŸαž‰αž›αŸαž‰αŸ”
    αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Ruby 3.1
  • αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž—αžΆαžŸαžΆαž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαž˜αŸ’αž›αŸƒαž“αŸ…αž€αŸ’αž“αž»αž„αž’αž€αŸ’αžŸαžš hash αž“αž·αž„αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž–αžΆαž€αŸ’αž™αž‚αž“αŸ’αž›αžΉαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž›αž„αž“αŸ…αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αž“αŸ’αžŸαŸ„αž˜ β€œ{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 αž€αŸ’αž“αž»αž„ [n, ^(n + 2)]}.take(3).to_a #= > ? [[៣, αŸ₯], [αŸ₯, ៧], [៑៑, ៑៣]]
  • αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„β€‹αž›αŸ†αž“αžΆαŸ†β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αžαŸ‚αž˜αž½αž™ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž›αž»αž”β€‹αžœαž„αŸ‹αž€αŸ’αžšαž…αž€αŸ– [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • αž—αžΆαžŸαžΆαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘ RBS αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ„αŸ‡αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžαžΆαž„αž›αžΎαž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αŸ’αžšαž—αŸαž‘αžŠαŸ„αž™αž”αŸ’αžšαžΎαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ "<" αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αž›αŸ‚αž„αž€αŸ’αž›αžΆαž™αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž‘αžΌαž‘αŸ… αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžŠαž»αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαŸ’αž”αžΌαž„ αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž“αž·αž„αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž αžαŸ’αžαž›αŸαžαžΆαžαŸ’αž˜αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ αž“αž·αž„αžŸαŸ’αžŠαž„αŸ‹αžŠαžΆαžšαŸ”
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαžΆαž€αž›αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αžŸαŸ’αžαžΆαž“αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž”αŸ’αžšαž—αŸαž‘αž‹αž·αžαž·αžœαž“αŸ’αž TypePro αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹ RBS αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΌαžŠαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž”αŸ’αžšαž—αŸαž‘αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž› TypePro αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’ VSCode)αŸ”
  • αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αž€αžΆαžšαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž–αžΈαž˜αž»αž“αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸƒαž€αž“αŸ’αžŸαŸ„αž˜ β€œfoo[0], bar[0] = baz, qux” αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž›αŸ†αžŠαžΆαž”αŸ‹ baz, qux, foo, bar αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡ foo, bar, baz, qux αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž–αž·αžŸαŸ„αž’αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž™αž“αŸ’αžαž€αžΆαžš VVA (αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž‘αž‘αžΉαž„αž’αžαŸαžš) αŸ”
  • αž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αžαŸ’αž”αžΌαž„αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ” αž€αž‰αŸ’αž…αž”αŸ‹ net-ftp, net-imap, net-pop, net-smtp, matrix, prime αž“αž·αž„ debug packages αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹