ΠΠ·Π»Π΅Π·Π΅ 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; ΠΈΠ½Π»Π°ΠΉΠ½ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ°Π·Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΈΠ»ΠΈ Π²Ρ ΠΎΠ΄Π΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ; ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ; ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π½ΠΈΠ·ΠΎΠ²Π΅ (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
