Short for "Metamodel On A Runtime", MoarVM is a modern virtual machine built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain. MoarVM is used by the majority of Perl 6 programmers. Highlights include: Great Unicode support, with strings represented at grapheme level, dynamic analysis of running code to identify hot functions and loops, and perform a range of optimizations, including type specialization and inlining, support for threads, a range of concurrency control constructs, and asynchronous sockets, timers, processes, and more, generational, parallel, garbage collection, support for numerous language features, including first class functions, exceptions, continuations, runtime loading of code, big integers and interfacing with native libraries. MoarVM provides very little directly - and that's a good thing. It is not tied to a particular way of doing inheritance, roles, mixins, method resolution, type-checking, and so forth.
Features
- First-class code objects
- Lexical variables and closures
- Exceptions, with resumption support
- Single-shot continuations
- I/O (files, pipes, sockets), and a range of file system and process operations
- Big integers
- Taking references to native lexicals, attributes, and array elements
- Runtime loading/evaluation of code
- Bounded serialization
- Native calling, passing pointers, arrays, structs, and callbacks
- Threads, mutexes, conditional variables, semaphores and concurrent blocking queues
- Asynchronous sockets, timers, signal handlers, file system notifications, and processes