用 WasmEdge 中的嵌入 WebAssembly 函数扩展 Golang 应用程序

本文介绍了如何使用WasmEdge在Golang应用程序中嵌入WebAssembly函数,以实现应用程序的扩展。通过Rust编译器和rustwasmc工具链,将Rust编写的函数转换为WebAssembly字节码,然后在Golang中调用。示例包括单一函数的嵌入和整个WebAssembly程序的嵌入,提供了在Golang中安全隔离地运行用户自定义代码的方法。
摘要由CSDN通过智能技术生成

用 WasmEdge 中的嵌入 WebAssembly 函数扩展 Golang 应用程序

在这里插入图片描述

GO 编程语言(Golang)是一种易于使用且安全的编程语言,可编译为高性能的原生应用程序。Golang 是编写软件基础设施和框架的非常流行的选择。

软件框架的一个关键要求是,用户能够使用自己的代码对其进行扩展和定制。但是,在 Golang 中,向现有应用程序添加用户定义的函数或扩展并不容易。通常,需要通过组合框架的源代码和用户定义的函数在源代码级别进行集成。虽然可以使用 Golang 创建动态共享模块,但这些广泛用于边缘计算的基于 ARM 的系统,缺乏对共享模块的支持。此外,源代码集成和动态模块都没有为用户定义的函数提供隔离。扩展可能会干扰框架本身,并且集成多方的用户定义函数会不安全。因此,Golang 作为“云原生”的语言,需要更好的扩展机制。

WebAssembly 提供了一种强大、灵活、安全且简单的扩展机制,可以将用户定义的函数嵌入到 Golang 应用程序中。最初为 Web 浏览器而发明,但越来越多地用于独立和服务器端应用程序,WebAssembly 是其字节码应用程序的轻量级软件容器。WebAssembly 是高性能、可移植的,并支持多种编程语言。

在本教程中,我们将讨论如何从 Golang 应用程序运行 WebAssembly 函数。 WebAssembly 函数是用 Rust 编写的。它们与 Golang 主机应用程序有着很好的隔离,同时函数之间彼此也进行了隔离。

准备工作

显然,我们需要安装 Golang,这里假设你已经安装了。

Golang 版本应该高于 1.15,我们的示例才能工作。

下一步,请安装 WasmEdge 共享库。 WasmEdge 是一个由 CNCF 托管的领先的 WebAssembly runtime 。我们将使用 WasmEdge 在 Golang 应用程序中嵌入和运行 WebAssembly 程序。

$ wget https://github.com/second-state/WasmEdge-go/releases/download/v0.8.1/install_wasmedge.sh
$ chmod +x ./install_wasmedge.sh
$ sudo ./install_wasmedge.sh /usr/local

最后,由于我们的 demo WebAssembly 函数是用 Rust 编写的,因此您还需要安装 Rust 编译器和 rustwasmc 工具链

嵌入一个函数

目前,我们需要 Rust 编译器版本 1.50 或更低版本才能让 WebAssembly 函数与 WasmEdge 的 Golang API 一起使用。一旦 interface type 规范最终确定并得到支持,我们会赶上最新的Rust 编译器版本

示例中,我们将演示如何从 Golang 应用程序调用一些简单的 WebAssembly 函数。这些

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值