WasmEdge 0.8.2 发布,增加 Networking 支持、Rust SDK、兼容性优化

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 路由。
  • 跨平台兼容性

    借助 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 支持 TcpStreamTcpListenerUdpSocketShutdown。此版本包括用于 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-syswasmege-rswasmedge-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 应用程序。

    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多名我们项目的开发者,期待他们的贡献。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年8月9日
    下一篇 2021年8月9日

    相关推荐