WasmEdge 0.9.1 发布了!此版本集成了高性能 networking、JavaScript 流式 SSR 和 Fetch API 支持、新的 bindgen 框架、安卓和 OpenHarmony 操作系统支持、扩展的 Kubernetes 支持以及改进的内存管理。
WasmEdge 目标是支持所有标准和可选的标准 WebAssembly 扩展提案。它也支持对云原生使用场景的非标准和试验性扩展,例如 networking 和数据传递。
WasmEdge 从 0.8.2 版本开始就原生支持 Networking socket 。但是,使用同步 networking sockets,应用程序一次只能处理一个连接。因此高性能的 CPU 大部分时间处于空闲状态,等待数据从 network 缓慢流入。
在 0.9.1 中,WasmEdge 通过在 Rust 和 JavaScript 应用程序中支持非阻塞 I/O ,从而显著提高了 networking 性能。通过非阻塞 I/O,WasmEdge 程序可以一次打开多个连接,并在接收到数据时异步处理来自这些连接的数据。 同时,WasmEdge 为非阻塞 network I/O 提供了 Rust API 和 JavaScript API。
通过 JavaScript 中的非阻塞 network I/O,我们现在可以在 WasmEdge 中运行流式 SSR 函数并使用 JavaScript Fetch API。 流式 SSR 和 Fetch 通常用于边缘 serverless 函数。
标准的 WebAssembly 规范仅支持一些开箱即用的简单数据类型。它甚至不支持常见的数据类型,如字符串和数组。要将丰富的数据类型从 Host 应用程序传递给 WebAssembly 函数,我们需要 bindgen 解决方案来将复杂类型转换为简单类型。例如,一个 bindgen 解决方案可以将一个字符串转换为两个整数:一个内存指针和一个长度。
在浏览器世界中,emscripten 工具链处理 JavaScript 调用基于 C 的 WebAssembly 函数;wasm-bindgen 工具链处理 JavaScript 调用基于 Rust 的 WebAssembly 函数。然而,它们都不能很好地在云原生环境中的 WASI 应用程序工作。
因此,WasmEdge 团队创建了 wasmedge-bindgen 框架来支持 WASI 环境中的复杂参数。目前支持 Go host app 调用 Rust 编译的 WebAssembly 函数。具体请查看教程。
同时,我们也在开发 wasmedge-bindgen 对 Rust、C、JavaScript / Node.JS 和 Python host app 的支持。
WasmEdge 0.9.1 支持 multi-memories 提案。此扩展通过在单个 WebAssembly 模块中启用多个内存,使 WebAssembly 执行更快(即更快地复制值)、更安全,且隔离更佳。
如果要启用 multi-memories 提案,请在 wasmedgec
和 wasmedge
工具中使用 --enable-multi-memory
命令行。
除了基于 seL4 的嵌入式和实时设备,WasmEdge 现在已被移植到更多的边缘设备平台。 最大的边缘设备平台是安卓,现在安卓已经完全支持 WasmEdge 0.9.1。
WasmEdge 和其 TensorFlow 扩展已经在 ARM64 硬件设备上的 Linux 和 Android 操作系统都得到完全支持。
此外,在 OpenHarmony 操作系统上增加对 WasmEdge 的支持的开发工作已启动。OpenHarmnoy 是新的手机和物联网设备操作系统。
最后,WasmEdge 0.9.1 已经被 Windows 用户的 windows 包管理器收录。 使用以下命令行就可以在 Windows 上安装 WasmEdge。
winget install wasmedge
WasmEdge 完全符合 OCI 标准。这意味着 WasmEdge 应用可以由标准容器工具存储、管理和执行。 WasmEdge 本身是一个安全的沙箱容器。
在 Kubernetes 集群中,容器化的 WasmEdge 应用程序可以在同一个集群中与 Linux 容器(例如 Docker 容器应用程序)并行管理和编排。 在 0.9.1 版本中,WasmEdge 得到边缘优化的 Kubernetes 框架的正式支持,如 OpenYurt 和 SuperEdge。
WasmEdge 每次版本发布都有长串的漏洞修复和性能提升清单。这次 0.9.1 版本也不例外。
虽然 WasmEdge 0.9.1 是一个小的版本更新,但是有着对开发者而言非常重要的特性。快来查看吧!
感谢所有贡献者!L-jasmine, yanganto, AvengerMoJo, HangedFish, harytary, KernelErr, juntao, MileyFu, O3OI, Saksham Sharma, Shen-Ta Hsieh(BestSteve), SAtacker, Sonofmagic, srenatus, 0xE282B0, vdice, apepkuss, 0yi0, q82419, chenyukang, st9549898, sakhshm26, dreammyboy, zephoon, megrax, alabulei1, alittlehorse, baiyutang, hydai, javadoors, jaredliw, Vinson-Ben, majinghe, meoww-bot, wangbyby, pasicopan, peterbi, villanel, DarumaDocker, wangyuan249, wby, wolfishLamb, sunnywa.