
Explore why you should watch this WebAssembly course, from what WebAssembly is and its history to hands-on coding with Emscripten, compiling locally, memory, table, and glue code.
Follow a linear, basics-to-advanced path to maximize learning; code along, open a text editor, practice with your own examples, and advanced learners can jump to middle sections.
WebAssembly runs in modern browsers alongside JavaScript, delivering near native speed. It serves as a compilation target for C, C++, Rust, and other languages, and can be imported from JavaScript.
WebAssembly aims for near native speed with compact size and fast load times, ensuring portability across browsers and non-browser environments, including mobile, while interoperating with JavaScript via web APIs.
Explore how web assembly works as a two-part platform: a javascript-driven virtual machine and a set of APIs that control browser and web device functionality with near-native performance.
Explore the history of asm.js, a subset of JavaScript that lets C programs run as web apps with manual memory management and static typing-inspired performance, later superseded by better assembly.
explain the asm.js syntax, a legacy subset of javascript used as a compilation target for faster code in web assembly, with typecasting for integers, doubles, and floats.
Discover how minimum viable product finished in March 2017 delivered functionality similar to esm aimed at C/C++, and how modules compile C code to JavaScript via a binary, stack-based WebAssembly.
Discover WebAssembly use cases across image and video editing, faster game rendering, and cryptography, plus very low latency VR/AR, peer-to-peer apps, and faster web servers.
Explore upcoming features in WebAssembly, including motor threading, exception handling, reference types, and garbage collection. Learn strategies to test feature availability across engines and decide which module version to load.
Explore creating a wasm module by converting simple c/c++ code to wasm text format, exporting functions to JavaScript, and comparing performance across C++, wasm, and JavaScript.
Explore how to instantiate a WebAssembly module in JavaScript by fetching the module, converting to an array buffer, and using the instantiate function, while handling exports, memory, and function naming.
Demonstrates streaming instantiation of a WebAssembly module via fetch, fixes MIME type with a local Express server returning application/wasm, and compares WebAssembly vs JavaScript performance using a Fibonacci test.
Explore how the Emscripten compiler translates C and C++ code into WebAssembly, using clang/llvm and JavaScript glue code to bridge DOM access and web APIs.
Install Emscripten by following platform-specific prerequisites, clone or download the script project, and configure your terminal to compile C and C++ programs with Emscripten on Linux, Mac, or Windows.
Compare performance of C++ native, Wasm, and JavaScript by sorting a large random array and timing with high-resolution clocks, exploring emscripten glue code and optimizations.
Learn how to create a standalone WebAssembly module from C or C++ code, with or without JavaScript glue code, and manage memory, table, imports, and function exports for instantiation.
Explore linear memory, a space accessed by load and store. Create a memory object with initial 10 pages and max 20, using it with web assembly imports to transfer data.
discover how verb assembly tables store function references in a memory safe table, using get, set, and grow to manage and call exported functions from javascript and c++.
Explore defining and using global variables in WebAssembly with the global constructor, including types i32, i64, f32, f64, mutability, and import/export across modules.
Learn WebAssembly text basics, including module and function declarations, signatures, locals, the instruction body, and stack-based execution as a textual representation of the binary file.
Learn to use the Wabt toolkit to convert wasm text to binary and back, explore both online demo and local setup, and run example code from the instructions.
Learn to export and call web assembly functions from both web assembly and javascript, import javascript functions into web assembly, and share global variables using global get and set.
Learn how to store and print strings in WebAssembly by using a memory buffer, the data section, and an imported print function, passing offset and length from wasm to JavaScript.
Explore advanced tables in WebAssembly, storing function references, using call_indirect with dynamic function types, and implementing type checks to safely call table functions.
Explores dynamic linking in wasm by sharing memory and a function table across modules, enabling shared function calls and memory updates.
Explore how the Emscripten module object and glue code expose and initialize exported functions like fibonacci, control timing with the manual array, and customize output via print to stdout.
Call exported C and C++ functions from JavaScript using wrap and call, handling memory with malloc and free and passing arrays and pointers safely.
Learn how to call JavaScript from native C and C++ in WebAssembly using Emscripten methods. Explore three approaches: run_script, EM_ASM, and EM_JS, with parameters and return values.
Learn to parallelize a C++ sudoku solver in WebAssembly by reading puzzles from a file, using threads, and embedding input into a virtual file system via command line arguments.
Debug WebAssembly by using the -g flag for debugging information, set breakpoints, and step through C++ to wasm code in Chrome and Firefox with source maps.
Use emrun to serve WebAssembly projects with its built-in web server, choose browsers, and open in default or specified browser. Capture standard output and errors, control port, and enable logging.
Install and configure the web assembly toolchain by matching cute and script time versions, download the open source package, and compile a simple browser project.
Create and run a demo project with the cute creator, add simple ui elements like buttons and a calendar widget, then compile to web assembly and view in a browser.
Congratulate yourself on completing the course and commit to practicing WebAssembly, using documentation, forums, and the Chrome extensions course for further learning.
In this course you will learn what WebAssembly is, how can you use it and benefit from its capabilities.
This is a brand new technology which lets you to run your C/C++, Rust, AssemblyScript code (and many more to come) on the web by using assembly-like binary files.
You will learn:
To compile your C/C++ code to the WebAssembly binary format (wasm) using online compilers, and after this, the Emscripten toolkit locally.
The low-level building blocks of a WebAssembly module
The WebAssembly Text Format (wat) and use it to solve complex problems
How to use the Emscripten Module object and the generated glue code
Call C/C++ functions from JavaScript and vice-versa
Debug and launch the Emscripten web server
Compile a Qt project to WebAssembly
If you want to be a part of the future of the web development, this is the best place for you to start. You will get to an advanced level of using the web assembly technology in no time.
It is recommended to have a basic understanding of Javascript and C/C++, but this course is beginner friendly, so it shouldn't be hard to understand for anybody. We will focus on both theory and practice to make sure you both understand the concepts and can apply them.