ΠΠ΅ΡΠ΅ ΠΏΡΡΠ½Π°Ρ Ruby 3.1.0, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π΅ Π²ΠΈΡΠΎΠΊΠΎΠ΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Perl, Java, Python, Smalltalk, Eiffel, Ada ΠΈ Lisp. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ΅ BSD (β2-clause 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 Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ x86-64 Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (Π·Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ ΡΠ»Π°Π³Π° β--yjitβ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄).
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΡΡΠ°ΡΠΈΡ MJIT JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ. ΠΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Rails, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΊΠ΅ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (--jit-max-cache) Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ ΠΎΡ 100 Π½Π° 10000 1000 ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π‘ΠΏΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° JIT Π·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ XNUMX ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Zeitwerk of Rails, JIT ΠΊΠΎΠ΄ΡΡ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΈΠ·Ρ Π²ΡΡΠ»Ρ, ΠΊΠΎΠ³Π°ΡΠΎ TracePoint Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Π·Π° ΠΊΠ»Π°ΡΠΎΠ²ΠΈ ΡΡΠ±ΠΈΡΠΈΡ.
- Π’ΠΎΠΉ Π²ΠΊΠ»ΡΡΠ²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ Π΄Π΅Π±ΡΠ³Π΅Ρ debug.gem, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π½Π΅ Π·Π°Π±Π°Π²Ρ Π΄Π΅Π±ΡΠ³Π²Π°Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (VSCode ΠΈ Chrome), ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠΊΠΎΠ²ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ REPL, ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π° ΠΈ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ. ΠΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈΡΡ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π΄Π΅Π±ΡΠ³Π΅Ρ lib/debug.rb Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°Ρ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΎΡΡΠ΅ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ gem ΠΏΠ°ΠΊΠ΅Ρ error_highlight. ΠΠ° Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° β--disable-error_highlightβ. $ ruby ββββtest.rb test.rb:1:in " ": Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ ΠΌΠ΅ΡΠΎΠ΄ "Π²ΡΠ΅ΠΌΠ΅" Π·Π° 1:Π¦ΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ (NoMethodError) 1.Π²ΡΠ΅ΠΌΠ΅ {} ^^^^^ ΠΠΌΠ°Ρ ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄? ΠΏΡΡΠΈ
- ΠΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ IRB (REPL, Read-Eval-Print-Loop) ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ (Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Ρ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ, ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄Π²ΠΈΠΆΠΈΡΠ΅ Ρ Tab ΠΈΠ»ΠΈ Shift+ ΠΊΠ»Π°Π²ΠΈΡ Tab). Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Π±Π»ΠΈΠ·ΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ. ΠΠ»Π°Π²ΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Alt+d ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΡΠ»Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
- Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Π²Π΅ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² Ρ Π΅Ρ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΡΠ°Π·Π° β{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 #= > ? [[3, 5], [5, 7], [11, 13]]
- ΠΡΠΈ Π΅Π΄Π½ΠΎΡΠ΅Π΄ΠΎΠ²ΠΈ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΡΠΊΠΎΠ±ΠΈΡΠ΅: [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.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π·Π° Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° VWA (Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΠΈΡΠΈΠ½Π°).
- ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ gem ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΠ΅Π·ΠΈ, Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠ°ΠΊΠ΅ΡΠΈΡΠ΅ net-ftp, net-imap, net-pop, net-smtp, matrix, prime ΠΈ debug ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru