Releases: FastVM/minivm
MiniVM v0.0.4 - Draw Straws
Release 0.0.4
Things work more often, thanks to many bug fixes and a new Interpreter.
New Interpreter
Does not use LBBV (Lazy Basic Block Versioning).
Work will resume on a new JIT to go along with it soon.
Removed Old Options
Most options relating to TB are removed for the time being until a TB JIT is reimplemented.
Graphics API.
DOM style graphics with tables as the focus.
See test/app/gui.lua for examples of how to use it.
See test/app/snake.lua for a simple game using gui.lua
.
New Web Port
The included minivm-web.zip
is a complete MiniVM runtime with graphics included.
Unzip minivm-web.zip to a folder.
Host it with your favorite web serve.
Visit index.html in your browser.
In the URL you can set the app
parameter ?app=snake
, ?app=maze
, ?app=dig
(WIP), ?app=draw
(WIP).
Using the builtin Python web server
- Unzip
minivm-web.zip
tominivm-web
. - Run
python3 -m http.server --directory minivm-web
in a terminal from where minivm-web is
2.1. On Windows runpy -3 -m http.server --directory minivm-web
- Open in the browser `localhost:8000/index.html?app=snake
- Try snake and the other
app
s
MiniVM v0.0.3 - Can't save the World
Release 0.0.3
Changes to how functions work in the --tb-no-lbbv
mode. Functions are now stored like i32's of their block id.
Added flag --dump-c
to dump generated c code when target does so.
Faster Dynamic JIT.
The Dynamic JIT (non versioning / --tb-no-lbbv
) is now faster thanks to splitting of locals into each their own variable.
Future Work to come with using tb phi
nodes and values instead.
MiniVM Save System
MiniVM can save a snapshot of function
s and _ENV
to a file.
- Added flag
--save=file.bin
to export the environment to a file. - Added flag
--load=file.bin
to import an environment from a file.
These snapshots should work across target architectures, tho the format changes if a new standard function is added due to them being stored as an index.
MiniVM v0.0.2 - Broken Window Pain
Release 0.0.2
This minor release Fixes v0.0.1 on Windows as well as updating to a newer TB version.
MiniVM v0.0.1 - All downhill from here
Release
This is the first release of The MiniVM Lua Runtime so please be patient.
What's there
- Parsing Lua
- Two JIT Compilers
- Static Compiler
--tb-no-llbv
- Fast startup, slower runtime
- Lazy Basic Block Versioning (LBBV) Compiler
--tb-llbv
- Fast startup, high compilation cost, faster runtime
- Can benifit from profiling data
- Each JIT uses TB and can generate code for multiple backends
- C11 for GCC, Clang, TCC and Emscripten
- TB for 64 bit x86
- Static Compiler
- Dumping Internal State
--dump-*
--dump-ast
Dump Syntax Tree--dump-ir
Dump Static MiniVM IR--dump-ver
Dump Version Stuff--dump-asm
Dump Output Code
- Some Lua environment including custom _ENV
- Custom
--number=type
number types- Defaults to
--number=i32
- Supports i8, i16, i32, i64 fully
- Basic Support for f32 and f64
- Defaults to
- Interactive REPL
- Syntax Highlighting
- Web based version (including both JITs)
Whats Missing
- TB Compilation
- Plain
--target=tb
is broken right now due to @RealNeGate up-and-coming fixes
- Plain
- JIT Tier System
- Tier up from Baseline to Basic Block Versioning JIT
- Startup Interpreter
- Profile based Smart-LBBV
- Mutable Closures
- UpValues in general are missing right now
- MultiValues
- Multiple Returns don't on either backend, though There is a way forward.
- Safety Testing
- Garbage collection