Home

Awesome

WASM-Intro

A scratchpad of stuff in WebAssembly. All examples are written for simplicity, not good code style nor performance. Please do not use anything here in important stuff.

Much of the toolchain is based on yurydelendik's "Using WebAssembly in LLVM" gist.

Build environment

Run make build and make install in tools. This builds LLVM, clang, binaryen and WABT with correct stuff for WebAssembly compiling.

Examples

Build by running make in each directory. Test using python3 by running make serve and browsing to localhost:8000.

To build intermediate results from the C -> WASM compilation, try make main.s and make main.wat

Add

Simple function export example. Adds two numbers together and prints to console

Import/Export

Same as Add, now with an added step of delegating the addition back to JavaScript.

Memory

Poking an exported linear memory from JS and C.

Strings

Manipulating JS strings in C.

Malloc

Implementing a simple toy dynamic memory allocation scheme.

Animation

Some canvas functions imported to WASM, shows bouncing particles.

WebGL

Wraps a portion of WebGL API for importing to WASM, draws a moving triangle.

Pong

Wraps a little more of WebGL API for importing to WASM, plays Pong.