Awesome
MiniVM
MiniVM is a Small but Optimizing Virtual Machine and Runtime.
It has a just-in-time compiler based on Cuik's TB.
Currently it supports Linux x86-64, FreeBSD amd64, Windows x64 and WebAssembly.
MiniVM is written in C11 with (minor GNU extensions), and builds with GCC and Clang, with TCC support not hard to patch in.
Building
MiniVM uses GNU Make as it's build system.
Requirements
You'll need
- The MiniVM repo
- Make sure to get the cuik submodule
- You can use
git clone github.com/FastVM/minivm --recursive
- If you've already cloned you can use
git submodule update --init
- You can use
- Make sure to get the cuik submodule
- A C Compiler
- GCC works
- Clang works if you replace CC=gcc with CC=clang
Build Configs
Here's some Shell Commands to build MiniVM different ways
- Debug -
make -Bj OPT='-g'
- For Size -
make -Bj CC=gcc OPT='-s -Oz -flto -fno-asynchronous-unwind-tables -fomit-frame-pointer'
- GCC does a better job than Clang to make tiny binaries of MiniVM.
- For Speed -
make -Bj OPT='-O3 -flto'
Speed
Here's some benchmark runs, they aren't too representative yet.
Math + Recursion
shell> ./build/bin/minivm --dump-time test/fib/fib40.lua
102334155
took: 1725.805ms
Startup Perf
shell> ./build/bin/minivm --dump-time -e 'print("hello world")'
Hello, World
took: 0.307ms