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.ziptominivm-web. - Run
python3 -m http.server --directory minivm-webin 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
apps
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 functions and _ENV to a file.
- Added flag
--save=file.binto export the environment to a file. - Added flag
--load=file.binto 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-astDump Syntax Tree--dump-irDump Static MiniVM IR--dump-verDump Version Stuff--dump-asmDump Output Code
- Some Lua environment including custom _ENV
- Custom
--number=typenumber 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=tbis 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