程序员

WebAssembly的现状与使用

2019-01-25  本文已影响35人  我不叫奇奇

WebAssembly的现状与实战。

原文链接: https://www.ibm.com/developerworks/cn/web/wa-lo-webassembly-status-and-reality/index.html

该文章介绍了WebAssembly出现的 背景 / 原理 / 用js写WebAssembly的例子 / 展望。

总结起来就是:

WebAssembly 标准虽然已经定稿并且得到主流浏览器的实现,但目前还存在以下问题:

总之现在的 WebAssembly 还不算成熟,如果你的团队没有不可容忍的性能问题,那现在使用 WebAssembly 到产品中还不是时候, 因为这可能会影响到团队的开发效率,或者遇到无法轻易解决的坑而阻塞开发。

WebAssembly的构建方法

原文链接: https://blog.csdn.net/m549393829/article/details/81839822

这张图是官网上的构建流程图,构建过程中使用了Emscripten——一个基于llvm的编译器,目的是把c/c++编译为asm.js(js的一个真子集)
我们知道,c和js语法十分相似。所以在c到js的编译过程中,要解决的最重要的问题主要是两点:

因此,就出现了asm.js。asm.js只有两种静态类型(i32, f64),并取消js的垃圾回收(手动管理内存)。浏览器加载到asmjs时,不进行语法分析,直接翻译为机器码执行
实际上,asm.js就是WebAssembly的一种文本格式,但不同于之前提到的s表达式。这一点类比于c,汇编语言,机器码之间的关系
由于WebAssembly当前不能直接调用Web API(如存取DOM),它只能调用JavaScript,因此需要一段js胶水代码使WebAssembly能够调用到Web API
移植代码缺点在于需要较复杂的依赖,相比之下,汇编编写依赖都由程序员自己定义

C#对WebAssembly的使用

理论上高级语言只要能转换到底层虚拟机LLVM认识的中间语言(LLVM IR),就能转换成WebAssembly。

上一篇 下一篇

猜你喜欢

热点阅读