π§ͺ WebAssembly Showcase
A static site built entirely in GitHub-Flavored Markdown β no HTML hand-coding, no JavaScript build step. Served by GitHub Pages.
![]()
π About
This page is a small portfolio of WebAssembly (WASM) applications running in the browser. WASM is a binary instruction format that lets code written in C, C++, Rust, Go, and other languages run on the web at near-native speed.
This page itself is written in index.md and rendered by Jekyll on GitHub Pages.
π― Goals
- Set up a GitHub Pages repository
- Write content in pure Markdown
- Use a handful of GFM features
- Link to interesting WASM demos
- Add a custom domain (optional)
π Featured WASM Applications
| Application | Language | Demo | Notes |
|---|---|---|---|
| v86 | C / JS | Try it | x86 PC emulator running Linux in your browser |
| Qt for WASM | C++ | Slate | Full Qt apps compiled to WASM |
| Photon | Rust | Demo | High-performance image processing |
| SQLite WASM | C | Fiddle | SQLite running in the browser |
| FFmpeg.wasm | C | Playground | Transcode video client-side |
A more comprehensive list lives in Awesome WebAssembly Applications.
π‘ Why WebAssembly?
WebAssembly is the portable compilation target for the web β a sandboxed VM that runs anywhere a modern browser does.
Three properties that matter:
- Speed β near-native performance for compute-heavy work
- Portability β same
.wasmbinary runs on every platform - Security β sandboxed by design, with explicit imports/exports
Languages that compile to WASM
- C / C++ via Emscripten
- Rust via
wasm-pack/wasm-bindgen - Go (with caveats around binary size)
- AssemblyScript (TypeScript-like)
- Zig, Kotlin, .NET (Blazor), Python (Pyodide), and
Java(via TeaVM, niche)
π οΈ How This Site Was Built
Repository structure
.
βββ index.md # this page
βββ diary.md # learning diary
βββ _config.yml # Jekyll config
βββ README.md # repo readme
Minimal Jekyll config
title: WASM Showcase
description: Static site exploring WebAssembly
theme: jekyll-theme-cayman
markdown: kramdown
A taste of code-block syntax highlighting
// A trivial Rust function compiled to WASM
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}
// Loading the resulting wasm module
const { instance } = await WebAssembly.instantiateStreaming(
fetch("add.wasm")
);
console.log(instance.exports.add(2, 3)); // β 5
π Performance perspective
A rough comparison of a CPU-bound task (matrix multiplication, ~1000Γ1000):
| Runtime | Relative time | Notes |
|---|---|---|
| Native C | 1.0Γ | baseline |
| WASM | ~1.2Γ | very close to native |
| JavaScript (V8) | ~2β3Γ | depends heavily on JIT |
| Python | ~50Γ | interpreted |
[!NOTE] Numbers are illustrative β real benchmarks depend heavily on the workload, browser, and compiler flags.
[!TIP] For image/audio/video processing in the browser, WASM is almost always worth it.
[!WARNING] WASM startup has a one-time compilation cost. For tiny operations, plain JavaScript is often faster overall.
π§© Diagram β how WASM fits in the browser
flowchart LR
A[Source: C / Rust / Go] -->|compile| B[.wasm binary]
B --> C[Browser fetches .wasm]
C --> D[WebAssembly VM]
D <--> E[JavaScript glue]
E <--> F[DOM / Web APIs]
β Task list
- Create repository
- Enable GitHub Pages
- Write
index.md - Add learning diary
- Submit course assignment
π Further reading
Click to expand the reading list
- [WebAssembly.org β official site](https://webassembly.org/) - [MDN: WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly) - [Rust and WebAssembly Book](https://rustwasm.github.io/docs/book/) - [Emscripten Documentation](https://emscripten.org/docs/index.html) - [Bytecode Alliance](https://bytecodealliance.org/) - [WASI β WebAssembly System Interface](https://wasi.dev/)π Footnotes & inline formatting samples
You can write bold, italic, strikethrough, inline code, links, and even a footnote1.
A blockquote with attribution:
βThe web is the largest ungoverned space humans have ever built.β β paraphrased, from a talk on WebAssembly
π Learning Diary
The full learning diary, including screenshots and reflections, lives here: π Read the learning diary β
Built with β€οΈ and Markdown Β· Hosted on GitHub Pages
-
Footnotes render correctly on GitHub Pages with the default kramdown processor.Β ↩