WebAssembly是一种新的二进制格式,它可以方便地将C/C++等静态语言的代码快速地“运行”在浏览器中,这一特性为前端密集计算场景提供了无限可能。不仅如此,通过WebAssembly技术,我们还可以将基于Unity等游戏引擎开发的大型游戏快速地移植到Web端。WebAssembly技术现在已经被计划设计成W3C的标准,众多浏览器厂商已经提供了对其MVP版本标准的支持。在Google I/O 2017大会上,Google首次针对WebAssembly技术进行了公开演讲和推广,其Post-MVP版本标准更是对诸如DOM操作、多线程和GC等特性提供了支持。WebAssembly所带来的Web技术变革势不可挡。 《深入浅出WebAssembly》力求从一些简单的实践入手,深入理论,到复杂的具有实际业务价值的综合实践,深入浅出地介绍Wasm技术发展至今,其背后所涉及的各种底层设计原理与实现、相关工具链以及未来发展方向等多方面内容。本书内容包括:WebAssembly技术的发展历程,从PNaCl到ASM.js再到WebAssembly,以及这些技术的基本应用方法与性能对比;WebAssembly的标准上层API、底层堆栈机的设计原理,以及对MVP标准理论的深入解读;与WebAssembly标准相关的进阶内容,如单指令多数据流(SIMD)、动态链接(DL)等;LLVM工具链与WAT可读文本格式的相关内容;基于Emscripten工具链开发WebAssembly应用的基本流程,以及工具链的一些基本常用功能和特性;基于Emscripten工具链实现C/C++语言动态关系绑定技术;Emscripten工具链所提供的一些如WebGL支持、虚拟文件系统、应用优化以及HTML 5事件系统等高级应用特性;构建一个具有实际业务价值的WebAssembly应用,现阶段Wasm生态的发展情况,以及在Post-MVP标准中制订的一些WebAssembly未来发展规划。 《深入浅出WebAssembly》的目标读者为Web前端开发人员、C/C++开发人员和对WebAssembly技术感兴趣的人员。 于航,现就职于阿里巴巴 / 饿了么事业部(BU),资深前端工程师,FreeCodeCamp(FCC) China 上海社区负责人,QCon(2017)上海前端专场讲师。2016 年开始研究 WebAssembly 技术,2017 年加入 WebAssembly 中国社区,同年加入官方WCG(W3C Community Group),定期参与 WCG组织的各种线上视频研讨会议,在跟进 WebAssembly 新发展的同时,也为 WebAssembly 的标准化提出自己的建议和意见。生活中喜欢弹钢琴、演讲与分享。主要技术研究方向为Web前端与基础设施架构、WebAssembly、LLVM以及编译器等相关领域。 第1章 漫谈WebAssembly发展史 1 1.1 JavaScript的发展和弊端 1 1.1.1 快速发展与基准测试 1 1.1.2 Web新时代与不断挑战 8 1.1.3 无法跨越的“阻碍” 11 1.1.4 Chrome V8引擎链路 17 1.2 曾经尝试——ASM.js与PNaCl 28 1.2.1 失落的ASM.js 28 1.2.2 古老的NaCl与PNaCl 42 1.3 新的可能——WebAssembly 57 1.3.1 改变与颠覆 57 1.3.2 一路向前,WCG与WWG 85 第2章 WebAssembly核心原理(基于MVP标准) 90 2.1 应用与标准Web接口 90 2.1.1 编译与初始化 90 2.1.2 验证模块 106 2.1.3 遇到错误 106 2.1.4 内存分配 108 2.1.5 表 112 2.2 深入设计模型——堆栈机 118 2.2.1 堆栈式虚拟机 119 2.2.2 逆波兰表达式 125 2.2.3 Shunting-yard算法 126 2.2.4 标签与跳转 130 2.2.5 条件语句 135 2.2.6 子程序调用 137 2.2.7 变量 138 2.2.8 栈帧 139 2.2.9 堆 140 2.3 类型检查 141 2.3.1 数据指令类型 142 2.3.2 基本流程控制 144 2.3.3 基于表达式的控制流 149 2.3.4 类型堆栈的一致性 151 2.3.5 不可达代码 155 2.4 二进
阅读更多