Awesome Wasm
Collection of awesome things regarding WebAssembly (wasm) ecosystem.
Please read the contribution guidelines if you want to contribute.
Contents
- General Resources
- Online Playground
- Tutorials
- Compilers
- Non-Web Embeddings
- Projects
- Languages
- Tools
- Gists
- Examples
- Benchmarks
- Articles
- Video
- Slides
- Community
- Books
- Papers
- Demos
- Resources in other languages
General Resources
- Official Site
- Github
- WebAssembly MDN
- WebAssembly Wikipedia
- WebAssembly Specification
- WebAssembly and Friends Roadmap
- WebAssembly Rocks
Online Playground
- WebAssembly Explorer
- WebAssembly Playground
- WasmFiddle
- Assembleash - WebAssembly and Typescript-like languages playground
- Wat2Wasm
- Wasm2Wat
- WebAssembly Studio
Tutorials
- Developer's Guide
- WebAssembly Physics and DOM objects (2018)
- egghead.io: Get Started Using WebAssembly (WASM)(2017)
- The Path to Rust on the Web (2017)
- WebAssembly 101: a developer first steps (2017)
- Emscripten/HTML Integration Tips (2017)
- Compiling Rust to WebAssembly Guide (2017)
- How to get a performance boost using WebAssembly (2017)
- Getting Started With WebAssembly in Node.js (2017)
- Build Your First Thing With WebAssembly (2016)
- WebAssembly — The missing tutorial (2016)
- Webassembly initial steps tutorial (2016)
Compilers
- Emscripten - LLVM-based project that compiles C and C++
- Binaryen - Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++
- Rust - A safe, concurrent, practical language
- ilwasm - CIL to WebAssembly compiler
- WebAssembly for the GNU Toolchain
- faust2 - Functional programming language for signal processing and sound synthesis
- Asterius - A Haskell to WebAssembly compiler
- PPCI.wasm - PPCI Can compile wasm to machine code and run it in the Python process
Non-Web Embeddings
Projects
Web frameworks-libraries
- asm-dom - A minimal WebAssembly virtual DOM to build C++ SPA
- Blazor - Microsoft's experimental web UI framework using C#/Razor and HTML, running client-side via WebAssembly
- Yew - Rust framework for making client web apps
- Perspective - Streaming pivot visualization via WebAssembly
Data processing
WebGL
- ammo.js - direct port of the Bullet physics engine to JavaScript using Emscripten
- Particle System - an experiment designed to benchmark web technologies: ES6, Emscripten and Web Assembly
- Oryol - a small, portable 3D coding framework written in C++
webpack
Browserify
node.js
- webassembly - A minimal toolkit and runtime to produce and run WebAssembly modules.
- wasm-pack - pack up the wasm and publish it to npm!
Others
- wasm-init - Work environment and code generator for WebAssembly projects
- wasm - Python WebAssembly decoder & disassembler library
- MXnet.js - ASM.js build of MXNet, deep learning (neural nets and so) library
- YAKC - a multi-system 8-bit emulator written in C++
- Eufa - a high efficient utility functions library written in webassembly
- Argon2 in browser - Argon2 library compiled for browser runtime
- cld3-asm - Wasm based JS binding for Google compact language detector 3
- hunspell-asm - Wasm based JS binding for Hunspell spellchecker
- wasm-bindgen - Interoperating JS and Rust code
Languages
Esoteric
JavaScript-family
- TurboScript - A TypeScript-like language that compiles to asm.js and WebAssembly
- speedy.js - Accelerate JavaScript Applications by Compiling to WebAssembly
- AssemblyScript - A subset of TypeScript that compiles to WebAssembly
Lua
OCAML
Python
- Pyodide - The Python scientific stack running in the browser
- Rocket game - Rocket, written in Rust, compiled to WASM, running in Python (using PPCI)
Rust
TCL
WASM-like
- wah - a slightly higher-level language superset of webassembly
- Walt - Alternative Syntax for WebAssembly
Tools
Kits
- WABT - A suite of tools that help working with WASM binary files
- webassembly-binary-toolkit - The WABT tools installable as an npm package
Editor
- vim-wasm - WebAssembly filetype support for Vim
- vscode wast - WebAssembly(S-expression) support
- Atom language-wast
- vscode-wasm - WebAssembly toolkit for vscode
Gists
- Standalone WebAssembly Example
- helloworld.wast
- Using WebAssembly in LLVM
- Calling alert from WebAssembly (WASM)
Examples
- webassembly-examples
- Factorial in WebAssembly
- WebAssembly vs. JavaScript Animation Demo
- Web DSP
- wasm-intro - Tiny WebAssembly Examples with LLVM/clang and C
- webassembly-examples - From Simple To Complex.
- D3 force layout with WebAssembly
- wasmBoy - Gameboy Emulator Library written in Web Assembly using AssemblyScript
- CppOpenGLWebAssemblyCMake - C++/OpenGL/OpenAL/GLFW/GLM based app built with CMake to native or WebAssembly
Benchmarks
- WebAssembly Video Editor
- 3D skeletal animation system
- Cubes JS vs Cubes (WebAssembly)
- JavaScript vs WebAssembly easy benchmark
- Performance Testing Web Assembly vs JavaScript
- A Real-World WebAssembly Benchmark by PSPDFKit
Articles
- Writing WebAssembly By Hand (2018)
- Ruby on WebAssembly (2018)
- Optimizing WebAssembly Startup Time - 4 simple yet effective solutions to reduce load time. (2018)
- WebAssembly: A New Hope (2017)
- Creating a WebAssembly module instance with JavaScript (2017)
- Memory in WebAssembly (and why it’s safer than you think) (2017)
- WebAssembly table imports… what are they? (2017)
- WebAssembly Demystified (2017)
- A cartoon intro to WebAssembly (2017)
- Creating and working with WebAssembly modules (2017)
- What makes WebAssembly fast? (2017)
- Where is WebAssembly now and what’s next? (2017)
- Web Games Platform: Newest Developments (2017)
- Why WebAssembly is Faster Than asm.js (2017)
- Firefox 52: Introducing Web Assembly, CSS Grid and the Grid Inspector (2017)
- Previewing the WebAssembly Explorer (2017)
- Why WebAssembly is a game changer for the web — and a source of pride for Mozilla and Firefox (2017)
- Introduction to WebAssembly (2017)
- Boost your Web Application with C++! Emscripten, ASM.js, Web Assembly ... (2016)
- What is WebAssembly? (2015)
- 7 Things You Should Know About WebAssembly (2015)
- WebAssembly: a binary format for the web (2015)
- Compiling to WebAssembly: It’s Happening! (2015)
- The Future of Programming: WebAssembly & Life After JavaScript (2015)
Video
- Build the future of the web with WebAssembly and more (Google I/O '18)
- WebAssembly and the Death of JavaScript?
- Practical WebAssembly
- A Cartoon Intro to WebAssembly (2017)
- WebAssembly Demystified (2017)
- Meeting C++ 2016: Implementing a web game in C++14 - Kris Jusiak (2016)
- CppCon 2016: Dan Gohman “C++ on the Web: Let's have some serious fun." (2016)
- NYLUG Presents: Luke Wagner -on- WebAssembly: A New Compiler Target For The Web (2016)
- WebAssembly and the Future of the Browser (2016)
- From ASM.JS to WebAssembly (2015)
- WebAssembly and the Future of the Web (2017)
- Web Assembly - Nick Bray - GOTO 2015 - (2015)
- Web Assembly - Nick Bray - BlinkOn 5 - (2016)
- Compiling for the Web with WebAssembly (Google I/O '17)
- Real World WebAssembly (Chrome Dev Summit 2017)
Slides
- Boost your web application with C++ (2016)
- WebAssembly (Do we all have to learn C now?)
- WebAssembly (2016)
- WebAssembly overview (2016)
- Emscripten and WebAssembly (2015)
- An intro to WebAssembly (2015)
Community
- W3C Community Group
- StackOverflow
- Slack: WebAssembly Developers (click here to get an invitation)
- WasmWeekly - a weekly newsletter
- WebAssembly AMA
Papers
Books
Demos
- Tanks - a Unity game which has been exported to WebAssembly
- Cubes - direct port of the Bullet physics engine
- Basic4GL
- Symatem - an Ontology Engine, Visualizer, and Editor
- Epic Zen Garden
- Funky Karts
- PSPDFKit for Web - a WebAssembly-based PDF viewer with annotation features
Resources in other languages
Simple Chinese
Russian
- KharkivJS #5: Serious JS (Kharkiv, Ukraine, November 7, 2015) - WebAssembly: new era of Web (video)
- OdessaJS 2017 - Real world WebAssembly (video)
- Урок-введение по WebAssembly на примере игры “Жизнь” (article)
Spanish
License
To the extent possible under law, Matteo Basso has waived all copyright and related or neighboring rights to this work.