WasmEdge Runtime (formerly SSVM) is a lightweight high-performance WebAssembly (WASM) VIRTUAL machine optimized for edges. WasmEdge can be used in severless cloud functions, SaaS, blockchain smart contracts, Internet of Things, automotive real-time software applications and many more scenarios.
WasmEdge was recently accepted as a sandbox project by the CNCF Foundation. This is the first open source WebAssembly Runtime project to be hosted by CNCF worldwide. As the Mission Critical lightweight Runtime for Edge Cloud, WasmEdge is expected to play an important role in CNCF’s open source cloud computing space.
Source code: github.com/WasmEdge/Wa…
start
Twenty-five years ago, the Java programming language was originally invented as a browser widget. But Java is finally taking off on the server side. Later, JavaScript repeated the same migration path from browser to server/cloud via Node.js. Today, once again, WebAssembly is moving from the browser to the cloud. WasmEdge was at the forefront of this historic migration.
History is always similar, but never repeats itself. While the migration of WebAssembly from the browser to the cloud has been driven by the same factors as Java and JavaScript before it, such as adoption by young developers and the popularity of the programming language Rust, more importantly, WebAssembly is also well suited to modern cloud computing. In particular, WebAssembly’s lightweight design and advanced security model, coupled with the memory security of the Rust language, make it well suited for high-performance, mission critical applications on the cloud. Especially in edge cloud, iot devices and cars. With traditional containers and virtual machines too bulky and slow, WebAssembly could become the leading Runtime technology.
WasmEdge, formerly known as SSVM, is an open source WebAssembly virtual machine optimized for edge devices. WasmEdge features advanced AOT compiler support and is the fastest runtime on the market today, according to a research paper published in IEEE Software magazine.
Key features of WasmEdge
WasmEdge is fully compliant with the W3C WebAssembly standard. Out of the box, standard languages and compiler toolchains such as LLVM, Rustc, and Emscripten are supported. What sets WasmEdge apart is its support for both standard and non-standard extensions, especially those related to edge computing.
First, WasmEdge supports W3C optional WebAssembly features and proposals, such as the WebAssembly System Interface (WASI) specification, reference types, bulk memory operations, and SIMD. WasmEdge is also exploring the WASI-Socket proposal to support network access in WebAssembly programs.
In addition, WasmEdge supports non-standard extensions designed for specific application scenarios.
- Tensorflow. Developers can use a simple Rust API, write a Tensorflow reasoning function, and then run it safely at native speed inside WasmEdge. We are also working to support other AI frameworks. (Welcome to WasmEdge Community)
- Storage. The WasmEdge storage interface allows WebAssembly programs to read and write key-value stores.
- Command interface. WasmEdge enables Webassembly functions to execute commands native to the host operating system. It supports passing parameters, environment variables, STDIN/STDOUT Pipes, and host access security policies.
- The etheric fang. WasmEdge Ewasm extension supports Ethereum smart contracts compiled into WebAssembly. It is the leading implementation of Ethereum-style WebAssembly (Ewasm).
- Substrate. Pallet Lets WasmEdge act as ethereum Smart contract implementation engine on any Substrate based blockchain.
Finally, WasmEdge is a cloud-native WebAssembly VM. It supports the OCI (Open Container Initiative) specification, which enables cloud-native choreography tools like Kubernetes to manage WasmEdge instances.
WasmEdge was previously known as SSVM.
Application scenarios
WasmEdge is optimized for edge and embedded application scenarios. It can turn software and hardware products into developer platforms. The following are some specific application scenarios.
- Jamstack applicationConsists of a static front end with JavaScript to interact with a back-end API. It’s all the rage nowModern Web application architecture.Front-end static files can be distributed via CDN and back-end functions can be hosted on edge nodes. Based on the cloudWasmEdgeHost secure and high-performance back-end Serverless functions for Jamstack App, especially on edge cloud.
- Example: Add watermark to any picture
- Case: Serverless Tensorflow function based on Tencent Cloud
- SaaS applicationIt is often necessary to adjust or customize for “edge scenarios” as required by the customer. With WasmEdge, SaaS applications can directly embed and execute user-submitted code as part of a workflow (for example, as a callback function to handle events from SaaS applications).
- Case study: The Feishu application platform can respond to messages (such as chatbots) by embedding user-submitted serverless functions in WasmEdge.
- Example: WasmEdge runs custom code to handle events in the IoT streaming data framework YoMo.
- WasmEdge is adapted for useEdge of the deviceA variety of embedded and real-time operating systems. Developers can write high-performance applications once in Rust or C to run safely on many edge device platforms.
- RIOS Lab example: RISC-V stack at RIOS Lab.
- In progress: Porting WasmEdge to SeL4 real-time operating system
- Planned: WasmEdge can be used as an RTOS code Runtime for software modules in autonomous vehicles.
- Blockchain smart contracts are user-submitted code that is executed by all nodes in the network. WasmEdge was adopted by the head of the blockchain project as a smart contract execution engine. Case: EWASM smart contract on Substrate and Polkadot.
Looking to the future
The WebAssembly ecosystem is still in its early stages. WasmEdge is hosted by CNCF and is intended to be an open source “reference implementation” for WebAssembly and its edge-related extensions. The community can first experiment with new extension ideas on WasmEdge and then standardize successful extensions. The WasmEdge community will also contribute to the compiler toolchain and SDK to support WebAssembly and WasmEdge extensions that allow more programming languages.
Join us for the WebAssembly revolution!
👉 Slack group: Join CNCF Slack Channel and search WasmEdge to join WasmEdge Slack Channel.
👉 To subscribe, email: [email protected]
👉 Become a Contributor: Check out the contribution Inspiration list to start contributing to WasmEdge