Fork me on GitHub

MoarVM 2017.01

Numerous Unicode improvements, including string comparison using the Unicode Collation Algorithm, support for Unicode Name Aliases and Unicode Named Character Sequences, updates to grapheme breaking including emoji handling, and additional properties. Faster normalization, improving I/O performance. Simplified and more efficient memory handling for callframes, leading to significant speedups and memory reductions for some workloads. Corrections to the UTF8-C8 encoding. Better handling of full GC collection decision-making when doing I/O and heap profiling. And numerous smaller bug fixes and tweaks across the VM.


What is MoarVM?

Short for "Metamodel On A Runtime", MoarVM is a virtual machine built especially for Rakudo Perl 6 and the NQP Compiler Toolchain. It uses dynamic optimization techniques to detect hot code and produce specialized versions for the types that show up at runtime. The most popular backend for Rakudo Perl 6, MoarVM stands out by:

  • Running the Perl 6 specification test suite in the least time
  • Passing more of the Perl 6 specification tests than Rakudo Perl 6 on other backends
  • Having the lowest memory usage
  • Having the best startup time
  • Being fastest to build both NQP and Rakudo - and thus your Perl 6 and NQP programs too!
  • Being the only backend to support strings at grapheme level

For long-running workloads where startup time doesn't matter and you need tried-and-tested threading support, Rakudo on the JVM may be a better bet. It may also - once the slow startup is overcome - win on performance for some workloads, once its sophisticated JIT compiler gets to work. MoarVM is under active development in these areas, and the gap continues to close.