All Projects → Becavalier → TWVM

Becavalier / TWVM

Licence: MIT license
A tiny, lightweight and efficient WebAssembly virtual machine.

Programming Languages

C++
36643 projects - #6 most used programming language
hack
652 projects
CMake
9771 projects

Projects that are alternatives of or similar to TWVM

wasm-joey
Serverless Wasm - A lightweight Node.js application for deploying and executing WebAssembly(Wasm) binary-code via HTTP
Stars: ✭ 48 (-54.29%)
Mutual labels:  runtime, virtual-machine
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-82.86%)
Mutual labels:  runtime, virtual-machine
ol
Otus Lisp (Ol in short) is a purely* functional dialect of Lisp.
Stars: ✭ 157 (+49.52%)
Mutual labels:  virtual-machine, tiny
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (+301.9%)
Mutual labels:  runtime, virtual-machine
Quickjs
The official repo is at bellard/quickjs.
Stars: ✭ 1,429 (+1260.95%)
Mutual labels:  runtime, virtual-machine
embed
An embeddable, tiny Forth interpreter with metacompiler.
Stars: ✭ 80 (-23.81%)
Mutual labels:  virtual-machine, tiny
cabasa
Haxe Framework for WebAssembly
Stars: ✭ 30 (-71.43%)
Mutual labels:  runtime, virtual-machine
Pl Compiler Resource
程序语言与编译技术相关资料(持续更新中)
Stars: ✭ 578 (+450.48%)
Mutual labels:  runtime, virtual-machine
Redtamarin
AS3 running on the command line / server side
Stars: ✭ 105 (+0%)
Mutual labels:  runtime, virtual-machine
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+2568.57%)
Mutual labels:  runtime, virtual-machine
openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+2731.43%)
Mutual labels:  runtime, virtual-machine
SBTCVM-Gen2-9
SBTCVM is a virtual machine implementation of a balanced ternary (base 3) computer. Features several compiled languages for ternary software development.
Stars: ✭ 32 (-69.52%)
Mutual labels:  virtual-machine
grimoire
A fast, concurrent based scripting language for D.
Stars: ✭ 21 (-80%)
Mutual labels:  virtual-machine
myshoes
Auto-scaling VirtualMachine runner 🏃 for GitHub Actions
Stars: ✭ 68 (-35.24%)
Mutual labels:  virtual-machine
CodeDeobfuscator
Code Deobfuscator
Stars: ✭ 45 (-57.14%)
Mutual labels:  virtual-machine
http
Tiny, embeddable HTTP client with simple API for the browser
Stars: ✭ 21 (-80%)
Mutual labels:  tiny
misp-packer
Build Automated Machine Images for MISP
Stars: ✭ 25 (-76.19%)
Mutual labels:  virtual-machine
ubuntu-vnc-xfce-firefox
Retired. Headless Ubuntu/Xfce containers with VNC/noVNC and Firefox (Generation 1)
Stars: ✭ 20 (-80.95%)
Mutual labels:  virtual-machine
butterfly
Butterfly connects Virtual Machines and control their traffic flow
Stars: ✭ 48 (-54.29%)
Mutual labels:  virtual-machine
c8c
The chip8 compiler, assembler, and virtual machine
Stars: ✭ 110 (+4.76%)
Mutual labels:  virtual-machine

TWVM

TWVM is still under continuously construction, not production-ready yet!

GitHub Actions status

A tiny, lightweight, and efficient WebAssembly virtual machine.

Getting Started

Compile & Install

Please install the following softwares beforehand:

Then, run the following command to compile and install:

npm run build

How to use?

You can use the below command to invoke an exported function from a WebAssemly binary module:

# Invoke function `fib` with value 10.
twvm ./tests/modules/fibonacci.wasm -i=fib,10  # 55.

For further information, please run the below command for help:

twvm -h

Other Information

  • Limitations:

Currently, TWVM can only run standard WebAssembly binary modules with the instructions in MVP standard. Also, please make sure the module doesn't require any import objects (.e.g memory, function, table, and etc).

  • Memory Check:

Install "valgrind" on MacOS according to the following articles first:

How to Install Valgrind on macOS High Sierra

Valgrind on macOS 10.14/10.15

And then, run the below command to check the memory leak of the program:

npm run memcheck

Roadmap

  • Architecture refactoring.
  • Run simple fibonacci function successfully.
  • Full Wasm spec version 1.0 support.
  • Pass all basic testcases.
  • DCT optimization.
  • WAT support.

Copyright and License

Licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].