WebAssembly实战(作者:[加拿大]C.杰勒德·加伦特(C.GerardGallant)译者:单业)

书: https://pan.baidu.com/s/1XqKbodMZYD_Bu2f_E1ghxw?pwd=y5p9
笔记如下:

  1. “WebAssembly是‘可移植的二进制指令集’,目标是以接近原生速度在Web浏览器中运行。”
  2. “Wasm的四大设计原则:快速(Fast)、安全(Safe)、可移植(Portable)、模块化(Modular)。”
  3. “Emscripten工具链将C/C++代码编译为Wasm,emcc -O3 -s WASM=1生成优化后的二进制。”
  4. “Wasm内存模型:线性内存(Linear Memory)通过ArrayBuffer与JavaScript交互,需手动管理。”
  5. WebAssembly.instantiate()加载并实例化Wasm模块,exports暴露函数供JS调用。”
  6. “多语言支持:Rust通过wasm-pack、Go通过GOOS=js GOARCH=wasm编译为Wasm。”
  7. “Wasm与JS互操作:importObject传递JS函数到Wasm,exports导出Wasm函数到JS。”
  8. “线程支持(Threads Proposal):SharedArrayBuffer+原子操作实现多线程Wasm。”
  9. “SIMD(Single Instruction Multiple Data)加速向量运算,如v128类型支持128位并行计算。”
  10. “WASI(WebAssembly System Interface)扩展Wasm到非Web环境,如服务器端和IoT。”
  11. “调试工具:wasm-objdump分析二进制结构,source-map映射Wasm到高级语言源码。”
  12. “性能优化:减少JS-Wasm边界调用,使用WebAssembly.Memory共享大数据。”
  13. “垃圾回收提案(GC Proposal)允许Wasm直接操作高级语言对象(如Java/C#类)。”
  14. “动态链接(Dynamic Linking):多个Wasm模块通过dlopen风格加载共享依赖。”
  15. “安全沙箱:Wasm模块无法直接访问宿主系统API,必须通过导入函数显式授权。”
  16. “工具链生态:wasmtime(运行时)、wasmer(嵌入库)、wabt(工具箱)覆盖全流程。”
  17. “案例:FFmpeg编译为Wasm,在浏览器实现高性能视频转码(无插件)。”
  18. WebAssembly.Global定义可变全局变量,跨函数调用保持状态。”
  19. “尾调用优化(Tail Call Proposal)支持递归算法无栈溢出风险。”
  20. “未来趋势:Wasm作为通用运行时,统一Web、边缘计算和区块链(如Ethereum WASM)。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注