WebAssembly 或者 wasm 是一种新型可移植,具有占用存储小,加载速度快等特点的面向 web 应用的编译格式。

WebAssembly 是由主流浏览器厂商组成的 W3C 社区团体 制定的一个新的规范。

高效并且快速

The wasm stack machine is designed to be encoded in a size- and load-time-efficient binary format. WebAssembly aims to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms.

WebAssembly 有一套完整的语义,实际上 wasm 是体积小且加载快的二进制格式, 其目标就是充分发挥硬件能力以达到原生执行效率

安全

WebAssembly 是一个内存安全、沙箱化的执行环境,甚至可以在现有的 JavaScript 虚拟机里实现。如果嵌入到 web 中,WebAssembly 会强制遵循与浏览器相同的同源策略及安全策略。

开放并且可调式

WebAssembly is designed to be pretty-printed in a textual format for debugging, testing, experimenting, optimizing, learning, teaching, and writing programs by hand. The textual format will be used when viewing the source of wasm modules on the web.

WebAssembly 被设计为可以通过文本格式优化输出,利于进行调试、测试、试验、优化、学习,甚至直接手写。具体可以通过 wasm 模块的查看源码进行查看

是开放 web 平台的一部分

WebAssembly is designed to maintain the versionless, feature-tested, and backwards-compatible nature of the web. WebAssembly modules will be able to call into and out of the JavaScript context and access browser functionality through the same Web APIs accessible from JavaScript. WebAssembly also supports non-web embeddings.

WebAssembly 一开始就被设计为作为 Web 的一部分, 因此可以直接调用 Web APIs,当然,在非 Web 环境里也可以使用