Skip to content
Web Assembly Interpreter for ESP32 family of micro controllers running the ESP-IDF development framework, based on the great work at kanaka/wac
Branch: master
Clone or download
Latest commit 020d895 Apr 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
main adding Kconfig Apr 11, 2019
.gitignore interprets a WASM module function hard wired in the code. Runs on ESP… Apr 10, 2019
LICENSE interprets a WASM module function hard wired in the code. Runs on ESP… Apr 10, 2019
Makefile interprets a WASM module function hard wired in the code. Runs on ESP… Apr 10, 2019
sdkconfig adding Kconfig Apr 11, 2019

wac - WebAssembly in C

A Minimal WebAssembly interpreter written in C. Supports the WebAssembly MVP (minimum viable product) version of the WebAssembly specification.

This is a fork of the great works at kanaka/wac focuses on making the WASM Interpreter work on embedded devices compatible with Espressif ESP32 and their ESP-IDF development environment. This environment uses Amazon FreeRTOS.

Please read the intro at kanaka/wac .

Runs simple WASM code generated by Emscipten or CLANG/LLVM V8.

Currently limitations:

  • Only supports a non-interactive variant of wac. No plans to change.
  • WASM binary code is included as a static buffer in wac.c Plan is to support network download by integrating the HTTP client component.
  • Function import's are unsupported, no dynamic DLL loading, no calls to the OS. I might add some support in the future.
  • Systamatic testing has not been done.

Build Instructions for ESP32

Get the ESP-IDF development kit from and follow the instructions how to download, install, and configure.

The environment variable ESP_PLATFORM indicates we are building for ESP32:


Run once, the only thing to do is to adjust the devcie port of your module: make menuconfig

In the root directory ./wac, build everything:

make all

Flash the built image and start the monitor:

make flash monitr

The output is pretty verbouse becasue tracing is enabled (change in platform.h). If everything goes fine it prints the return value, tells its done and reboots to start over. Stop the monitor with CTRL - ].

Build Instructions for Ubuntu

The purpose of the Ubuntu built is to give an easier environment to track down bug, and to study the code.

Follow the instructions at kanaka/wac to install dependencies (works for me on Ubuntu 18.04. and does not work on Mac OS).

Create the out directory

mkdir ./out

Unset ESP_PLATFORM environment variable (otherwise the built will be for ESP)


Make the executable out/wac

make all


MPL-2.0 (see LICENSE).

You can’t perform that action at this time.