• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H02-Jun-2021-789725

_deps/uvwasi-src/H03-May-2022-10,1747,658

docs/H02-Jun-2021-1,072830

extra/H03-May-2022-252190

platforms/H02-Jun-2021-14,03911,010

source/H03-May-2022-17,24711,241

test/H02-Jun-2021-5,2384,142

.codespellrcH A D02-Jun-2021133 64

.gitignoreH A D02-Jun-2021134 1312

LICENSEH A D02-Jun-20211.1 KiB2217

README.mdH A D02-Jun-20218 KiB11483

README.md

1<img align="right" width="30%" src="/extra/screenshot-ios.png">
2
3# <img src="/extra/wasm-symbol.svg" width="32" height="32" /> Wasm3
4
5[![WAPM](https://wapm.io/package/vshymanskyy/wasm3/badge.svg)](https://wapm.io/package/vshymanskyy/wasm3)
6[![GitHub issues](https://img.shields.io/github/issues-raw/wasm3/wasm3?style=flat-square&label=issues&color=success)](https://github.com/wasm3/wasm3/issues)
7[![Tests status](https://img.shields.io/github/workflow/status/wasm3/wasm3/tests/main?style=flat-square&logo=github&label=tests)](https://github.com/wasm3/wasm3/actions)
8[![Fuzzing Status](https://img.shields.io/badge/oss--fuzz-fuzzing-success?style=flat-square)](https://bugs.chromium.org/p/oss-fuzz/issues/list?can=1&q=proj:wasm3)
9[![GitHub license](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/wasm3/wasm3)
10
11The fastest WebAssembly interpreter, and the most universal runtime.
12<sub>Based on [**CoreMark 1.0**](./docs/Performance.md) and [**independent**](https://00f.net/2021/02/22/webassembly-runtimes-benchmarks) benchmarks. Your mileage may vary.</sub>
13
14
15[![Twitter](https://img.shields.io/twitter/follow/wasm3_engine?style=flat-square&color=1da1f2&label=twitter&logo=twitter)](https://twitter.com/wasm3_engine)
16[![Discord](https://img.shields.io/discord/671415645073702925?style=flat-square&logo=discord&color=7289da&label=discord)](https://discord.gg/qmZjgnd)
17[![Telegram](https://img.shields.io/badge/telegram-chat-0088cc?style=flat-square&logo=telegram)](https://t.me/joinchat/DD8s3xVG8Vj_LxRDm52eTQ)
18
19## Getting Started
20
21Here's a small [getting started guide](https://wapm.io/package/vshymanskyy/wasm3). Click here to start:
22
23[![LIVE DEMO](extra/button.png)](https://webassembly.sh/?run-command=wasm3)
24
25
26## Installation
27
28**Please follow the [installation instructions](./docs/Installation.md).**
29
30Wasm3 can also be used as a library for:
31
32[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/python.svg" width="18" height="18" /> Python3](https://github.com/wasm3/pywasm3)33[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/rust.svg" width="18" height="18" /> Rust](https://github.com/Veykril/wasm3-rs)34[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/cplusplus.svg" width="18" height="18" /> C/C++](https://github.com/wasm3/wasm3)35[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/go.svg" width="18" height="18" /> GoLang](https://github.com/matiasinsaurralde/go-wasm3)36[  Zig](https://github.com/alichay/zig-wasm3)
37[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/swift.svg" width="18" height="18" /> Swift](https://github.com/shareup/wasm-interpreter-apple)38[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/dotnet.svg" width="18" height="18" /> .Net](https://github.com/tana/Wasm3DotNet)39[<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/arduino.svg" width="18" height="18" /> Arduino, PlatformIO, Particle](https://github.com/wasm3/wasm3-arduino)
40
41
42## Status
43
44`wasm3` passes the [WebAssembly spec testsuite](https://github.com/WebAssembly/spec/tree/master/test/core) and is able to run many `WASI` apps.
45
46Minimum useful system requirements: **~64Kb** for code and **~10Kb** RAM
47
48`wasm3` runs on a wide range of architectures (`x86`, `x86_64`, `ARM`, `RISC-V`, `PowerPC`, `MIPS`, `Xtensa`, `ARC32`, ...) and [platforms](/platforms):
49- <img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/linux.svg" width="18" height="18" /> Linux,
50<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/windows.svg" width="18" height="18" /> Windows,
51<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/apple.svg" width="18" height="18" /> OS X,
52<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/freebsd.svg" width="18" height="18" /> FreeBSD,
53<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/android.svg" width="18" height="18" /> Android,
54<img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/apple.svg" width="18" height="18" /> iOS
55- <img src="https://cdn.rawgit.com/feathericons/feather/master/icons/wifi.svg" width="18" height="18" /> OpenWrt, Yocto, Buildroot (routers, modems, etc.)
56- <img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/raspberrypi.svg" width="18" height="18" /> Raspberry Pi, Orange Pi and other SBCs
57- <img src="https://cdn.rawgit.com/feathericons/feather/master/icons/cpu.svg" width="18" height="18" /> MCUs: Arduino, ESP8266, ESP32, Particle, ... [see full list](./docs/Hardware.md)
58- <img src="https://cdn.rawgit.com/simple-icons/simple-icons/develop/icons/firefoxbrowser.svg" width="18" height="18" /> Browsers. Yes, using WebAssembly itself!
59- <img src="extra/wasm-symbol.svg" width="18" height="18" /> `wasm3` can execute `wasm3` (self-hosting)
60
61## Advanced features and [post-mvp proposals](https://github.com/WebAssembly/proposals) support
62
63☑ Sign-extension operators
64☑ Non-trapping float-to-int conversions
65Import/Export of Mutable Globals
66☑ Structured execution tracing
67☑ Big-Endian systems support
68☑ Self-hosting
69☑ Gas metering
70☑ Multi-value
71☐ Reference types
72☐ Bulk memory operations
73☐ Tail call optimization
74
75## Motivation
76
77**Why use a "slow interpreter" versus a "fast JIT"?**
78
79In many situations, speed is not the main concern. Runtime executable size, memory usage, startup latency can be improved with the interpreter approach. Portability and security are much easier to achieve and maintain. Additionally, development impedance is much lower. A simple library like Wasm3 is easy to compile and integrate into an existing project. (Wasm3 builds in a just few seconds). Finally, on some platforms (i.e. iOS and WebAssembly itself) you can't generate executable code pages in runtime, so JIT is unavailable.
80
81**Why would you want to run WASM on embedded devices?**
82
83Wasm3 started as a research project and remains so by many means. Evaluating the engine in different environments is part of the research. Given that we have `Lua`, `JS`, `Python`, `Lisp`, `...` running on MCUs, `WebAssembly` is actually a promising alternative. It provides toolchain decoupling as well as a completely sandboxed, well-defined, predictable environment. Among practical use cases we can list `edge computing`, `scripting`, running `IoT rules`, `smart contracts`, etc.
84
85## Used by
86
87[<img src="https://wasmcloud.dev/images/logo.png" height="32" />](https://wasmcloud.dev/) 
88[<img src="/extra/wowcube.png" height="32" />](https://wowcube.com/) 
89[<img src="/extra/scailable.png" height="32" />](https://scailable.net/) 
90[<img src="/extra/blynk.png" height="32" />](https://blynk.io/) 
91[<img src="/extra/iden3.svg" height="32" />](https://www.iden3.io/) 
92[<img src="https://user-images.githubusercontent.com/1506708/114701856-069ce700-9d2c-11eb-9b72-9ce2dfd9f0fb.png" height="32" />](https://github.com/kateinoigakukun/wasmic-ios) 
93[<img src="https://www.balena.io/blog/content/images/2018/10/balena_logo.png" height="32" />](https://github.com/balena-io-playground/balena-wasm3) 
94[<img src="https://krustlet.dev/images/horizontal.svg" height="32" />](https://github.com/deislabs/krustlet-wasm3) 
95[<img src="/extra/shareup_app.svg" height="24" />](https://shareup.app/blog/introducing-shareup/) 
96[<img src="/extra/txiki_js.png" height="32" />](https://github.com/saghul/txiki.js) 
97
98## Further Resources
99
100[Demos](./docs/Demos.md)
101[Installation instructions](./docs/Installation.md)
102[Cookbook](./docs/Cookbook.md)
103[Troubleshooting](./docs/Troubleshooting.md)
104[Build and Development instructions](./docs/Development.md)
105[Supported Hardware](./docs/Hardware.md)
106[Testing & Fuzzing](./docs/Testing.md)
107[Performance](./docs/Performance.md)
108[Interpreter Architecture](./docs/Interpreter.md)
109[Logging](./docs/Diagnostics.md)
110[Awesome WebAssembly Tools](https://github.com/vshymanskyy/awesome-wasm-tools/blob/main/README.md)
111
112### License
113This project is released under The MIT License (MIT)
114