All Projects → TOPLLab → WARDuino

TOPLLab / WARDuino

Licence: MPL-2.0 license
A dynamic WebAssembly VM for embedded systems

Programming Languages

shell
77523 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects
CMake
9771 projects

Projects that are alternatives of or similar to WARDuino

Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-64.71%)
Mutual labels:  interpreter, runtime
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (+727.45%)
Mutual labels:  interpreter, runtime
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 (+5729.41%)
Mutual labels:  interpreter, runtime
wac-esp
Web Assembly Interpreter for ESP32 family of micro controllers running the ESP-IDF development framework, based on the great work at kanaka/wac
Stars: ✭ 66 (+29.41%)
Mutual labels:  runtime, esp32
Nf Interpreter
⚙️ nanoFramework Interpreter, CLR, HAL, PAL and reference target boards
Stars: ✭ 168 (+229.41%)
Mutual labels:  interpreter, esp32
Llamalang
Repository for the Llama Programming Language. Work In Progress
Stars: ✭ 6 (-88.24%)
Mutual labels:  interpreter, runtime
interp
Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
Stars: ✭ 32 (-37.25%)
Mutual labels:  interpreter, esp32
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 (+5394.12%)
Mutual labels:  interpreter, runtime
Apple Juice Actionscript
Pure .NET 2.0 code Implementation of the ActionScript3 compiler and runtime. Can be used to run scripts in environments where "just-in-time compilation" is not possible
Stars: ✭ 112 (+119.61%)
Mutual labels:  interpreter, runtime
Quickjs
The official repo is at bellard/quickjs.
Stars: ✭ 1,429 (+2701.96%)
Mutual labels:  interpreter, runtime
Wasm Micro Runtime
WebAssembly Micro Runtime (WAMR)
Stars: ✭ 2,440 (+4684.31%)
Mutual labels:  interpreter, runtime
quickjs-build
Build for QuickJS JavaScript Engine
Stars: ✭ 25 (-50.98%)
Mutual labels:  interpreter, runtime
xemime
The Xemime programming language
Stars: ✭ 13 (-74.51%)
Mutual labels:  interpreter
Flang
A Scheme dialect
Stars: ✭ 26 (-49.02%)
Mutual labels:  interpreter
SOMns
SOMns: A Newspeak for Concurrency Research
Stars: ✭ 62 (+21.57%)
Mutual labels:  interpreter
basicv2
A Commodore (CBM) BASIC V2 interpreter/compiler written in Java
Stars: ✭ 73 (+43.14%)
Mutual labels:  interpreter
hex
An ecosystem delivering practices, philosophy and portability. Powered By Deno and JavaScript.
Stars: ✭ 48 (-5.88%)
Mutual labels:  runtime
rust lisp
A Rust-embeddable Lisp, with support for interop with native Rust functions
Stars: ✭ 128 (+150.98%)
Mutual labels:  interpreter
uwuscript
World's first uwu-oriented language.
Stars: ✭ 75 (+47.06%)
Mutual labels:  interpreter
cidk
interpreter devkit
Stars: ✭ 23 (-54.9%)
Mutual labels:  interpreter

WARDuino

This project is released under the Mozilla Public License 2.0, and is being developed as part of an active research project at the University of Ghent's TOPL lab.

The WARDuino virtual machine is a WebAssembly runtime for microcontrollers, which runs both under the Arduino and ESP-IDF toolchains. The WARDuino project also includes a VS Code extension to use the remote debugging facilities offered by the virtual machine.

Installation | Examples | Run Specification tests | Documentation

Build and Development Instructions

Supported platforms: Linux (Ubuntu), macOS, ESP-IDF, Arduino

The project uses CMake. Quick install looks like this:

git clone [email protected]:TOPLLab/WARDuino.git
cd WARDuino
mkdir build-emu
cd build-emu
cmake .. -D BUILD_EMULATOR=ON
make

This will build the command-line tool (emulator), which has been tested on both linux and macOS.

The WARDuino VM can be compiled with both the Arduino and ESP-IDF toolchains, and has been extensively tested on different ESP8266 and ESP32 microcontrollers.

Build for ESP-IDF

Before you can compile and flash with ESP-IDF, you must install and enable the toolchain. You also need to disable the watchdog timer:

  1. Go to the root folder of the WARDuino repo
  2. run idf.py menuconfig
  3. Under Component config → ESP System Settings disable the following options:
    • Interrupt watchdog
    • Initialize Task Watchdog Timer on startup
  4. Save and quit the menu

Make sure the ESP-IDF tools are enabled, otherwise these steps will not work.

To install the WARDuino with the ESP-IDF toolchain perform the following steps starting from the project root folder:

mkdir build
cd build
cmake .. -D BUILD_ESP=ON
make flash

Or simply run idf.py flash.

Build for Arduino

First, install the arduino-cli.

Second, create the config file:

arduino-cli config init

If you need additional boards, such as the esp32 boards, you can add them in the generated config file. More information here.

Thirdly, make sure you install the PubSubClient and Adafruit NeoPixel library. (used for MQTT and pixel primitives)

arduino-cli lib install "PubSubClient"
arduino-cli lib install "Adafruit NeoPixel"

After this initial installation steps you can start using WARDuino with the Arduino toolchain. You can upload the example file as follows, starting from the project root:

cd platforms/Arduino
make compile
make flash

Build for Emulator

WARDuino can also be build as a command-line tool for a desktop environment. The purpose of this CLI is to allow developers to test WARDuino applications without the need to buy a microcontroller. The CLI is also used to run the various unit and specification tests for WARDuino.

To install the CLI perform the following steps starting from the project root folder:

mkdir build-emu
cd build-emu
cmake .. -D BUILD_EMULATOR=ON
make

WebAssembly Specification tests

python3 -m pip install -r requirements.txt
./tests/integration/run_spec_tests.py --interpreter "build-emu/wdcli" --compiler "wat2wasm"

Technical support and feedback

For a feature request or bug report, create a GitHub issue.

LICENCE

WARDuino by Robbert Gurdeep Singh, Tom Lauwaerts, Christophe Scholliers and Joel Martin is licensed under a MPL-2.0 License. This is a derivative work of kanaka/wac by Joel Martin.

If you need to cite WARDuino in your research, use:

@inproceedings{WARDuino2019,
 author = {Gurdeep Singh, Robbert and Scholliers, Christophe},
 title = {WARDuino: A Dynamic WebAssembly Virtual Machine for Programming Microcontrollers},
 booktitle = {Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes},
 series = {MPLR 2019},
 year = {2019},
 isbn = {978-1-4503-6977-0},
 location = {Athens, Greece},
 pages = {27--36},
 numpages = {10},
 url = {http://doi.acm.org/10.1145/3357390.3361029},
 doi = {10.1145/3357390.3361029},
 acmid = {3361029},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {Arduino, Live Code Updates, Virtual Machine, WebAssembly},
}
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].