WasmEdge 0.9.1 发布! 更好的 networking 支持与开发者体验、安卓支持 WasmEdge 0.9.1 发布了!此版本集成了高性能 networking、JavaScript 流式 SSR 和 Fetch API 支持、新的 bindgen 框架、安卓和 OpenHarmony 操作系统支持、扩展的 Kubernetes 支持以及改进的内存管理。
- WebAssembly 扩展
- 流式服务端渲染(SSR)函数
- 安卓和 OpenHarmony
- Kubernetes
- 漏洞修复和性能提升
Rust 和 JavaScript 的高性能 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。
- Rust 的异步 HTTP 客户端和服务器示例。
- JavaScript 的异步 HTTP 客户端和服务器示例。
WasmEdge-Bindgen
标准的 WebAssembly 规范仅支持一些开箱即用的简单数据类型。它甚至不支持常见的数据类型,如字符串和数组。要将丰富的数据类型从 Host 应用程序传递给 WebAssembly 函数,我们需要 bindgen 解决方案来将复杂类型转换为简单类型。例如,一个 bindgen 解决方案可以将一个字符串转换为两个整数:一个内存指针和一个长度。
在浏览器世界中,emscripten 工具链处理 JavaScript 调用基于 C 的 WebAssembly 函数;wasm-bindgen 工具链处理 JavaScript 调用基于 Rust 的 WebAssembly 函数。然而,它们都不能很好地在云原生环境中的 WASI 应用程序工作。
因此,WasmEdge 团队创建了 wasmedge-bindgen 框架来支持 WASI 环境中的复杂参数。目前支持 Go host app 调用 Rust 编译的 WebAssembly 函数。具体请查看教程。
【runtime|WasmEdge 0.9.1 发布(更佳 networking 支持与开发者体验、安卓支持)】同时,我们也在开发 wasmedge-bindgen 对 Rust、C、JavaScript / Node.JS 和 Python host app 的支持。
Multi-memories 提案
WasmEdge 0.9.1 支持 multi-memories 提案。此扩展通过在单个 WebAssembly 模块中启用多个内存,使 WebAssembly 执行更快(即更快地复制值)、更安全,且隔离更佳。
如果要启用 multi-memories 提案,请在
wasmedgec
和 wasmedge
工具中使用 --enable-multi-memory
命令行。支持更多操作系统和设备 除了基于 seL4 的嵌入式和实时设备,WasmEdge 现在已被移植到更多的边缘设备平台。 最大的边缘设备平台是安卓,现在安卓已经完全支持 WasmEdge 0.9.1。
- 在安卓平台编译和构建 WasmEdge 。 https://wasmedge.org/book/en/extend/build_for_android.html
- 在安卓上使用 Rust + WebAssembly 用于高性能 AI 推理 (mobilenet 图片识别) https://wasmedge.org/book/en/os/android/cli.html
- 在安卓 NDK shell 中封装一个 WebAssembly 应用。 这与第二个是相同的 TensorFlow TFLite 图片识别/推理 Wasm 应用程序,但包在你自己的应用中。 https://wasmedge.org/book/en/os/android/ndk.html
- 创建一个带有嵌入式 WasmEdge Runtime 的安卓 APK 应用。WebAssembly 函数将你的应用变为一个面向其他开发者的平台。 https://wasmedge.org/book/en/os/android/apk.html
此外,在 OpenHarmony 操作系统上增加对 WasmEdge 的支持的开发工作已启动。OpenHarmnoy 是新的手机和物联网设备操作系统。
最后,WasmEdge 0.9.1 已经被 Windows 用户的 windows 包管理器收录。 使用以下命令行就可以在 Windows 上安装 WasmEdge。
winget install wasmedge
Kubernetes WasmEdge 完全符合 OCI 标准。这意味着 WasmEdge 应用可以由标准容器工具存储、管理和执行。 WasmEdge 本身是一个安全的沙箱容器。
在 Kubernetes 集群中,容器化的 WasmEdge 应用程序可以在同一个集群中与 Linux 容器(例如 Docker 容器应用程序)并行管理和编排。 在 0.9.1 版本中,WasmEdge 得到边缘优化的 Kubernetes 框架的正式支持,如 OpenYurt 和 SuperEdge。
漏洞修复和性能提升 WasmEdge 每次版本发布都有长串的漏洞修复和性能提升清单。这次 0.9.1 版本也不例外。
- 通过在生产环境的应用程序中大量使用,已发现并修复了大量内存泄漏问题。
- 减少指令类的内存使用量,这进一步减少了 WasmEdge 在边缘设备上的占用空间。
- WasmEdge 执行现在可以被外部信号中断和恢复。 此功能支持更加规范的嵌入式函数。
- 对 WasmEdge CLI 帮助信息进行了美化。
感谢所有贡献者!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.
推荐阅读
- runtime|【4.12技术直播】WebAssembly 从浏览器到服务端,一套代码走遍天下|了不起的开发者
- WebAssembly|WebAssembly 用在了哪里(18个激动人心的 Wasm 初创公司)
- javascript|WebAssembly完全入门——了解wasm的前世今身
- html与c交互|html与c交互 webassembly,c – 是否可以使用WebAssembly提交HTTP请求()
- Android 5.0 源代码结构
- GetPathFromUri4kitkatAndroid 4.4 kitkat以上及以下根据uri获取路径的方法
- ANDROID N 分屏设置
- android 3G移植
- Android Studio ADB响应失败解决方法