内容简介:WasmEdge 0.9.0 发布啦。新版的 WasmEdge 迎着新年的脚步走来了!是时候为大家揭晓 WasmEdge 的新特性了,一起解锁 2022年的新技能吧! 此版本的 WasmEdge 专注于云原生基础架构的性能、稳定性以及与互操作性。 ...
WasmEdge 0.9.0 发布啦。新版的 WasmEdge 迎着新年的脚步走来了!是时候为大家揭晓 WasmEdge 的新特性了,一起解锁 2022年的新技能吧!
此版本的 WasmEdge 专注于云原生基础架构的性能、稳定性以及与互操作性。 具体来说,WasmEdge 现在支持:
- SIMD 标准和其他几个 WebAssembly 提案(默认情况下)
- 更多 JavaScript 标准,例如 ES6、CJS 和 NPM 模块
- 性能提升,特别是对于 JavaScript 应用程序
- 优化且符合标准的 C API
- 增强的 Go API 和 Reactr 集成
- Dapr 集成
- 一种新的通用 Wasm 二进制文件格式,用于 AOT 编译的高性能应用
- 容器和 Kubernetes 生态
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 解释器引擎测试中花费时间最少的 WasmEdge 版本。
另一个与性能相关的更改是我们在 WasmEdge 0.9.0 中将 runtime 统计指标收集和报告设为可选。 如果你确实想在 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。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 你好,SMI: service mesh 互操作性说明书
- 解密NFV:互操作性和API之间不得不说的关系
- Chainlink预言机在跨链互操作性中的应用
- D 语言 2.088.0 发布,改进了与 C++ 的互操作性
- C++:string_view 与 C API 的互操作性
- [译] Hello Service Mesh Interface(SMI):服务网格互操作性规范
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
中国网络媒体的第一个十年
彭兰 / 清华大学出版社 / 2005-7 / 35.00元
此书对中国网络媒体的第一个十年这一重要的历史阶段首次进行了全景式、全程式的历史记录,并进行了全面深入的研究,在一定程度上填补了中国网络媒体发展史宏观研究方面的空白。对于网络新闻传播的研究,以及当代中国媒体发展的研究.具有重要的意义。 ——方汉奇 图书目录 绪论 1 第一章 投石问路:中国网络媒体萌芽(1994一1995年) 9 第一节 从实验室走向市场:互联网兴起 10 ......一起来看看 《中国网络媒体的第一个十年》 这本书的介绍吧!