Π ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° Π΅ΡΠ°Π»ΠΎΠ½Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Ruby Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ZJIT, ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ Ruby JIT. ZJIT ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Ruby 3.5, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΡΠΎ ΠΎΠΏΡΠΈΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° YJIT, Π° Π² Π²Π΅ΡΡΠΈΡ Ruby 3.6 Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΊΡΠΎ YJIT, Π½ΠΎΠ²ΠΈΡΡ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust. Π Π΄Π²Π°ΡΠ° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ Π΅ΠΊΠΈΠΏΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Shopify Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Ruby ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΡΠ°ΠΌΠΊΠ°ΡΠ° Rails ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ.
ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ YJIT, Π½ΠΎΠ²ΠΈΡΡ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π½Π΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π±Π°ΠΉΡΠΊΠΎΠ΄ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° YARV Π² Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ (Π² ΡΡΡΠ½ΠΎΡΡ ΠΏΠΎΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄), Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π±Π°ΠΉΡΠΊΠΎΠ΄Π° Π² Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ SSA (Static Single Assignment), Π²ΡΡΡ Ρ ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·ΠΈ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΊΠΎΠ΄, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° ΡΠ°ΠΌΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ZJIT ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, Π΄ΠΎΠΊΠ°ΡΠΎ YJIT ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΡΠ°ΠΌΠΎ Π½Π° Π±Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅. ΠΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ZJIT ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° JIT, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° Π½Π°ΡΡΡΠΏΠ°Π½ΠΈΡΠ΅ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π°ΡΠ° Π² YJIT ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π·Π° Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ (LBBV β Lazy Basic Block Versioning).
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΡΠ΅ ΡΠ΅ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡΠ°, Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Π»ΠΈ Π² YJIT, ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ Π°Π³ΡΠ΅ΡΠΈΠ²Π½ΠΎ inlinΠ΅-ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅) ΠΈ ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° JIT Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. ΠΡΡΡΠ°Π½Π΅ΡΠΎ ΠΊΡΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·Π±Π°Π²ΠΈ ΠΊΠΎΠ΄Π° ΠΎΡ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΡΠ΅ Π΄Π°Π΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° LBBV Π² YJIT Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π±Π΅ΡΠ΅ Π½Π΅ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π·Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ ΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Shopify).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
