Appendix C: Further Reading

#The specificationC.1

The WebAssembly specification, at webassembly.github.io/spec, is unusually readable for a standard. Its structure section defines the abstract syntax; validation gives the typing rules as inference rules (Chapter 6's stack typing, precisely); execution defines what each instruction does; and the binary and text format sections are the definitive references for Part IV. The JavaScript API and Web API specifications, beside it, define everything in Part V.

Proposals each have a repository under github.com/WebAssembly, with an overview document explaining the design and its motivation. The overviews for exception handling, GC, tail calls, threads and relaxed SIMD are the best introductions to those features after this book. webassembly.org/features tracks which engines support which proposals.

The tool conventions repository, WebAssembly/tool-conventions, documents what is not part of the standard but is shared by toolchains: the C ABI, the linking and relocation format of object files, the producers section, DWARF usage, and the dynamic linking convention.

#PapersC.2

#Compilers to readC.3

The best way to learn how to target WebAssembly is to read the output of existing compilers, with wasm2wat or wasm-objdump -d, for small programs in their source languages:

#BooksC.4