• WasmEdge 0.10.0 发布!全新的插件扩展机制、Socket API 增强、LLVM 14 支持


    在 0.10.0 版本中,WasmEdge 提供了全新的插件(plug-in)机制,使本地扩展更易于开发和安装,提高了与 LLVM 14 的兼容性,并支持新的 WebAssembly 规范、提案和特性。
    在这里插入图片描述

    • 本地 host 函数的新插件系统
    • 对 WasmEdge socket API 的增强(例如,WasmEdge 中的微服务和 Web 服务客户端)
    • 支持新的 WebAssembly 提案和规范
    • WasmEdge C API 增强
    • 其他特性,以及漏洞修复

    本地 host 函数的新插件系统

    在这里插入图片描述

    host 函数是允许 WebAssembly 程序访问本地库提供的功能和特性的桥梁。 这是我们使用更多特性和函数扩展 WebAssembly runtime 的方式。 例如,WASI 标准本身就是通过 host 函数让 WebAssembly 应用可以使用 libc 进行系统调用。

    WasmEdge 的 TensorFlow、NN、Socket 和图像处理扩展都是通过 host 函数实现的。 让开发者容易使用 host 函数,对 WebAssembly runtime 至关重要。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s3246SRu-1655899627481)(https://i.imgur.com/4OROCuA.png)]

    新的 WasmEdge 插件系统旨在简化 host 函数开发和管理。 插件系统可以让开发者可以使用统一的 host 函数接口轻松创建新的 WasmEdge 扩展。 查看 WasmEdge Book 中的指南:如何使用 WasmEdge 的插件系统添加 host 函数 ,来试试吧。

    目前只能用 C++ 编写 WasmEdge 插件。 我们将在不久的将来增加对 Rust 和 C 的支持。

    WasmEdge 的用户现在可以通过在 WasmEdge 文件夹中添加或删除包含 host 函数的文件来启用或禁用 WasmEdge 扩展。 插件系统让用户在未来可以轻松、安全地管理大量开发者贡献的 WasmEdge 扩展。

    例如, WasmEdge 团队实现了 wasmedge_process 扩展作为插件。wasmedge_process 允许 WebAssembly 程序调用操作系统命令。接下来的几周,我们将把 WasmEdge 的现有扩展移植到新的插件格式。 同时,也欢迎你为 WasmEdge 贡献基于 host 函数的扩展。

    Wasi-socket 提升

    WasmEdge networking sockets 是 non-blocking 和高性能的。 WasmEdge 是目前唯一可以运行 Web 服务应用程序的 WebAssembly runtime。 许多开发者尝试创建和部署基于 WasmEdge 的 Web 服务或客户端。 在此版本中,我们继续为开发者改进 WasmEdge socket API。

    • IPV4 和 IPV6 模式
    • UDP 函数:send_toresv_from
    • DNS 名称查找
    • 检查 socket 选项枚举的有效值
    • 修正:MacOS 上的 wasi-socket
    • 修正:用同一个 fd 调用 poll_oneoff 两次和在 socket 上调用 fd_close 时出错。
    • ::getaddrinfo 的以零结尾的字符串。

    展望未来,我们将提供兼容 wasm 的 Rust TLS 实现 ,从而支持 HTTPS在 WasmEdge 中创建 Tokio 异步 runtime

    C API 提升

    C API 是 WasmEdge 其他语言 API 的基础,例如 WasmEdge Rust API 和 WasmEdge Go API。 此版本改进了 WasmEdge C API。

    • WasmEdge_ImportObjectContext 合并到 WasmEdge_ModuleInstanceContext 中。
    • 使用指向 WasmEdge_FunctionInstanceContext 的指针而不是 FuncRef 值类型中的索引。
    • WasmEdge_StoreContext 的函数移至 WasmEdge_ModuleInstanceContext
    • 更新了 WasmEdge_VMContext API。

    此新版本也带来新的 C APIGo API 文档。 对于想使用更新的 C 和 Go API 的开发者来说,请参考 WasmEdge Book

    标准 Wasm 扩展

    WasmEdge 发展势头迅猛,完全符合了 WebAssembly 标准,并支持所有强制性和可选的 WebAssembly 规范。 从 0.10.0 版开始,WasmEdge 支持Tail Callextended-const提案。

    其他特性及漏洞修复

    除了上述特性外,还有一些特性需要注意。

    • 兼容 LLVM 14,提高了性能。
    • WasmEdge_VMContextWasmEdge_ConfigureContextWasmEdge_ModuleInstanceContextWasmEdge_StoreContext APIs 中的线程安全。
    • AOT 模式下的 gas 限制,允许在 WasmEdge 中精确计量应用程序。
    • 新的单元测试。

    要了解有关 WasmEdge 0.10.0 版本的更多信息,请查看我们的变更日志(https://github.com/WasmEdge/WasmEdge/releases/tag/0.10.0)! 加入我们吧!

    最后,感谢我们的贡献者!

    apepkuss, dm4, q82419, cyw3, SAtacker, ibmibmibm, hydai, gusy1234, hangedfish, 0yi0, tpmccallum, MediosZ, hantmc, LFsWang, eat4toast, eee4017, situ2001, meoww-bot, juntao, mfordjody, joyaaa, sunnywa, DarumaDocker, spacewander, luckyJ-nj, mydreamer4134, malc0lm,kgpp34, wenchajun, laingke, cold-Elite, border1px, zhuyaguang, bbcfive, JooKS-me, KerneIErr, zswaaa, zhannicholas, O3OI, KcjinChen, FlyingOnion, swartz-k, Bevisy, deyuhua, zephoon, abhinandanudupa, chinzhiweiblank.

  • 相关阅读:
    【无标题】
    又快又准又安全?实时字幕有“芯”秘密!
    linux 网络 cat /proc/net/dev 查看测试网络丢包情况
    扩散模型在图像生成中的应用:从真实样例到逼真图像的奇妙转变
    基于MCMC的交通量逆建模(Matlab代码实现)
    C语言基础练习题11-20
    C#语音转文本
    汇编层面的函数调用
    【毕业设计】深度学习行人重识别系统 - person reid
    企业如何添加内嵌式的帮助文档
  • 原文地址:https://blog.csdn.net/weixin_42376823/article/details/125415917