执行 WebAssembly 的 Go 库 Wasmer

执行 WebAssembly 的 Go 库 Wasmer

MIT
Google Go
跨平台
2019-05-31
红薯

Wasmer 是一个 Go 库,用来执行 WebAssembly 二进制程序。

这里有一个示例程序 wasmer/test/testdata/examples/simple.rs, 使用 Rust 编写或者其他语言编译成 WebAssembly 的语言都行。

#[no_mangle]
pub extern fn sum(x: i32, y: i32) -> i32 {
    x + y
}

编译到 WebAssembly 后会生成 wasmer/test/testdata/examples/simple.wasm  (Download it).

接下来就可以在 Go 语言中执行这个代码:

package main

import (
	"fmt"
	wasm "github.com/wasmerio/go-ext-wasm/wasmer"
)

func main() {
	// Reads the WebAssembly module as bytes.
	bytes, _ := wasm.ReadBytes("simple.wasm")
	
	// Instantiates the WebAssembly module.
	instance, _ := wasm.NewInstance(bytes)
	defer instance.Close()

	// Gets the `sum` exported function from the WebAssembly instance.
	sum := instance.Exports["sum"]

	// Calls that exported function with Go standard values. The WebAssembly
	// types are inferred and values are casted automatically.
	result, _ := sum(5, 37)

	fmt.Println(result) // 42!
}
的码云指数为
超过 的项目
加载中

评论(12)

wasm 现在的最终目标是运行在所有的平台上 当然也包括浏览器啦
衷于栖
衷于栖
浏览器本身就可以验证 而且go本身的实现未必是切菜机,再说了,根本就是两码事。离线用wasm不如直接用c,跨平台?那得先有个标准库
7月
7月

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊

引用来自“满城丧尸”的评论

wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器

引用来自“衷于栖”的评论

wasm就是为了提高浏览器应用运行效率而生的,看浏览器有什么毛病?
我想用刀切菜,你发明切菜机干嘛。
dingdayu
dingdayu

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊

引用来自“满城丧尸”的评论

wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器

引用来自“衷于栖”的评论

wasm就是为了提高浏览器应用运行效率而生的,看浏览器有什么毛病?

引用来自“dingdayu”的评论

这个项目场景还是挺多的,比如验证wasm的平台,再比如wasm分发交换平台,再比如类似于cgo的的应用也挺好,期待壮大,前景不错。
说不定是夸语言库的未来呢,谁说的了呢。
dingdayu
dingdayu

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊

引用来自“满城丧尸”的评论

wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器

引用来自“衷于栖”的评论

wasm就是为了提高浏览器应用运行效率而生的,看浏览器有什么毛病?

引用来自“dingdayu”的评论

这个项目场景还是挺多的,比如验证wasm的平台,再比如wasm分发交换平台,再比如类似于cgo的的应用也挺好,期待壮大,前景不错。
说不定是夸需要库的未来呢……谁说的了呢。
dingdayu
dingdayu

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊

引用来自“满城丧尸”的评论

wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器

引用来自“衷于栖”的评论

wasm就是为了提高浏览器应用运行效率而生的,看浏览器有什么毛病?
这个项目场景还是挺多的,比如验证wasm的平台,再比如wasm分发交换平台,再比如类似于cgo的的应用也挺好,期待壮大,前景不错。
东方星痕
东方星痕
绕过cgo复杂的编译环境,不错。。。
衷于栖
衷于栖

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊

引用来自“满城丧尸”的评论

wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器
wasm就是为了提高浏览器应用运行效率而生的,看浏览器有什么毛病?
满城丧尸
满城丧尸

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上

引用来自“衷于栖”的评论

对啊
wasm就是为了代码的移植,浏览器不能操作系统I/O,很多限制,搞清楚后台代码和浏览器的对比,别老盯着浏览器
衷于栖
衷于栖

引用来自“衷于栖”的评论

我有浏览器,为什么要用这个,

引用来自“满城丧尸”的评论

因为不想运行在浏览器上,接下来你是不是又要问为什么不运行在浏览器上
对啊

暂无资讯

暂无问答

光谷码农·每日新闻(2019-05-08)

光谷码农·每日新闻(2019-05-08) https://guanggu-coder.cn Flutter 谷歌官方微博正式宣布正式Flutter成为前后端手机设备通吃的跨平台框架: https://developers.googleblog.com/2019/05/Flu...

05/08 14:36
11
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部