WasmEdge 0.9.0 发布,提升性能、稳定性与互操作性

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 中是默认启用的。

如果你想禁用其中一些特性,你可以在 wasmedgewasmedgec中使用--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。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/4532842/blog/5377231

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。