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核心原理, 应用展望

曾经的其他尝试 ASM.js

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

新的尝试 WASM

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

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

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

V8编译流程(如下图)

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

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

深入 WASM 内存模型一关于WebAssembly核心原理, 应用展望
深入 WASM 内存模型二
关于WebAssembly核心原理, 应用展望

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

相关文章:

  • 2021-11-13
  • 2021-11-20
  • 2021-11-28
  • 2021-07-20
  • 2021-08-16
  • 2021-07-30
  • 2021-12-22
  • 2021-10-01
猜你喜欢
  • 2021-12-28
  • 2021-08-16
  • 2021-10-24
  • 2022-12-23
  • 2021-09-10
  • 2021-11-22
  • 2021-04-05
相关资源
相似解决方案