WasmEdge 0.9.1 发布! 更好的 networking 支持与开发者体验、安卓支持
WasmEdge 0.9.1 发布了!此版本集成了高性能 networking、JavaScript 流式 SSR 和 Fetch API 支持、新的 bindgen 框架、安卓和 OpenHarmony 操作系统支持、扩展的 Kubernetes 支持以及改进的内存管理。
- WebAssembly 扩展
- 流式服务端渲染(SSR)函数
- 安卓和 OpenHarmony
- Kubernetes
- 漏洞修复和性能提升
WebAssembly 扩展
WasmEdge 目标是支持所有标准和可选的标准 WebAssembly 扩展提案。WasmEdge 也支持对云原生使用场景的非标准和试验性扩展,例如 networking 和数据传递。
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。
通过 JavaScript 中的非阻塞 network I/O,我们现在可以在 WasmEdge 中运行流式 SSR 函数并使用 JavaScript Fetch API。 流式 SSR 和 Fetch 通常用于边缘 serverless 函数。
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 函数。具体请查看教程。
同时,我们也在开发 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
WasmEdge 和其 TensorFlow 扩展已经在 ARM64 硬件设备上的 Linux 和 Android 操作系统都得到完全支持。
此外,在 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 帮助信息进行了美化。
虽然 WasmEdge 0.9.1 是一个小的版本更新,但是有着对开发者而言非常重要的特性。快来查看吧!
感谢 WasmEdge 的所有贡献者!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.

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Linux 败局已定——驳 FreeBSD 大败局
看过我上一篇文章《Linux 社区已经成为了一个肮脏的泥潭》以及上上一篇文章《Linux 与苦难哲学》的读者都知道, Linux 从开发者到社区乃至于用户都是充斥着难以言表的一种骄傲。仿佛自己是真正的UNIX 后裔,是开源界的唯一真理,谁拥有 Linux ,谁会 Linux ,谁就掌握话语权。 如此过了二十余年,物是人非,当初的 Linux 走到了今天这个地步,无论从何种意义上来说,都是一种错位。 王垠过去写了一篇 Linux 劝进文——完全用 Linux 工作,后又发了一篇 Linux 劝退文——谈 Linux ,Windows 和 Mac。人的认识是一个螺旋式上升的过程,当初的错位必将在日后得到修正。 Linux 也如是。 不断的有 Arch Linux 用户到处宣传 Arch Linux 的优美。是啊,如此优美的一个系统!Nano,Vi 都依赖 Glibc,不更新就意味着你用不了这些再基础不过的基础软件,强制性地要求你更新,他们才不在乎更新会不会导致你的系统挂掉——反正我又不能给你蓝屏。我不知道这些 Arch Linux 劝进文的作者多年后会不会像王垠一样,能够坦诚的承认自己的错...
-
下一篇
Fabric.js 5.2.0 & 5.2.1 发布,JavaScript Canvas 库
Fabric.js 5.2.0 & 5.2.1 已经发布。Fabric.js 是一款简单而强大的 JavaScript Canvas 库,在 HTML5 Canvas 元素之上提供了互动的对象模型,同时还包含 Canvas-to-SVG 解析器。 使用 Fabric.js 可以创建和填充画布上的对象,从简单的几何图形到成百上千路径组成的复杂图形。可以通过鼠标轻松的移动、缩放和旋转这些对象,修改它们的属性(颜色、透明度,层叠顺序)等等。 v5.2.0更新内容如下: feat(fabric.Object): isType 接受多个type#7715 chore():用 Array.prototype.slice() 替换已弃用的 String.prototype.substr()#7696 chore():使用 Array.isArray 而不是 ie6+ workarounds#7718 MINOR:feat(fabric.Canvas):添加getTopContext方法以公开内部的contextTop#7697 fix(fabric.Object) 在尝试在缓存上渲染之前添加...
相关文章
文章评论
共有0条评论来说两句吧...