WasmEdge runtime (曾名 SSVM)是一个轻量级高性能 WebAssembly (WASM) 虚拟机,为边缘进行了优化。WasmEdge 可以应用于 severless 云函数、SaaS、区块链智能合约、物联网、汽车实时软件应用等多种场景。
(此处本应有 WasmEdge logo,但是 logo 还在设计,敬请期待 )
WasmEdge 最近被 CNCF 基金会接受为沙箱项目。这是全球范围内首个被 CNCF 纳入托管的开源 WebAssembly runtime 项目。我们希望,WasmEdge 作为边缘云的 mission critical 轻量级runtime,未来能在 CNCF 的开源云计算领域发挥重要作用。
源代码:https://github.com/WasmEdge/WasmEdge
开始
二十五年前,Java 编程语言最初是作为浏览器小组件被发明出来。但 Java 最终是在服务器端大获成功。后来,JavaScript 通过 Node.js 重复了同样的从浏览器到服务器/云的迁移路径。今天,再一次,WebAssembly 正在从浏览器向云迁移。WasmEdge 在这一历史性迁移中,走到了前沿。
历史总是相似的,但从不重演。虽然 WebAssembly 从浏览器迁移到云的驱动因素与之前的 Java 和 JavaScript 相同,例如得到年轻开发者采用,受欢迎的编程语言 (Rust), 但更重要的是,WebAssembly 也非常适合处理现代云计算工作。特别是,WebAssembly 的轻量级设计和先进的安全模型,加上 Rust 语言的内存安全性,使其很好地适用云上的高性能且使命关键(mission critical) 的应用程序,尤其是在边缘云、物联网设备和汽车上。传统的容器和虚拟机太笨重且速度太慢,WebAssembly 可能成为领先的 runtime 技术。
WasmEdge,曾用名 SSVM,是一个开源 WebAssembly 虚拟机,针对边缘设备进行了优化。根据 IEEE Software 杂志上发表的一篇研究论文,WasmEdge 具有先进的 AOT 编译器支持,是当今市场上最快的 runtime。
WasmEdge 的关键特性
WasmEdge 与 W3C WebAssembly 标准完全兼容。开箱即用,得到标准语言和编译器 工具 链的支持,例如 LLVM、Rustc 和 emscripten。WasmEdge 的与众不同之处在于它对标准与非标准扩展的支持,尤其是在边缘计算方面相关的扩展。
首先,WasmEdge 支持 W3C 可选的 WebAssembly 特性和提案,例如 WebAssembly 系统接口(WASI)规范、引用类型、大容量内存操作和 SIMD。WasmEdge 也在探索 wasi-socket 提案,以支持 WebAssembly 程序中的网络访问。
此外,WasmEdge 支持针对特定应用场景设计的非标准扩展。
-
Tensorflow。开发者可以使用简单的 Rust API,编写 Tensorflow 推理函数,然后在 WasmEdge 内部以本机速度安全地运行该函数。我们也正在努力支持其他 AI 框架。(欢迎加入 WasmEdge 社区)
-
Storage。WasmEdge 存储接口允许 WebAssembly 程序读取和写入键值存储。
-
命令接口。WasmEdge 让 Webassembly 函数可以执行宿主机操作系统的本地命令。它支持传递参数、环境变量、STDIN/STDOUT pipes 和主机访问的安全策略。
-
以太坊。WasmEdge Ewasm 扩展支持编译为 WebAssembly 的以太坊智能合约。它是以太坊风格的 WebAssembly (Ewasm) 的领先实现。
-
Substrate。Pallet 让 WasmEdge 能在任何基于 Substrate 的区块链上充当以太坊智能合约执行引擎。
最后,WasmEdge 是一个云原生的 WebAssembly VM。它支持 OCI(开放容器计划)规范,这能够让像 Kubernetes 这样的云原生编排工具管理 WasmEdge 实例。
WasmEdge 之前名为 SSVM。
应用场景
WasmEdge 为边缘和嵌入式应用场景优化。它能把软件及硬件产品转变为开发者平台。下面是一些具体的应用场景。
-
Jamstack 应用由带有 JavaScript 的静态前端组成,用于与后端 API 进行交互。这是现在最流行的现代 web 应用程序架构。前端静态文件可以通过 CDN 分发,后端函数可以托管在边缘节点上。基于云的 WasmEdge 为Jamstack app 托管安全且高性能的后端 Serverless 函数,特别是在边缘云上。
-
案例:在任意图片上增加水印
-
案例:基于腾讯云的serverless Tensorflow函数
-
-
SaaS 应用常常需要按客户要求为“边缘场景”调整或者定制。有了 WasmEdge,SaaS 应用程序可以直接嵌入和执行用户提交的代码作为工作流的一部分(例如,作为处理来自 SaaS 应用程序的事件的回调函数)。
-
案例:飞书应用平台可以通过 WasmEdge 嵌入用户提交的 serverless 函数来回复消息 (例如聊天机器人)。
-
示例:WasmEdge 运行自定义代码以处理 IoT 流数据框架 YoMo 中的事件。
-
-
WasmEdge 被调整为适用边缘设备的各种嵌入式和实时操作系统。开发者只需用 Rust 或 C 编写一次高性能应用程序,就能在许多边缘设备平台上安全地运行。
-
RIOS Lab示例:RIOS 实验室的 RISC-V 堆栈。
-
进行中:将 WasmEdge 移植到 SeL4 实时操作系统
-
计划中:WasmEdge 可用作自动驾驶汽车中软件模块的 RTOS 代码 runtime。
-
-
区块链智能合约由用户提交的代码,由网络中的所有节点执行。WasmEdge 得到了头部的区块链项目采用,作为智能合约执行引擎。案例:Substrate 和 Polkadot 上的EWASM 智能合约。
展望未来
WebAssembly 生态仍处于早期阶段。WasmEdge 由 CNCF 托管,旨在成为 WebAssembly 及其边缘相关扩展的开源“参考实现”。社区可以首先在 WasmEdge 上试验新的扩展想法,然后将成功的扩展标准化。WasmEdge 社区还将为编译器工具链和 SDK 做出贡献,以支持允许更多编程语言的 WebAssembly 和 WasmEdge 扩展。
加入 WebAssembly 革命吧!
Slack 组群:加入 CNCF slack channel,搜索 WasmEdge 加入 WasmEdge Slack Channel。
订阅邮件:发邮件至 WasmEdge@googlegroups.com
成为贡献者: 查看贡献灵感清单开始为 WasmEdge 做贡献
猜你喜欢: