Viua VM
parallel, register-based, bytecode virtual machine
:
programmable in high-level assembly
:
published under GNU GPL v3
Feature list
- compile-time checks of code perfomed by the assembler
- separate compilation of bytecode modules
- static and dynamic linking of bytecode modules
- flat, module-less structure of code (compilation of various languages' module systems with no problems)
- almost free-form function names, with no length limit
- first-class functions
- mechanisms for static and dynamic dispatch of function calls
- process-based concurrency
- inter-process communication via message passing
- running multiple processes in parallel (on preemptive schedulers)
- virtual process restarting on failure (using user-programmed watchdog process)
- exception-based error handling (every object is throwable and catchable)
- eager, scope-based resource management
- non-blocking foreign function interface (requires at least two-core CPU)
- clean FFI for straightforward cooperation with C++ code
- no-copy function returns
- by-copy and by-move parameter passing to functions
- safe pointers for inside-VM objects
- move semantics for many instructions
- closures with multiple capture mechanisms (by-copy, by-reference, by-move)
- deferred calls
- tail calls
- built-in basic data structures (text, vectors, structures)