关于WebAssembly核心原理, 应用展望

WebAssembly记录

  • 历史
    • 2015年4月 WASM Community Group 成立
    • 2017年3月 四大主流浏览器达成MVP标准共识
    • 2017年8月 WASM W3C Working Group 成立, 开发进入正常技术和标准迭代流程
  • 技术核心
    • 是一种以 .wasm 作为后缀二进制格式(0x6d736100开头), 一种高性能的二进制格式并且可以直接在浏览器加载和运行
    • 可以通过JS接口直接在浏览器加载, 解析和运行
    • 运行在浏览器的安全沙箱内
  • WebAssembly = Web(Web浏览器) + Assembly(高性能)
  • 由于JS性能较低, 所以发明了WebAssembly作为补充
  • Js性能较低的原因
  1. 动态语言
  2. 编译流程复杂冗余, 流入下图即使一个+号运算也需要较复杂的流程判断类型等

关于WebAssembly核心原理, 应用展望_第1张图片

曾经的其他尝试 ASM.js

  • 一种JavaScript的子集
  • 如下图通过Annotation(参数类型注解)的方式告诉JS引擎具体的解析方式
    关于WebAssembly核心原理, 应用展望_第2张图片

新的尝试 WASM

  • 类型严格
  • 可以使用任意的强类型语言来描述
    关于WebAssembly核心原理, 应用展望_第3张图片

在V8编译链路流程中ASM和WASM相比会产生这样的区别

  • 1 WASM 无需去优化和优化直接被加载和使用
  • 2 ASM仍然需要去优化和优化过程

V8编译流程(如下图)

  • 经过解析器(AST)
  • 经过解释器
  • 经过基线编译器
  • 经过优化编译器
  • 经过编译器后端
    关于WebAssembly核心原理, 应用展望_第4张图片

WASM如何生成? 使用emscripten编译器
C/C++ -> js(ams.js source code)-> .wasm
C/C++ -> llvm(.ll / .bc)-> .s -> .wasm

深入 WASM 内存模型一关于WebAssembly核心原理, 应用展望_第5张图片
深入 WASM 内存模型二
关于WebAssembly核心原理, 应用展望_第6张图片

以上内容来自此演讲视频笔记

你可能感兴趣的:(前沿技术)