ОбявСн Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Ruby 3.4.0

ИзлСзС 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster