Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· Ruby 3.4.0, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π²ΠΎΠ±ΡΠ°Π²ΡΠ΅Π³ΠΎ Π² ΡΠ΅Π±Ρ Π»ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡ Perl, Java, Python, Smalltalk, Eiffel, Ada ΠΈ Lisp. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ BSD («2-clause BSDL») ΠΈ «Ruby», ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ GPL ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ GPLv3.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ «it», ΠΎΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π»ΡΠ½Π½ΡΠΉ Ρ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ Π² Π±Π»ΠΎΠΊΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎΠ²ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠ°Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ «_1» ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² Π±Π»ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΏΡΡΠ°Π½ΠΈΡΡ, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² Π±Π»ΠΎΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² («it» ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π° ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ «_1», Π½Π΅ ΡΡΠ½ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ «_2»). [1, 2, 3].each { puts _1 } [1, 2, 3].each { puts it } ary = [«foo», «bar», «baz»] p ary.map { it.upcase } #=> [«FOO», «BAR», «BAZ»]
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΠΏΠ°ΡΡΠ΅Ρ Prism, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ, ΠΏΡΠΎΡΡ Π² ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΠ»Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Ruby Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Prism.parse(source) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ AST-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Prism.parse_comments(source) Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ Prism.parse_success?(source) Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²ΡΠ΅Π³ΠΎΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ° «parse.y» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ «—parser=parse.y».
- Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ «socket» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Happy Eyeballs (RFC 8305) Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ Ρ ΠΎΡΡΠ°ΠΌ, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΠ°ΠΌ IPv4 ΠΈ IPv6. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Happy Eyeball ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠ°Π·Ρ ΡΠ΅Π·ΠΎΠ»Π²ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° IPv4 ΠΈ IPv6 Π΄Π»Ρ Ρ ΠΎΡΡΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ IPv6, Π° Π·Π°ΡΠ΅ΠΌ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ 250 ΠΌΡ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊ Ρ ΠΎΡΡΡ Π°Π΄ΡΠ΅ΡΠ°ΠΌ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡΡ ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ. ΠΠΎ ΡΡΠΎΠ³ΠΎ, Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² TCPSocket.new ΠΈ Socket.tcp Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Ruby ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌ ΡΠ΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π° Π°Π΄ΡΠ΅ΡΠΎΠ² IPv4/IPv6 ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠ»Π° ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ IPv6, Π½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π° IPv6. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ «RUBY_TCP_NO_FAST_FALLBACK=1», Π½Π°ΡΡΡΠΎΠΉΠΊΡ «Socket.tcp_fast_fallback=false» ΠΈΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ «fast_fallback: false» ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° YJIT, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠΈ Shopify Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ ΠΏΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ruby-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Rails ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ
ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° MJIT Π½ΠΎΠ²ΡΠΉ YJIT ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ
Π±Π»ΠΎΠΊΠΎΠ² (LBBV — Lazy Basic Block Versioning) Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠΎΡΠΌΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ LBBV, JIT Π²Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π° ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅ΡΡΠΎΠ² Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ x86_64 ΠΈ ARM64 ΡΠ΄Π°Π»ΠΎΡΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ YJIT. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²; Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Ruby-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Array#each, Array#select ΠΈ Array#map; inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΈΠ»ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ; ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²; ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (String#getbyte, String#setbyte); ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π·Π° ΡΡΡΡ ΡΠΆΠ°ΡΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ «—yjit-mem-size», ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 128MiB ΠΈ Π²Π»ΠΈΡΡΡΠ°Ρ Π½Π° ΠΎΠ±ΡΠ΅Π΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ «—yjit-log» Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΡΡΠΎΡΠ°, ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ RUBY_GC_LIBRARY. ΠΠ°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ±ΡΠ°Π½ Π² ΡΠΎΡΠΌΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° Π½Π° Π±Π°Π·Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° MMTk, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π² ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nil. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ «**nil» ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΡΡΠΎΠΉ Ρ ΡΡ «**{}» Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ΅ΡΠΎΠ΄.
- Π ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, «a[&b]=c» ΠΈ «o[1, a: 1]».
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ JSON.parse, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΠΎΠ»ΡΠΎΡΠ° ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° json 2.7.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru