Skip to content

Releases: FastVM/minivm

MiniVM v0.0.4 - Draw Straws

26 Jun 09:09
Compare
Choose a tag to compare

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

  1. Unzip minivm-web.zip to minivm-web.
  2. Run python3 -m http.server --directory minivm-web in a terminal from where minivm-web is
    2.1. On Windows run py -3 -m http.server --directory minivm-web
  3. Open in the browser `localhost:8000/index.html?app=snake
  4. Try snake and the other apps

MiniVM v0.0.3 - Can't save the World

19 May 14:12
acd0979
Compare
Choose a tag to compare

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.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

13 May 11:49
Compare
Choose a tag to compare

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

05 May 00:48
Compare
Choose a tag to compare
Pre-release

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
  • 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
  • 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
  • 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