WasmEdge (previously known as SSVM) is a lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. It is the fastest Wasm VM today. WasmEdge is an official sandbox project hosted by the CNCF. Its use cases include serverless apps, embedded functions, microservices, smart contracts, and IoT devices.
🚀 Install WasmEdge
🤖 Build and contribute to WasmEdge
⌨️ Run a standalone Wasm program or a JavaScript program from CLI
🔌 Embed a Wasm function in your Node.js, Go, or Rust apps
🛠 Manage and orchestrate Wasm runtimes using Docker tools, data streaming frameworks, and blockchains
The WasmEdge Runtime provides a well-defined execution sandbox for its contained WebAssembly bytecode program. The runtime offers isolation and protection for operating system resources (e.g., file system, sockets, environment variables, processes) and memory space. The most important use case for WasmEdge is to safely execute user-defined or community-contributed code as plug-ins in a software product (e.g., SaaS, software-defined vehicles, edge nodes, or even blockchain nodes). It enables third-party developers, vendors, suppliers, and community members to extend and customize the software product.
Checkout the use cases of WasmEdge.
- Paper: A Lightweight Design for High-performance Serverless Computing, published on IEEE Software, Jan 2021. https://arxiv.org/abs/2010.07115
- Article: Performance Analysis for Arm vs. x86 CPUs in the Cloud, published on infoQ.com, Jan 2021. https://www.infoq.com/articles/arm-vs-x86-cloud-performance/
WasmEdge can run standard WebAssembly bytecode programs compiled from C/C++, Rust, Swift, AssemblyScript, or Kotlin source code. It also runs JavaScript through an embedded QuickJS engine. WasmEdge supports all standard WebAssembly features and proposed extensions. It also supports a number of extensions tailored for cloud-native and edge computing uses (e.g., the WasmEdge Tensorflow extension).
WasmEdge extensions to WebAssembly are typically available to developers as Rust SDKs or JavaScript APIs.
WasmEdge and its contained wasm program can be started from the CLI as a new process, or from a existing process. If started from an existing process (e.g., from a running Node.js or Go or Rust program), WasmEdge will simply run inside the process as a function. Currently, WasmEdge is not yet thread-safe. In order to use WasmEdge in your own application or cloud-native frameworks, please refer to the guides below.
- Embed WasmEdge into a host application
- Orchestrate and manage WasmEdge instances using container tools
- Call native host functions from WasmEdge
If you would like to contribute to the WasmEdge project, please refer to our CONTRIBUTING document for details. If you are looking for ideas, checkout our wish list!
If you have any questions, feel free to open a GitHub issue on a related project or to join the following channels:
- Mailing list: Send an email to WasmEdge@googlegroups.com
- Slack: Join the #WasmEdge channel on the CNCF Slack
- Twitter: Follow @realwasmedge on Twitter