De release van mruby 3.0, de embedded interpreter van de dynamische object-georiƫnteerde programmeertaal Ruby, heeft plaatsgevonden. Mruby biedt compatibiliteit op syntactisch niveau met Ruby 1.9, maar ondersteunt ook bepaalde functies uit nieuwere versies. De interpreter onderscheidt zich door een laag geheugenverbruik en de mogelijkheid om in andere applicaties te worden ingebed. Daarnaast is er ondersteuning voor het compileren van Ruby-programma's naar bytecode met behulp van de ontwikkelende projectcompiler 'mrbc'. De code van mruby is vrijgegeven onder de MIT-licentie.
In de nieuwe release is het geheugenverbruik van mruby VM aanzienlijk verminderd. Vorige versies vereisten enkele honderden KB RAM, terwijl mruby 3.0 ongeveer 100 KB RAM verbruikt. Belangrijkste verbeteringen:
- Het geheugenverbruik is verminderd door optimalisatie van geheugenallocatie voor objecten van de klasse Symbols. Het geheugenverbruik door objecten van de klasse Hash is verminderd. Er is een optimalisatie van method aanroepen uitgevoerd.
- Ondersteuning voor eenregelige methode-definitie zonder gebruik van het sleutelwoord 'end' is toegevoegd: def square(x) = x * x
- De operator '=>' (waarde => variabele) is toegevoegd, die wordt gebruikt voor rechtse toewijzing van waarden. 0 => a p a #=> 0 {b: 0, c: 1} => {b:} p b #=> 0
- Ondersteuning voor heredoc-constructies.
- De bestanden voor het bouwen van de interpreter zijn bijgewerkt. Compilatie met gprof is toegevoegd. GCC kan nu compileren in 32-bits modus op 64-bits platformen. Ondersteuning voor Address Sanitizer in clang is toegevoegd.
- Een niet-compatibiliteitswijziging: de constante RITE_VM_VER heeft nu de waarde 0300, en RITE_BINARY_FORMAT_VER is 0200, waardoor het uitvoeren van bytecode van eerdere versies niet mogelijk is.
- De klasse Fixnum is onderdeel geworden van Integer, net als in Ruby 3.0. De klasse Integral is verwijderd.
Bron: opennet.ru
