WasmEdge 0.9.0 发布,提升性能、稳定性与互操作性
source link: https://my.oschina.net/u/4532842/blog/5377231
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
WasmEdge 0.9.0 发布啦。新版的 WasmEdge 迎着新年的脚步走来了!是时候为大家揭晓 WasmEdge 的新特性,一起解锁 2022年的新技能吧!
此版本的 WasmEdge 专注于云原生基础架构的性能、稳定性以及与互操作性。 具体来说,WasmEdge 现在支持:
SIMD 和其它 WebAssembly 提案
WasmEdge 从 0.7.0 版本开始支持 WebAssembly SIMD(单指令多数据)提案。 从 WasmEdge 0.9.0开始,它默认启用 SIMD。
对于具有多个 CPU 内核的现代设备,SIMD 允许数据处理程序充分利用 CPU。 SIMD 可以大大提高数据应用程序的性能。
除了 SIMD 规范之外,WasmEdge 0.9.0 还增加了对 W3C 目前正在考虑的许多 WebAssembly 提案的支持,包括Import/Export mutable globals 提案、Non-trapping float-to-int conversions 提案、Sign-extension operators 提案和Multi-value提案。 这些提案在 WasmEdge 中是默认启用的。
如果你想禁用其中一些特性,你可以在 wasmedge
和 wasmedgec
中使用--disable-proposal-name
。
增强的 JavaScript 支持
在 WebAssembly runtime 中运行 JavaScript 程序有着非常明显的好处。 WasmEdge 可以充当与 Linux 应用程序容器并行运行的安全应用程序容器,但只消耗一小部分资源并提供更好的可移植性和安全性。
WasmEdge 不仅支持 JavaScript 应用程序,还支持将 JavaScript 与 Rust 等高性能语言混合使用。在 WasmEdge 0.9.0 版本中,我们增强了对 JavaScript 生态系统的支持。 WasmEdge 现在支持重用 ES6 模块 、CommonJS (CJS) 模块 和 NPM 模块。我们还有一个运行 React SSR JavaScript 函数的示例 。
随着 WasmEdge networking socket API 及其 JavaScript runtime 的持续优化,我们的目标是在不久的将来支持复杂的应用场景,例如 React SSR Streaming。
虽然 WasmEdge 已经是性能很好的 WebAssembly runtime 之一,但我们也知道在某些特殊情况下,WasmEdge 可能表现不佳。 其中一种情况是在 WasmEdge 中运行 JavaScript 解释器。 但现在这种情况发生改变了! WasmEdge 0.9.0 是 QuickJS 解释器引擎测试中的花费时最短的 WebAssembly runtime。
另一个与性能相关的更改是我们在 WasmEdge 0.9.0 中将 runtime 的统计指标收集和报告设为可选。 如果你想查看 WasmEdge 的性能统计信息,可以使用以下命令行选项。
- 使用
--enable-time-measuring
展示执行时间。 - 使用
--enable-gas-measuring
来显示使用的 gas 量。 - 使用
--enable-instruction-count
来展示执行的命令数量。 - 或者使用
--enable-all-statistics
来启动所有的数据选择。
改进的 C API
C API 在 WasmEdge 0.9.0 有很多改变和提升。 我们更新了与 host 函数相关的 API、Wasm 类型上下文和实例创建 API。 我们重命名了 Interpreter API 并简化了 WASI 创建和初始化。 我们还广泛重构了 C API 的内部实现以提高性能。
C API 中也有一些新特性。一个新的 WasmEdge C API 用于列出来自 AST 模块上下文的导入和导出。 开发者可以查询WASI 和 AOT 编译器相关配置。
有关 C API 更改内容的详细说明,请查看 changelog。
Universal wasm binary
WasmEdge 的大部分原始性能来自其高度优化的 AOT 编译器。 开发者可以使用 wasmedec XYZ.wasm XYZ.so
命令或使用 SDK 从 AOT 编译器创建 Linux 原生 .so
文件。 然而,虽然 .so
文件的性能要高得多,但它不可移植。 从 0.9.0 开始,WasmEdge AOT 编译器工具将原生二进制文件包装到原始 wasm 文件中的自定义部分。 它允许 Wasm 应用程序在不受支持的操作系统或平台上从 AOT 编译优雅地降级到解释器执行。
开发者可以使用 wasmedgec XYZ.wasm XYZ.wasm
来创建通用的 wasm 二进制文件 。
有了这个特性,开发者可以在其它 wasm runtime 像运行常规 wasm 文件一样运行由 WasmEdge AOT 编译器生成的 wasm 文件。 但是如果你使用 WasmEdge 来运行 wasm 文件,WasmEdge 将从自定义部分中提取原生二进制文件并执行它。
容器和 k8s 工具
云原生 WebAssembly 应用程序可以由容器工具管理,并在 k8s 集群中与 Linux 容器应用并行运行。 作为最受欢迎的 OCI runtime 项目之一,crun 增加了内置的 WasmEdge 0.9.0 支持,云原生 WebAssembly 愿景终于成为现实。
要了解如何利用 Kubernetes、Docker、containerd 和 CRI-O 等容器工具来编排、管理和运行轻量级 WebAssembly 应用程序,请参阅文章-使用容器和 Kubernetes 工具管理 WebAssembly 应用程序。
了解更多有关 WasmEdge 0.9.0 的相关信息,请查看我们的 changelog。
最后,我们要感谢社区成员的贡献,包括 @q82419, @ibmibmibm, @hydai, @SAtacker, @juntao, @LFsWang, @yanganto, @apekuss, @alabulei1, @dm4, @0yi0, @nhynes, @eee4017, @LuiHsu, @avinal, @MileyFu, @O3OI, @vss96, @kenvifire, @ZhangHanDong, @CaptainVincent, @slidoooor, @robnanarivo, @Peter-Chang, @PsiACE, @spider0061, @Jayita10, @actly, @William-Mou, @L-jasmine, @chenyukang, @Yoname, @MaaKhan711635, @tpmccallum。
Recommend
-
6
在 WasmEdge 中使用 Docker 工具管理 WebAssembly 应用 作者介绍:Michael Yuan 是 CNCF 沙箱项目 WasmEdge Maintainer ,拥有多年开源软件开发经验,出版过 5 本技术书籍。 这篇文章将演示如何通过利用 DockerH...
-
11
Manage WebAssembly Apps in WasmEdge Using Docker Tools • 8 minutes to readDevelopers can leverage Docker tools such as the DockerHub and CRI-O to deploy, manage, and run lightweight WebAssembly applications in
-
7
通过 WasmEdge 嵌入WebAssembly 函数扩展 Golang 应用GO 编程语言(Golang)是一种易于使用且安全的编程语言,可编译为高性能的原生应用程序。Golang 是编写软件基础设施和框架的非常流行...
-
9
用 WasmEdge 在 WebAssembly 中运行 JavaScript WebAssembly 最初是作为“浏览器中的 JavaScript 替代品”。其想法是在浏览器中安全地运行编译自 C/C++ 或 Rust 等语言的高性能应用程序。在浏览器中,WebAssembly 和 JavaScript 并列运行。 图 1....
-
9
用 WasmEdge 运行JavaScript 程序 WasmEdge 让 JavaScript 可以在共享库调用本地函数。 在前三篇文章中,我解释了为什么以及如何在 WebAssembly 沙箱中运行 JavaScript 程序。同时,还讨论了如何使用 Rust 为
-
8
边缘的容器化 — WasmEdge 与 seL4 RTOS 本研发基于开源项目 WasmEdge 和
-
8
在 OpenHarmony 开发板上运行 WasmEdge(WebAssembly Runtime) 作者:翁纯仪,WasmEdge Contributor 在 OpenHarmony OS 上运行 WasmEdge,能够改善开发者的开体验。 移动与 IoT 设备的特点是资源受限...
-
5
本文的内容源自 Sven Pfennig 于 2022 年 1 月在 WasmEdge Community Meeting 做的分享。在这次分享中,Pfennig 介绍了自己为什么要在 K8s 集群中运行 WebAssembly 应用程序。
-
7
Nebula Graph 发布企业版 v3.1.0,性能稳定性数倍提升,赋能企业深入挖掘数据关联价值-品玩 Nebula Graph 发布企业版 v3.1.0,性能稳定性数倍提升,赋能企业深入挖掘数据关联价值 1小时前 日前,全世界领先的图...
-
4
介绍 HandlerHandler 是一个常见的组件,它在 Android 应用程序开发中被广泛使用。Handler 可以将消息传递给主线程,使开发者能够在子线程中进行长时间的耗时操作,同时也避免了因在主线程中更新 UI 而出现的...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK