中国 KubeCon + CloudNativeCon + Open Source Summit 虚拟大会
12 月 9 日至 10 日
https://www.lfasiallc.com/kubecon-cloudnativecon-open-source-summit-china/
WasmEdge 0.8.2 版本发布啦!
-
更好的跨平台兼容性。在 Mac OS X(Intel 和 M1)、Windows 10 以及配备 ARM 32 位芯片的 IoT 设备上运行 WasmEdge 应用程序。 -
Networking 支持。可以从 WasmEdge 应用程序发出网络请求并运行 HTTP 服务器。 -
新的和改进的 API。在 C、Rust 和 Golang 应用程序中嵌入 WasmEdge 函数。 -
WasmEdge 的 AoT 编译器的通用二进制输出。在云原生平台可以利用 AOT 增进性能。 -
支持 proxy-wasm 规范,WasmEdge 为服务网格带来了高性能 API 路由。
changelog 链接:https://github.com/WasmEdge/WasmEdge/releases/tag/0.8.2
跨平台兼容性
借助 manylinux1
发布目标,WasmEdge Runtime ,包括其 AOT 编译器和本机扩展,可以在老旧至 2007 年的 Linux 版本上运行。现在,WasmEdge 也可以在基于ARM 32 位 CPU 比较老的设备和 SoC 板上运行,它们常常用于物联网应用程序。
除了 Linux,WasmEdge 还支持 Mac OS X,包括基于 Intel 和 M1 的 Mac 以及 Windows。这些设备得到了开发者和边缘应用程序的广泛使用。你可以在自己的笔记本电脑上尝试一下!
之后,团队正致力于在即将发布的 WasmEdge 版本中支持如 seL4 等实时操作系统。
Networking 支持
云原生应用通常需要建立网络连接。但是,标准 WebAssembly 规范不支持 networking。WASI-socket 规范旨在将基于 socket 的网络支持添加到 WebAssembly 中,但社区仍然就此争论不休。
WasmEdge 团队决定在 WasmEdge 0.8.2 中实现 socket 支持。WasmEdge 网络 socket 支持以当前的 WASI socket 提案为蓝本,并为开发者提供了一个 Rust crate 来编写具有网络功能的 WebAssembly 应用程序。
WasmEdge 的网络 socket API 支持 TcpStream
、 TcpListener
、UdpSocket
和 Shutdown
。此版本包括用于 WebAssembly 的 HTTP 客户端和服务器端实现的 Rust demo 应用程序。
请注意,目前 WasmEdge socket API 仅适用于 Linux。
更多细节请查看 wasmedge_wasi_socket repo:https://github.com/second-state/wasmedge_wasi_socket
API 提升
WasmEdge 的一个关键应用场景是将其作为 serverless 函数 runtime 嵌入到云原生环境中。这要求开发者通过 API 从主机应用程序启动 WasmEdge。
WasmEdge C API 是从主机应用程序访问 WasmEdge 运行时的接口。它也是 WasmEdge 其他语言 API 的基础,例如 WasmEdge Go API。此版本为 WasmEdge C API 添加了一些功能点。
-
添加了静态库 libwasmedge_c.a
。 -
将 ErrCode
添加到 C 声明中。 -
增加了 WasmEdge_String
转换为C 字符串的 API。 -
添加了从 WasmEdge_MemoryInstanceContext
获取数据指针的 API。
此外,WasmEdge 0.8.2 还包含两个 用于 Rust API 的 Rust crate, wasmedge-sys
和 wasmege-rs
。wasmedge-sys crate
是从 WasmEdge C API 生成的低级 API。 wasmedge-rs
是一个惯用的 Rust API,封装了低级 wasmedge-sys ,使其更安全,对开发者更友好。完整的 wasmedge-rs
crate 仍在积极开发中。欢迎任何反馈和贡献。
如果你想查看一个 API 的例子,请查看 dapr-wasm repo。它使用 WasmEdge Golang 和 Rust API 在云原生 service mesh 中实现 sidecar 应用程序。
Dapr-WasmEdge 源地址 https://github.com/second-state/dapr-wasm
BTW,今晚8点,WasmEdge 将做客 KubeSphere 云原生直播间,欢迎大家围观。具体详情请戳: 直播预告 | WebAssembly ——Dapr 的高性能执行环境
WasmEdge的 AoT 编译器的通用二进制码
WasmEdge 0.8.2 添加了一个新的 AOT 编译器 flag --generic-binary
。此标志用于生成通用二进制文件并禁用 CPU 特定优化。
因此,通用二进制文件可能会损失大约 20% 的原始性能,但在整个 CPU 类别中实现了更好的兼容性(例如,生成适用于所有 x86 CPU 的二进制文件)。
--generic-binary
的应用场景包括在 serverless 平台(例如 AWS Lambda、腾讯云、Vercel 和 Netlify)上运行 WasmEdge。为了将这些平台上的启动时间缩短至毫秒级,我们将 WasmEdge 配置为在部署环境预先(AOT)编译其应用程序。我们无法在 runtime (运行环境)预先确定 CPU 的确切代号和型号。通用二进制码选项平衡了 AOT 的性能和 WebAssembly 应用程序的可移植性。
支持 Proxy-wasm
Proxy-wasm 是一种在 API 代理中嵌入 WebAssembly Runtime 的规范。它允许 WebAssembly 函数以编程方式发送服务网格网络中的 API 流量。proxy-wasm 标准由 Envoy、Istio Proxy 和 MOSN 支持。在 WasmEdge 0.8.2 中,提供了proxy-wasm 的主机实现。WasmEdge 现在可以用作 Envoy 和 MOSN 的高性能扩展。
要想了解有关 WasmEdge 0.8.2 版本的更多信息,请查看我们的 changelog!WasmEdge 0.8.2 是朝着云原生 WebAssembly 生态迈出的重要一步。加入我们这场大变革!
最后,我们感谢来自社区的贡献 @actly、 @alabulei1、@CaptainVincent、@chenyukang、@hydai、@ibmibmibm、 @juntao、@kenvifire、@L-jasmine、@MaazKhan711635、 @MileyFu、@nhynes、 @q82419、@robnanarivo、 @yanganto 和 @Yonama。(排名不分先后,按照首字母进行排序)
最后的最后,WasmEdge 参加了今年秋季的 CNCF LFX Mentorship 项目。我们要感谢来自世界各地的 100多名我们项目的开发者,期待他们的贡献。
点击阅读原文,查看 WasmEdge 源代码。
文章转载自Second State。点击这里阅读原文了解更多。
联系关于Linux基金会
Linux基金会是非营利性组织,是技术生态系统的重要组成部分。
Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请长按以下二维码进行关注。
本文分享自微信公众号 - LFAPAC(gh_8442c14fe49e)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。