Index
A
- abstract syntax / Common structure and abstract syntax
- abstract syntax tree (AST) / Binary instruction format
- accounting.js
- reference link / Other libraries
- ahead-of-time (AOT) / Mozilla and asm.js
- api.js
- API, utilizing / Utilizing the API in api.js
- asm.js / Mozilla and asm.js
- AssemblyScript
- reference link / Binaryen
- Atom One Light theme / Material Icon theme and Atom One Light theme
B
- Binaryen
- about / The EMSDK and Binaryen, WABT and Binaryen, Binaryen
- tools / Binaryen
- binaryen.js library
- reference link / Binaryen
- binary format
- about / Binary format and the module file (Wasm)
- definition / Definition and module overview
- Board class, Tetris clone
- constructor / The constructor and draw() function
- draw() function / The constructor and draw() function
- isCollision() function / The isCollision() function
- unite() function / The unite() function
- displayScore() function / The displayScore() function
- book examples repository
- cloning / Cloning the book examples repository
- bracket pair colorizer / Bracket pair colorizer
- browser
- validating / Validating your browser, Validating other browsers
- browser-sync
- reference link / Other libraries
C
- C
- about / C and C++
- compiling, with Emscripten glue code / Compiling C with Emscripten glue code
- C++ / C and C++
- C/C++
- VS Code, configuring / Configuration for C/C++ and WebAssembly
- installing, for VS Code / Installing C/C++ for VS Code
- configuring, for VS Code / Configuring C/C++ for VS Code
- JavaScript functions, calling / Calling JavaScript functions from C/C++
- C code
- to Wat / C code to Wat
- used, for testing compiler / The C code
- compiling, with Emscripten / Compiling the C code
- compiling, without glue code / Compiling C without the glue code
- using, for WebAssembly / C code for WebAssembly
- about / The C code
- C file contents
- about / C file contents
- declarations / Declarations
- linked list operations / Linked list operations
- transactions operations / transactions operations
- transactions calculations / transactions calculations
- category calculations / Category calculations
- client-side WebAssembly with Webpack
- about / Client-side WebAssembly with Webpack
- overview / Overview of the project
- C code / The C code
- definitions and declarations section, C code / Definitions and declarations
- start() function / The start() function
- updateRectLocation() function / The updateRectLocation() function
- JavaScript code / The JavaScript code
- application, building / Building and running the application
- application, executing / Building and running the application
- build, testing / Testing the build
- start script, executing / Running the start script
- CLI options, Jest
- reference link / Running the tests
- compiler
- testing / Testing the compiler
- testing, with C code / The C code
- core specification, WebAssembly (Wasm)
- language concepts / Language concepts
- semantic phases / Semantic phases
- C portion
- building / Building the C portion
- overview / Overview
- workflow note / A note regarding workflow
- compiling, to Wasm / Compiling to Wasm
- C stdlib Wasm
- downloading / Downloading the C stdlib Wasm
D
- Data-Driven Documents (D3)
- reference link / Data-driven documents
- development tooling
- installing / Installing the development tooling
- operating systems / Operating systems and hardware
- hardware / Operating systems and hardware
- package managers / Package managers
- Git / Git
- Node.js / Node.js
- GNU make / GNU make and rimraf
- rimraf / GNU make and rimraf
- VS Code / VS Code
- about / Other tools
- iTerm2, for macOS / iTerm2 for macOS
- Terminator, for Ubuntu / Terminator for Ubuntu
- cmder, for Windows / cmder for Windows
- Zsh / Zsh and Oh-My-Zsh
- Oh-My-Zsh / Zsh and Oh-My-Zsh
- development workflow
- about / The development workflow
- steps / Steps in the workflow
- Tooling, integrating / Integrating Tooling into the workflow
E
- Embind / Embind
- Emscripten
- about / How does it relate to Emscripten?, Emscripten's role, Emscripten and the EMSDK
- overview / Emscripten overview
- C code, compiling / Compiling the C code
- glue code / Compiling C with Emscripten glue code
- example C code, writing / Writing the example C code
- example C code, compiling / Compiling the example C code
- features / Advanced Emscripten features
- libraries / A note about porting
- code base, porting to / Porting to Emscripten
- Emscripten module
- loading / Loading the Emscripten module
- pre-generated loading code / Pre-generated loading code
- custom loading code, writing / Writing custom loading code
- versus WebAssembly object / The Emscripten module versus the WebAssembly object
- about / What is the Emscripten module?
- methods, in glue code / Default methods in the glue code
- functions, calling / Calling functions from a Module
- debugging / Debugging in the browser, High-level overview
- source map, using / Using source maps
- Emscripten SDK (EMSDK)
- about / The EMSDK and Binaryen, Emscripten and the EMSDK
- working / Where does the EMSDK fit in?
- installing / Installing and configuring the EMSDK, Installation process across all platforms
- configuring / Installing and configuring the EMSDK
- installing, on macOS / Installation on macOS and Ubuntu
- installing, on Ubuntu / Installation on macOS and Ubuntu
- configuring, on Windows / Installation and configuration on Windows
- installing, on Windows / Installation and configuration on Windows
- configuring, on VS Code / Configuration in VS Code
- example code, LLVM
- C++ file / The C++ file
- HTML file / The HTML file
- existing code, porting to Emscripten
- about / Porting the existing code
- constants file, updating / Updating the constants file
- extensions, VS Code
- auto rename tag / Auto rename tag
- bracket pair colorizer / Bracket pair colorizer
- Material Icon theme / Material Icon theme and Atom One Light theme
- Atom One Light theme / Material Icon theme and Atom One Light theme
F
- features, Emscripten
- Embind / Embind
- File System API / File System API
- Fetch API / Fetch API
- Fetch API / Fetch API
- File System API
- reference link / File System API
- Flux Standard Action (FSA)
- reference link / Defining thread execution in worker.js
G
- Game class, Tetris clone
- constructor / The constructor and destructor
- destructor / The constructor and destructor
- loop() function / The loop() function
- garbage collection (GC) / No garbage collection, Garbage collection
- Git
- about / Git
- installing, on macOS / Installing Git on macOS
- installing, on Ubuntu / Installing Git on Ubuntu
- installing, on Windows / Installing Git on Windows
- GitHub, Binaryen
- reference link / Binaryen
- global state
- declarations, importing / The import and store declarations
- declarations, storing / The import and store declarations
- transactions operations / Transactions operations
- TransactionModal management / TransactionModal management
- balances objects, calculating / Balances calculation
- store initialization / Store initialization
- glue code
- used, for compiling C / Compiling C with Emscripten glue code
- about / Compiling C with Emscripten glue code
- used, for outputting HTML / Outputting HTML with glue code
- outputting, without HTML / Outputting glue code with no HTML
- compiling, with Build Task in VS Code / Compiling with a Build Task in VS Code
- methods / Default methods in the glue code
- used, for interacting with JavaScript / Interacting with JavaScript using glue code
- GNU make
- about / GNU make and rimraf
- validating, on macOS / GNU Make on macOS and Ubuntu
- validating, on Ubuntu / GNU Make on macOS and Ubuntu
- installing, on macOS / Installing GNU Make on macOS
- installing, on Ubuntu / Installing GNU Make on Ubuntu
- installing, on Windows / Installing GNU make on Windows
- Google / Google and Native Client
- Google Chrome
- validating / Validating Google Chrome
H
- hardware / Operating systems and hardware
- Homebrew-Cask / Homebrew for macOS
- host bindings
- reference link / Host bindings
- HTML
- outputting, with glue code / Outputting HTML with glue code
I
- initializeWasm.js
- Wasm instance, creating / Creating a Wasm instance in initializeWasm.js
- Intermediate Representation (IR) / Emscripten overview, Binaryen
J
- JavaScript
- evolution / The evolution of JavaScript
- about / The JavaScript and Web APIs
- object caches / WebAssembly store and object caches
- compiled C/C++ functions, calling / Calling compiled C/C++ functions from JavaScript
- Module.ccall() / Module.ccall()
- Module.cwrap() / Module.cwrap()
- name mangling / C++ and name mangling
- functions, calling from WebAssembly instance / Calling functions from a WebAssembly instance
- interacting, with glue code / Interacting with JavaScript using glue code
- interacting, without glue code / Interacting with JavaScript without glue code, Calling imported functions in C/C++, An example without glue code, The HTML code, Compiling and serving the result
- JavaScript code
- about / The JavaScript code
- thread execution, defining in worker.js / Defining thread execution in worker.js
- application, loading in index.js / Loading the application in index.js
- JavaScript code, client-side WebAssembly with Webpack
- import statements / The import statements
- component state / Component state
- Wasm initialization / Wasm initialization
- component mounting / Component mounting
- component rendering / Component rendering
- JavaScript functions
- calling, from C/C++ / Calling JavaScript functions from C/C++
- glue code, using / Examples of using glue code, The C code, The HTML code, Compiling and serving the result
- JavaScript functions, from C/C++
- emscripten_run_script(), used, for executing strings / Executing strings with emscripten_run_script()
- EM_ASM(), used for executing inline JavaScript / Executing inline JavaScript with EM_ASM()
- EM_JS(), used for reusing inline JavaScript / Reusing inline JavaScript with EM_JS()
- JavaScript libraries
- about / JavaScript libraries used
- Vue / Vue
- UIkit / UIkit
- Lodash / Lodash
- Data-Driven Documents (D3) / Data-driven documents
- JavaScript loading code / Common JavaScript loading code
- JavaScript portion
- building / Building the JavaScript portion
- overview / Overview
- browser compatibility note / A note about browser compatibility
- Jest
- WebAssembly modules, testing / Testing WebAssembly modules with Jest
- just-in-time (JIT) compilers / The evolution of JavaScript
L
- last in, first out (LIFO) / Binary instruction format
- LLVM
- WebAssembly, compiling with / Compiling with LLVM
- example code / The example code
- example, compiling / Compiling and running the example
- example, running / Compiling and running the example
- local server
- installing / Installing a local server
- Lodash
- reference link / Lodash
- long-term stable (LTS) / nvm
M
- macOS
- about / macOS
- Git, installing / Installing Git on macOS
- nvm, installing / Installing nvm on macOS
- GNU Make, validating / GNU Make on macOS and Ubuntu
- GNU Make, installing / Installing GNU Make on macOS
- VS Code, installing / Installing Visual Studio Code on macOS
- iTerm2 / iTerm2 for macOS
- prerequisites, installing / Installing the prerequisites on macOS
- Emscripten SDK (EMSDK), installing / Installation on macOS and Ubuntu
- main.js
- WebAssembly project, loading / Loading the application in main.js
- Material Icon theme / Material Icon theme and Atom One Light theme
- mock API
- setting up / Setting up a mock API
- Mozilla / Mozilla and asm.js
- Mozilla Developer Network (MDN) / Loading a module and the WebAssembly namespace methods
- Mozilla Firefox
- validating / Validating Mozilla Firefox
N
- Native Client (NaCl) / Google and Native Client
- Node.js
- about / Node.js, Why Node.js?
- nvm, using / nvm
- installing, with nvm / Installing Node.js using nvm
- seamless integration / Seamless integration
- complementary technologies / Complementary technologies
- Node Version Manager (nvm)
- about / Node.js, nvm
- installing, on macOS / Installing nvm on macOS
- installing, on Ubuntu / Install nvm on Ubuntu
- installing, on Windows / Installing nvm on Windows
- used, for installing Node.js / Installing Node.js using nvm
- npm / Development with npm
O
- objects, WebAssembly (Wasm)
- WebAssembly.Module / WebAssembly.Module
- WebAssembly.Instance / WebAssembly.Instance
- WebAssembly.Memory / WebAssembly.Memory
- WebAssembly.Table / WebAssembly.Table
- WebAssembly errors / WebAssembly errors (CompileError, LinkError, RuntimeError)
- Oh-My-Zsh / Zsh and Oh-My-Zsh
- online tooling
- about / Online tooling
- WasmFiddle / WasmFiddle
- WebAssembly Explorer / WebAssembly Explorer
- WebAssembly Studio / WebAssembly Studio
- operating systems / Operating systems and hardware
- operating systems, development tooling
P
- package managers
- about / Package managers
- Homebrew, for macOS / Homebrew for macOS
- Apt, for Ubuntu / Apt for Ubuntu
- Chocolatey, for Windows / Chocolatey for Windows
- parallel Wasm
- with Web Workers / Parallel Wasm with Web Workers
- piece class, Tetris clone
- constructor / The constructor and draw() function
- draw() function / The constructor and draw() function
- rotate() function / The move(), rotate(), and isBlock() functions
- move() function / The move(), rotate(), and isBlock() functions
- isBlock() function / The move(), rotate(), and isBlock() functions
- getColumn() function / The getColumn() and getRow() functions
- getRow() function / The getColumn() and getRow() functions
- Portable Native Client (PNaCl) / Google and Native Client
- prerequisites
- installing / Installing the prerequisites
- about / Common prerequisites
- installing, on macOS / Installing the prerequisites on macOS
- installing, on Ubuntu / Installing the prerequisites on Ubuntu
- installing, on Windows / Installing the prerequisites on Windows
R
- README file, WABT GitHub
- reference link / WABT – the WebAssembly binary toolkit
- rimraf
- about / GNU make and rimraf
- installing / Installing rimraf
- Rust / Rust
S
- SDL2 / What's changing?
- server-side WebAssembly with Express
- about / Server-side WebAssembly with Express
- overview / Overview of the project
- Express, configuring / Express configuration
- Wasm module, instantiating with Node.js / Instantiating a Wasm module with Node.js
- mock database, creating / Creating a mock database
- WebAssembly module interaction / Interacting with the WebAssembly module
- transaction operations, in assign-routes.js / Transaction operations in assign-routes.js
- application, building / Building and running the application, Building the application
- application, starting / Starting and testing out the application
- application, testing / Starting and testing out the application
- Simple DirectMedia Layer (SDL2) / Writing the example C code
- store.js
- global state, managing / Managing global state in store.js
- structure / Common structure and abstract syntax
- supporting languages, WebAssembly (Wasm)
- symbolic expressions (S-expressions) / Definitions and S-expressions
T
- Technical Committee 39 (TC39) / The evolution of JavaScript
- Tetris
- about / What is Tetris?
- in action / The game in action
- Tetris clone
- overview / Overview of the game
- porting note / A note about porting
- code, breaking into objects / Breaking the code into objects
- constants file / The constants file
- piece class / The piece class
- Board class / The Board class
- Game class / The Game class
- main file / The main file
- building, with VS Code tasks / Building with VS Code tasks
- building, with Makefile / Building with a Makefile
- running / Running the game
- threads
- about / Parallel Wasm with Web Workers
- reference link / Threads
- tools, Binaryen
U
- Ubuntu
- about / Ubuntu
- Git, installing / Installing Git on Ubuntu
- nvm, installing / Install nvm on Ubuntu
- GNU Make, validating / GNU Make on macOS and Ubuntu
- GNU Make, installing / Installing GNU Make on Ubuntu
- VS Code, installing / Installing Visual Studio Code on Ubuntu
- Terminator / Terminator for Ubuntu
- prerequisites, installing / Installing the prerequisites on Ubuntu
- Emscripten SDK (EMSDK), installing / Installation on macOS and Ubuntu
- UIkit
- reference link / UIkit
- upcoming features, WebAssembly
- about / Upcoming features
- standardization process / The standardization process
- threads / Threads
- host bindings / Host bindings
- garbage collection (GC) / Garbage collection
- reference types / Reference types
V
- version control system (VCS) / Git
- VS Code
- about / VS Code
- installing, on macOS / Installing Visual Studio Code on macOS
- installing, on Ubuntu / Installing Visual Studio Code on Ubuntu
- installing, on Windows / Installing VS Code on Windows
- configuring / Configuring VS Code
- settings, managing / Managing settings and customization
- customization / Managing settings and customization
- extensions overview / Extensions overview
- configuring, for C/C++ / Configuration for C/C++ and WebAssembly
- configuring, for Webassembly / Configuration for C/C++ and WebAssembly
- installing, for C/C++ / Installing C/C++ for VS Code
- C/C++, configuring / Configuring C/C++ for VS Code
- WebAssembly Toolkit / WebAssembly Toolkit for VSCode
- extensions / Other useful extensions
- Emscripten SDK (EMSDK), configuring / Configuration in VS Code
- Built Task, glue code compiling / Compiling with a Build Task in VS Code
- VS Code Marketplace
- reference link / WebAssembly Toolkit for VSCode
- Vue
- reference link / Vue
- Vue-numeric
- reference link / Other libraries
- Vue components
- creating / Creating the Vue components
- structure / The structure of a Vue component
W
- Wasm
- c portion, compiling / Compiling to Wasm
- interacting, in WasmTransactions.js / Interacting with Wasm in WasmTransactions.js
- wasm2c / WABT – the WebAssembly binary toolkit
- WasmFiddle
- used, for connecting dots / Connecting the dots with WasmFiddle
- about / What is WasmFiddle?, WasmFiddle
- reference link / WasmFiddle
- Wasm file
- to JavaScript / Wasm to JavaScript
- fetching / Fetching and instantiating a Wasm file
- instantiating / Fetching and instantiating a Wasm file
- JavaScript loading code / Common JavaScript loading code
- HTML page / The HTML page
- Wasm instance
- creating, in initializeWasm.js / Creating a Wasm instance in initializeWasm.js
- Wasm module
- about / Binary format and the module file (Wasm), The JavaScript and Web APIs
- overview / Definition and module overview
- sections / Module sections
- JavaScript / The JavaScript and Web APIs
- loading / Loading a module and the WebAssembly namespace methods
- Wasm to Wat (wasm2wat) / WABT – the WebAssembly binary toolkit
- WasmTransactions.js
- Wasm, interacting with / Interacting with Wasm in WasmTransactions.js
- WasmWorker.js
- interaction, with Wasm / Interacting with Wasm in WasmWorker.js
- Wat
- about / Wat
- definitions / Definitions and S-expressions
- symbolic expressions (S-expressions) / Definitions and S-expressions
- values / Values, types, and instructions
- types / Values, types, and instructions
- instructions / Values, types, and instructions
- development process role / Role in the development process
- Wat to Wasm (wat2wasm) / WABT – the WebAssembly binary toolkit
- Web APIs / The JavaScript and Web APIs
- WebAssembly (Wasm)
- about / The road to WebAssembly, WebAssembly is born, What exactly is WebAssembly and where can I use it?, So will it replace JavaScript?, Web Workers and WebAssembly
- using / What exactly is WebAssembly and where can I use it?, Where can I use it?
- definition / Official definition
- reference link / Official definition, The installation process
- binary instruction format / Binary instruction format
- portable target, using for compilation / Portable target for compilation
- core specification / The core specification
- JavaScript / The JavaScript and Web APIs
- Web APIs / The JavaScript and Web APIs
- supporting languages / What languages are supported?, Other languages
- limitations / What are the limitations?, No garbage collection, No support in older browsers
- namespace methods / Loading a module and the WebAssembly namespace methods
- objects / WebAssembly objects
- VS Code, configuring / Configuration for C/C++ and WebAssembly
- C code, using / C code for WebAssembly
- building / Cook the Books – making WebAssembly accountable
- functionality / Overview and functionality
- overview / Overview and functionality
- JavaScript libraries / JavaScript libraries used
- C, using / C and the build process
- build process / C and the build process
- workflow / The WebAssembly workflow
- limitations, in Google Chrome / Limitations in Google Chrome
- upcoming features / Upcoming features
- WebAssembly.Instance / WebAssembly.Instance
- WebAssembly.Memory / WebAssembly.Memory
- WebAssembly.Module / WebAssembly.Module
- WebAssembly.Table / WebAssembly.Table
- WebAssembly binary toolkit (WABT) / WABT and Binaryen, WABT – the WebAssembly binary toolkit
- WebAssembly errors / WebAssembly errors (CompileError, LinkError, RuntimeError)
- WebAssembly Explorer
- reference link / WebAssembly Explorer
- about / WebAssembly Explorer
- WebAssembly instance
- functions, calling / Calling functions from a WebAssembly instance
- webassemblyjs
- reference link / Development with npm
- WebAssembly modules
- interaction, wrapping in Transaction.js / Wrapping interaction in Transaction.js
- testing, with Jest / Testing WebAssembly modules with Jest
- code, testing / The code being tested
- testing configuration / Testing configuration
- test file review / Tests file review
- tests, running / Running the tests
- WebAssembly object
- versus Emscripten Module / The Emscripten module versus the WebAssembly object
- differences / Differences with the WebAssembly object
- WebAssembly project
- setting up / Setting up the project
- Node.js, configuring / Configuring for Node.js
- files, adding / Adding files and folders
- folders, adding / Adding files and folders
- build step, configuring / Configuring the build step
- mock API, setting up / Setting up a mock API
- C stdlib Wasm, downloading / Downloading the C stdlib Wasm
- about / The final result
- web assets, adding / Adding the web assets
- Vue components, creating / Creating the Vue components
- App component / The App component
- BalancesBar / The BalancesBar
- TransactionsTab / The TransactionsTab
- ChartsTab / The ChartsTab
- executing / Running the application
- /src folder, validating / Validating the /src folder
- starting / Start it up!
- testing / Testing it out
- initial balances, changing / Changing initial balances
- transaction, creating / Creating a new transaction
- existing transaction, deleting / Deleting an existing transaction
- existing transaction, editing / Editing an existing transaction
- ChartsTab, testing / Testing the Charts tab
- WebAssembly store / WebAssembly store and object caches
- WebAssembly Studio
- reference link / WebAssembly Studio
- about / WebAssembly Studio
- WebAssembly Toolkit
- for VS Code / WebAssembly Toolkit for VSCode
- WebAssembly W3C Process documentation
- reference link / The standardization process
- web assets / The web assets
- Webpack
- about / What is Webpack?
- installing / Installing and configuring Webpack
- configuring / Installing and configuring Webpack
- dependencies overview / Dependencies overview
- webpack.config.js
- loaders, configuring / Configuring loaders and plugins in webpack.config.js
- plugins, configuring / Configuring loaders and plugins in webpack.config.js
- web server
- setting up / Setting up for the web
- book examples repository, cloning / Cloning the book examples repository
- Web Workers
- parallel Wasm / Parallel Wasm with Web Workers
- about / Web Workers and WebAssembly
- code overview / Overview of the code
- Web Workers application
- building / Building and running the application
- executing / Building and running the application
- C files, compiling / Compiling the C files
- interacting with / Interacting with the application
- debugging / Debugging Web Workers
- Windows
- about / Windows
- Git, installing / Installing Git on Windows
- nvm, installing / Installing nvm on Windows
- GNU make, installing / Installing GNU make on Windows
- VS Code, installing / Installing VS Code on Windows
- cmder / cmder for Windows
- prerequisites, installing / Installing the prerequisites on Windows
- Emscripten SDK (EMSDK), installing / Installation and configuration on Windows
- Emscripten SDK (EMSDK), configuring / Installation and configuration on Windows
- worker
- creating / Creating a worker
- reference link / Creating a worker
- World Wide Web Consortium (W3C) / WebAssembly is born
Z
- Zsh / Zsh and Oh-My-Zsh