Доступен интерпретатор 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.
Release. Ссылка here.