Została wydana wersja mruby 3.0, wbudowanego interpretera dynamicznie typowanego języka programowania Ruby. Mruby zapewnia zgodność składni na poziomie Ruby 1.9, ale wspiera także niektóre funkcje z nowszych wersji. Interpreter charakteryzuje się niskim zużyciem pamięci oraz możliwością wbudowania w inne aplikacje. Dodatkowo, wspierane jest kompilowanie programów Ruby do kodu bajtowego dzięki rozwijanemu przez projekt kompilatorowi „mrbc”. Kod mruby jest rozpowszechniany na licencji MIT.
W nowej wersji znacznie zmniejszono zużycie pamięci przez mruby VM. Wcześniejsze wersje wymagały kilku setek KB pamięci operacyjnej, podczas gdy mruby 3.0 zużywa około 100 KB RAM.
- Zmniejszono zużycie pamięci operacyjnej dzięki optymalizacji alokacji pamięci dla obiektów klasy Symbols. Zmniejszono także zużycie pamięci przez obiekty klasy Hash. Przeprowadzono optymalizację wywołania metod.
- Dodano wsparcie dla jednowierszowej definicji metody bez użycia słowa kluczowego „end”: def square(x) = x * x
- Dodano operator „=>” (wartości => zmienna), który jest używany do przypisywania wartości z prawej strony. 0 => a p a #=> 0 {b: 0, c: 1} => {b:} p b #=> 0
- Wsparcie dla konstrukcji heredocs.
- Zaktualizowano pliki do budowy interpretera. Dodano kompilację z gprof. GCC teraz może kompilować w trybie 32-bitowym na 64-bitowych platformach. Pojawiło się wsparcie dla Address Sanitizer w clang.
- Zmiana, która narusza zgodność: stała RITE_VM_VER teraz ma wartość 0300, a RITE_BINARY_FORMAT_VER — 0200, co wyklucza możliwość uruchamiania bytecode z wcześniejszych wersji.
- Klasa Fixnum stała się częścią Integer, tak jak w Ruby 3.0. Klasa Integral została usunięta.
Źródło: opennet.ru
