webassembly 是一个实验性的低端编程语言,应用于浏览器内的客户端?
-
看了下维基,也是一头雾水,12 月 5 日成为万维网联盟( W3C )的推荐为 WEB 的第四种语言,
-
webassembly 维基
-
话说这个语言的实用性在哪,求大佬科普
看了下维基,也是一头雾水,12 月 5 日成为万维网联盟( W3C )的推荐为 WEB 的第四种语言,
webassembly 维基
话说这个语言的实用性在哪,求大佬科普
还有 https://www.figma.com/ ,找个设计文档打开看看中间的画布。
就知道 webassembly 能实现什么效果了
同理,以前浏览器只能运行 js,需要在运行时编译。现在各个浏览器厂商达成了一致意见,推出了一个共同的字节码标准,日后浏览器可以支持运行这种字节码。所以既提高了启动速度,又能支持更多语言。
@Hoshinokozo 是的,但是有 WAT,WebAssembly Text Format,算是某种意义上和 wasm 最正相关的编程语言,但是实现上还是会用其他的高级语言。
这块今年我应该会做一个「完全同构」的前后端开发分享。
本人搞的一个玩具,用 GO 语言写,转换成 WASM,用来处理图像
https://image.beer
其实把浏览器看成一个小操作系统未尝不可。
js api 其实就可以理解为 system call
只不过更加高层,抽象罢了。
推荐 rust+1
https://milek7.pl/openttd-wasm/
WIN2000 https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/win2k.cfg&mem=192&graphic=1&w=1024&h=768
更多的虚拟机列表 https://bellard.org/jslinux/

举个例子:浏览器上往往只支持 JS、CSS、HTML 三种语言,这些都是以源码的形式由浏览器实时解释运行的语言,浏览器内部实现了这些语言的语法、API 的细节,对计算机底层机器码进行了功能上的封装,特点是人类友好、性能较差;而 WebAssembly 是直接运行机器码,虽然是在 VM 或沙盒上运行的,但开销极低,特点是人类不友好、性能较强。
实际上用 WebAssembly 来做开发也不是直接写 WebAssembly,依靠 LLVM 编译器的强大功能,可以将很多语言的程序编译成 WebAssembly,比如 C/C++、Rust、C#/.Net 、Java、Python、Go,以往 C 语言是直接编译成机器码跑在硬件或操作系统上,WebAssembly 可以让 C 语言编译成 WebAssembly、转化成 WebAssembly VM 或沙盒机器码运行、VM 或沙盒在硬件或操作系统上,由于中间 VM 或沙盒的开销极低,所以可以让程序的性能与直接跑在硬件或操作系统上相近。
既然是 Web 开头的技术,那么还有一个很大的特点就是可以和 JS 互操作。
应用场景基本就是在浏览器端有强性能需求的场景,比如 AI、视频编解码器、图形引擎,或者仅仅是想把桌面软件迁移到浏览器上( AutoDesk 将 AutoCAD 迁移到了浏览器上)。