WebAssembly将支持使用Go语言
极客时间编辑部
讲述:杜力大小:1.02M时长:02:14
近日,新兴系统语言 Go 宣布,将在 GO 1.11 的编译器中,让开发者能直接把程序编译成 WebAssembly,让字节码可以在浏览器或是 Node.js 等非 Web 环境中执行。Go 社区直言,这么做的目的就是让 Go 取代 Javascript。
WebAssembly 在 2018 年第一季度算得上是真正取得了成功,这是自 Web 诞生以来首个 JavaScript 原生替代方案。现在,Go 语言也宣布加入 wasm,wasm 平台对 Golang 的支持将被添加到 Golang 代码库的一系列提交中。
据介绍,软件包分为多个部分,该平台的 GOARCH 名字是 wasm,并且增加了 GOOS 赋值的 js,这表示编译后的二进制文件将在浏览器 JavaScript 环境中和 Node.js 服务器端环境中运行。
而编译为 wasm 的 Golang 应用程序,将与 JavaScript 应用程序具有互操作性。这意味着 WebAssembly 憧憬的 wasm 架构,将在很大程度上从 JavaScript 的内部访问和嵌入。
此外,官方文件中还提到了一些 Go 与 WebAssembly 的差异,以及可能的处理方式。与 Javascript 相反,WebAssembly 完全支持 64 位整数,但是目前只能用 32 位整数寻址,因此使用的内存容量被限制在了 4GB,不过 Go 的 WebAssembly 架构支持 64 位指标,因此在容许的条件下,可以转换成 64 位运算。
与多数的托管机器架构不同,WebAssembly 属于堆栈机器,会维护自己的堆栈,每个函数也都可以有任意数量的区域变量。官方表示,完全使用 WebAssembly 的堆栈,并不是 Go 现在的选择,Go 需要检查堆栈做垃圾回收还有关注堆栈等工作。
据介绍,Go 的 WebAssembly 架构还将完全支持垃圾回收功能,而 WebAssembly 也正在着手进行增加自己的垃圾回收功能。
官方表示,他们的开发方向会支持所有 Go 的规格,并且尽量保留开发者喜欢的重要功能,目前还有不少提升性能的工作要进行,特别是 Go 语言中的 goto 语法在 WebAssembly 中会特别有用,现在这个项目已经可以让感兴趣的人开始尝试了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论