1. 快速、安全、可移植的语义
WebAssembly 的设计首先围绕语义层面的三大诉求展开:
- 快速(Fast):以接近原生代码的性能执行,充分利用当代通用硬件的常见能力
- 安全(Safe):代码在执行前经过校验,运行于内存安全、沙箱化的环境中,防止数据损坏或安全入侵
- 可移植(Portable):不依赖特定架构,可在现代各类硬件、桌面与移动设备、嵌入式系统上编译运行
此外还包括定义良好(精确无歧义地定义合法程序及其行为)、硬件无关、语言无关与平台无关等目标,使其既能嵌入浏览器,也能作为独立虚拟机运行或集成到其他环境中。
2. 高效、可移植的表示形式
在二进制编码层面,WebAssembly 追求紧凑与模块化:
- 紧凑(Compact):二进制格式比典型文本或原生代码更小,传输更快
- 模块化(Modular):程序可拆分为多个部分,分别传输、缓存和消费
- 高效(Efficient):可在单次快速遍历中完成解码、校验和编译,同时支持 JIT 与 AOT 编译
- 可流式(Streamable):允许在数据尚未全部到达时就开始解码、校验和编译
- 可并行(Parallelizable):解码、校验、编译过程可拆分为多个相互独立的并行任务
这些目标共同保证了 WebAssembly 在传输、加载和执行各阶段都能保持高效率。