Wasmtime 为 WebAssembly 增加 Go 语言绑定
为提供更好的跨平台支持,WebAssembly 正在积极推动其在本地桌面端的进展。与此同时,Wasmtime(WebAssembly runtime)近期为它增加了 Go 绑定功能,这意味着开发者可直接在 Go 应用程序中调用 WebAssembly 模块。
Wasmtime 提供了 JIT 风格的 WebAssembly runtime,这是一个属于字节码联盟的项目,此前已为 Rust, C, Python 和 Microsoft .NET 提供了绑定,Go 语言则是其最新绑定的语言。
wasmtime-go 的代码已开源,下面介绍一个使用 wasmtime-go 编写 "Hello, world!" 的代码示例:
package main import ( "fmt" "github.com/bytecodealliance/wasmtime-go" ) func main() { // Almost all operations in wasmtime require a contextual `store` // argument to share, so create that first store := wasmtime.NewStore(wasmtime.NewEngine()) // Compiling modules requires WebAssembly binary input, but the wasmtime // package also supports converting the WebAssembly text format to the // binary format. wasm, err := wasmtime.Wat2Wasm(` (module (import "" "hello" (func $hello)) (func (export "run") (call $hello)) ) `) check(err) // Once we have our binary `wasm` we can compile that into a `*Module` // which represents compiled JIT code. module, err := wasmtime.NewModule(store, wasm) check(err) // Our `hello.wat` file imports one item, so we create that function // here. item := wasmtime.WrapFunc(store, func() { fmt.Println("Hello from Go!") }) // Next up we instantiate a module which is where we link in all our // imports. We've got one improt so we pass that in here. instance, err := wasmtime.NewInstance(module, []*wasmtime.Extern{item.AsExtern()}) check(err) // After we've instantiated we can lookup our `run` function and call // it. run := instance.GetExport("run").Func() _, err = run.Call() check(err) } func check(e error) { if e != nil { panic(e) } }
此功能会在即将发布的 Wasmtime 0.16.0 milestone 版本中提供,0.16 版本还增加了 .NET 绑定功能,以及其他有趣的变更。
字节码联盟力推的 WebAssembly 接口类型增加了 WebAssembly 与其他语言的互通性。Mozilla 表示,WebAssembly 接口类型简化了应用程序与 WebAssembly 模块间来回传递复杂类型所需的“胶水代码”。
按照目前的进度,相信今年 Wasmtime 和 WebAssembly 在本地桌面端将会有不错的进展。对此你有什么看法?
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Microsoft Edge 在 Windows 10 上拥有最好的 HTML5 可访问性支持
Microsoft Edge 团队在推文中表示最新版本的 Edge 浏览器在https://www.html5accessibility.com/测试中以 100% 的成绩通过测试,也就是说 Edge 浏览器在HTML5 可访问性(HTML5 Accessibility)方面提供了最好的支持。团队认为这要归功于他们一直在努力改进与访问性相关的功能,其中包括 UI 自动化和更易访问的控件等。 与 Internet Explorer 11 在同版本操作系统获得的 56% 成绩相比,使用了 Chromium 内核的 Edge 在这方面无疑有了巨大的提升。 同样可以看到,其他竞争对手的成绩与Microsoft Edge 相比都稍有落后。不过 Edge 团队也强调这样的比较意义不大,因为此处仅显示了竞争对手应用程序旧版本的成绩。 要注意的是,HTML5 Accessibility(A11y)主要反映的是针对残障人士(特别是视力障碍者)优化功能的完整程度。其结果不能体现浏览器对 HTML5 的支持情况以及性能表现。 Chrome 62 和 Firefox 58 都已经发布了两三年,因此从技术上讲,...
- 下一篇
Cloudflare 放弃谷歌 reCAPTCHA,迁移到 hCaptcha
Cloudflare 在公司官方博客上宣布,计划放弃谷歌的 reCAPTCHA 服务,转而使用 hCaptcha,此更改可能影响所有 Cloudflare 客户。官方表示,这一更改有助于其解决一段时间以来依赖 Google 服务所产生一些的隐私问题,并允许他们能够更灵活地自定义显示的验证码。 Cloudflare 为网站管理员和网站所有者提供了许多功能。其中一项功能就像防火墙一样,它会自动阻止已知的恶意流量,允许人为流量,并在遇到可能是恶意或非法的流量时显示验证码。 Captcha (Completely Automated Public Turing Test to Tell Computers and Humans Apart;完全自动化的公共 Turing 测试,以区分计算机和人类)在后一种情况下会作为验证步骤显示。理想情况下,验证码的设计会使得人类可以轻松通过验证码,机器人则无法通过。 而鉴于 reCAPTCHA 有效、可以扩展且免费提供的因素,Cloudflare自成立以来就一直使用谷歌的 reCAPTCHA 服务。 现如今,针对弃用reCAPTCHA 而改用hCaptcha...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群