为什么需要网络组装?

时间:2019-12-12 19:33:14

标签: webassembly

为什么浏览器需要网络汇编才能运行从非JavaScript语言编译的程序?具体来说,为什么不能使用x86汇编代替?

我在Google周围搜索,但是找不到任何好的信息。

也许与JavaScript(包括HTML5和浏览器API)的互操作性有关? WASM的调用能力以及被JavaScript调用的能力使其在浏览器中有用吗?

1 个答案:

答案 0 :(得分:1)

TL; DR:
WebAssembly快速,安全,可移植,并且是开放Web平台的一部分。
利用Go,Rust等强类型语言的优势(编译器可以在编译时检测到许多错误)
用于高级语言编译的可移植目标
在包括移动和物联网(不仅限于x86)在内的各种平台上可用
高效且快速(接近本地性能,预编译:相对于JavaScript)
节省大小和加载时间的二进制格式
内存安全
沙盒执行环境
非网络嵌入
可通过JavaScript进行访问,并与现有的Web平台很好地集成
与Web生态系统集成
利用Web API
支持网络的安全模型
保持网络的可移植性
为进化发展在房间里设计


高效快捷

Wasm堆栈机设计为以节省大小和加载时间的二进制格式进行编码。 WebAssembly旨在通过利用广泛的平台上可用的通用硬件功能,以本机速度执行。

安全

WebAssembly描述了一种内存安全的,沙盒执行环境,该环境甚至可以在现有的JavaScript虚拟机中实现。嵌入到Web中后,WebAssembly将强制执行浏览器的同源和权限安全策略。

打开并调试

WebAssembly设计为以文本格式精美打印,用于手工调试,测试,实验,优化,学习,教学和编写程序。在网络上查看Wasm模块的来源时,将使用文本格式。

开放式网络平台的一部分

WebAssembly旨在维护Web的无版本,经过功能测试和向后兼容的性质。 WebAssembly模块将能够调用和退出JavaScript上下文,并通过可从JavaScript访问的相同Web API访问浏览器功能。 WebAssembly还支持非Web嵌入。


参考:
Design Rationale
WebAssembly High-Level Goals
https://webassembly.org/
WASI: WebAssembly System Interface
Features to add after the MVP