为方便读者查找,本文汇总了《WebAssembly实战》一书中用到的部分网络资源链接。链接内容可能随时间变化,请读者知悉。

第 1 章

1.6节

WebAssembly 官方网站:https://WebaAssembly.org/docs/security。

第 3 章

3.4节

Emscripten网站https://emscripten.org/docs/optimizing/Optimizing-Code.html上给出了的几个优化标记。

3.5.2节

以下文章更详细地解释了为什么建议将script标签放在body标签的结尾处:Ilya Grigorik, “Adding Interactivity with JavaScript,” Google Developers,http://mng.bz/xld7。

3.6.2节

包括Edge、Firefox、Chrome、Safari 和Opera 等多数当代桌面和移动浏览器,支持WebAssembly。可以在以下网站查看详细列表:https://caniuse.com/#search=WebAssembly。

MDN(正式名为Mozilla 开发者网络,Mozilla developer network) Web Docs 上面有一个关于函数instantiateStreaming 的文档,并且其中在页面最后包含了最新的浏览器兼容性列表:http://mng.bz/ZeoN。

第 4 章

4.1.1节

有些C头文件已经过时被弃用,或者C++中已经不再支持。stdlib.h就是一个例子。现在应该使用cstdlib,而不是stdlib.h。要想得到完整的头文件变化列表,可以访问:https://en.cppreference.com/w/cpp/header。

4.1.3节

如果想要熟悉HTML基础,W3schools 官网中有很好的教程:www.w3schools.com/html。

第 5 章

5.3节

以下网站列出了一些开源C++库:https://en.cppreference.com/w/cpp/links/libs。

第 6 章

6.1.4节

在JavaScript中,匿名函数是定义时不包含名称的函数。如果想要了解更多信息,可以参考MDN在线文档页面:http://mng.bz/7zDV。

第 7 章

7.2节

有关WebAssembly JavaScript API的简要论述在MDN在线文档中也有很好的概述:http://mng.bz/vln1。

7.2.2节

要想更深入地学习Emscripten文件系统,可以访问:https://emscripten.org/docs/api_reference/Filesystem-API.html。

有关dlopen和模式标记的更多信息,参见开发组基本规范:http://mng.bz/4eDQ。

7.2.3节

可以调整一些设置来控制Emscripten生成的JavaScript代码的执行。以下网页列出了其中一部分:https://emscripten.org/docs/api_reference/module.html。

第 8 章

8.2节

如果需要更多关于构建导航栏的信息,可以访问:www.w3schools.com/css/css_navbar.asp。

第 9 章

pthread(也称为POSIX线程,POSIX thread)是POSIX.1c标准定义的一套独立于编程语言执行模型的API(参见:https://en.wikipedia.org/wiki/POSIX_Threads)。

9.1节

要想知道Web worker可用的API的完整列表,可以访问MDN在线文档页面:http://mng.bz/gVBG。

要想了解Emscripten Worker API的更多信息,可以访问文档中的这个页面:http://mng.bz/eD1q。

9.2节

关于Node.js worker线程支持的更多信息,参见:https://nodejs.org/api/worker_threads.html。

9.3.1节

有关vector对象的更多信息,参见:https://en.cppreference.com/w/cpp/container/vector。

9.3.2节

如果感兴趣,可以在以下网页找到Clang支持的C++标准的更多信息:https://clang.llvm.org/cxx_status.html。

9.3.5节

关于MessageEvent对象的更多信息,参见MDN在线文档页面:http://mng.bz/pyPw。

9.4节

关于WebAssembly线程方案的更多信息,包括可用的各种原子内存指令的详细信息,参见以下的GitHub页面:http://mng.bz/O9xa。

要想了解Emscripten对pthread的更多支持,参见:https:// emscripten.org/docs/porting/pthreads.html。

9.4.1节

有关pthread属性对象的更多信息,参见:https://linux.die.net/man/3/pthread_attr_init。

9.5节

Pranav Jha和Senthil Padmanabhan合著的文章“WebAssembly at eBay: A Real-World Use Case”中详细介绍了eBay如何使用WebAssembly,其中结合了Web worker和一个JavaScript库来改进其条形码扫描器:http://mng.bz/Ye1a。

第 10 章

要想获取关于WASI的更多信息,以下论文提供了很好的讲解:Simon Bisson的“Mozilla Extends WebAssembly Beyond the Browser with WASI”,The New Stack, http://mng.bz/E19R。

10.4.1节

如果对学习更多Node.js File System对象感兴趣,可以访问:https://nodejs.org/api/fs.html。

如果想要了解关于File System模块的readFile函数以及可选的第二个参数的更多信息,可以访问:http://mng.bz/rPjy。

第 11 章

11.1节

可以在以下网址找到对象类型的内存与数字指令列表:http://webassembly.github.io/spec/core/text/instructions.html。

11.1.9节

要想了解有关新变量指令的更多信息,参见:http://mng.bz/xljX。

Fisher-Yates洗牌算法:https://gist.github.com/sundeepblue/10501662。

第12章

有关调试模式的更多信息,参见Emscripten文档:http://mng.bz/JzdZ。

关于-g标记的更多信息,参见:http://mng.bz/wlj5。

12.4.4节

关于LinkError的更多信息,参见MDN在线文档:http://mng.bz/qXjx。

第 13 章

以下网站提供了各种不同类型软件测试的更多信息:https://en.wikipedia.org/wiki/Software_testing。

13.1节

如果想要了解更多关于Mocha的信息,可以访问:https://mochajs.org。

关于Chai 的可用断言风格的更多信息,参见:www.chaijs.com/api。

虽然本章选择了Chai作为断言库与Mocha一起使用,但其实可以使用任何断言库。可以在以下网站找到若干可用库的列表:https://mochajs.org/#assertions。

13.2.3节

本节将要创建的HTML文件从Mocha的网站上复制而来,并进行了少量修改。原始文件参见:https://mochajs.org/#running-mocha-in-the-browser。

13.3节

可以访问https://github.com/WebAssembly/proposals来获得WebAssembly功能提案的列表及其当前状态。

Emscripten文档:https://emscripten.org。

Mozilla开发者网络上的WebAssembly文档很不错,位于:https://developer.mozilla.org/en-US/docs/WebAssembly。

附录 A

A.4节

样例wat2wasm支持输入文本格式并下载Wasm文件:https://webassembly.github.io/wabt/demo/wat2wasm。

样例wasm2wat支持上传一个Wasm文件并查看文本格式:https://webassembly.github.io/wabt/demo/wasm2wat。

对于本书中的示例,我们只需要使用在线样例wat2wasm,但如果需要,也可以下载工具包源码并在本地构造Wasm文件。克隆和构造工具包的指示参见:https://github.com/WebAssembly/wabt。

A.5节

如果不想使用CDN,则还需要下载jQuery。可以从以下地址下载:https://jquery.com/download。

附录 D

D.3.2节

Web浏览器有一个navigator对象,可以用navigator.onLine方法访问它来确定浏览器是否在线。如果想要了解关于这个方法的更多信息,可以访问MDN在线文档页面:http://mng.bz/yzZe。