ДоступСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ mruby 3.0

Бостоялся Ρ€Π΅Π»ΠΈΠ· mruby 3.0, встраиваСмого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° динамичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка программирования Ruby. Mruby обСспСчиваСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ синтаксиса Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ruby 1.9, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсий. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ отличаСтся Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ памяти ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ встраивания Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, поддСрТиваСтся компиляция Ruby-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ компилятора «mrbc». Код mruby распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. ‎

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сокращСно ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² mruby VM. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн ΠšΠ‘ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π° mruby 3.0 потрСбляСт ΠΎΠΊΠΎΠ»ΠΎ 100 ΠšΠ‘ ΠžΠ—Π£.‎ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:

  • УмСньшСно ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π·Π° счСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ выдСлСния памяти для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Symbols. УмСньшСно ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса Hash. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° однострочного опрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Π΅Π· использования ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова «end»: def square(x) = x * x
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «=>» (значСния => пСрСмСнная), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для правостороннСго присваивания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. 0 => a p a #=> 0 {b: 0, c: 1} => {b:} p b #=> 0
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° конструкции heredocs.
  • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹ сборки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° компиляция с gprof. GCC Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 32 Π±ΠΈΡ‚Π° Π½Π° 64 Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Address Sanitizer Π² clang.
  • ИзмСнСниС, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π΅Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: константа RITE_VM_VER Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0300, Π° RITE_BINARY_FORMAT_VER — 0200, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ исполнСния Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… вСрсий.
  • Класс Fixnum стал Ρ‡Π°ΡΡ‚ΡŒΡŽ Integer, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² Ruby 3.0. Π£Π΄Π°Π»Π΅Π½ класс Integral.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru