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
- Job Boards
- Articles
- Video
- Slides
- Community
- Books
- Papers
- Demos
- Resources in other languages
General Resources
Online Playground
- WebAssembly Explorer
- WasmFiddle
- Assembleash - WebAssembly and Typescript-like languages playground
- Wat2Wasm
- Wasm2Wat
Tutorials
- Developer's Guide
- Wasmbyexample - Hands-On Introduction Examples and Tutorials for Webassembly
- Introduction to WebAssembly Text (2021)
- Hands-On Webassembly: Try the Basics (2020)
- Using WebAssembly modules in C# (2020)
- First steps with WebAssembly in Rust (2020)
- WebAssembly threads in Firefox (2020)
- Using the import statement with an Emscripten-generated module in Vue.js (2020)
- Hit the Ground Running with WebAssembly (2019)
- Uno Platform Bootcamp - single-source WASM & Mobile app tutorial (2019)
- Porting Games to the Web with WebAssembly (2019)
- Level up Command-line Playgrounds with WebAssembly (2019)
- 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)
- WebAssemblyMan – man page for WebAssembly.
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
- TinyGo - Go for embedded devices and WebAssembly. Creates very small .wasm files.
- Bytecoder - A Rich Domain Model for Java Bytecode and Framework to interpret and transpile it to other languages such as JavaScript, OpenCL or WebAssembly
- AssemblyScript - Definitely not a TypeScript to WebAssembly compiler
Non-Web Embeddings
- WASI - The WebAssembly System Interface
- wasm3 - The fastest WebAssembly interpreter (x86, x64, ARM, MIPS, Xtensa)
- fizzy - Fast, deterministic, and pedantic WebAssembly interpreter written in clean C++17
- wamr - WebAssembly Micro Runtime (WAMR) is an AOT/JIT/interpreter focusing on small footprint
- wac - WebAssembly in C (x86)
- Asmble - WebAssembly on the JVM
- wasmachine - WebAssembly in a FPGA
- Olin - WebAssembly on the server
- Wasmer - Standalone JIT WebAssembly Runtime
- warpy - WebAssembly in RPython
- pywebassembly - WebAssembly interpreter written in pure Python
- py-wasm - WebAssembly interpreter written in pure Python
- pywasm - WebAssembly interpreter written in pure Python.
- wabt - WebAssembly toolkit and interpreter written in C++
- binaryen - WebAssembly toolkit and interpreter written in C++
- wagon - WebAssembly interpter written in Go
- wasmtime - Standalone WebAssembly Runtime
- embly - A serverless web application framework for collaboration and scale
- SSVM - WebAssembly Virtual Machine for AI and Blockchain applications
- Manticore - Symbolic execution engine with support for WebAssembly
- WAVM - WebAssembly virtual machine, designed for use in non-web applications
- windtrap - A WASM VM written in Elixir
- Extism - the universal plug-in system to make your software programmable
Projects
AI
Apache Server
Web frameworks-libraries
- asdom - DOM bindings for AssemblyScript, write DOM code just like in TypeScript, but compiled to WebAssembly, by LUME
- asm-dom - A minimal WebAssembly virtual DOM to build C++ SPA
- Blazor - Microsoft's 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
- go-vdom-wasm - Webassembly VDOM to create web application using Golang(experimental)
- seed - A Rust framework for creating web apps
- Vugu - A modern UI library for Go+WebAssembly
- Vecty - Lets you build responsive and dynamic web frontends in Go using WebAssembly
- Zwitterion - A web dev server that lets you import anything*
Data processing
WebGL
- ammo.js - direct port of the Bullet physics engine to JavaScript using Emscripten
- glas - WebGL in WebAssembly with AssemblyScript, by LUME
- 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
- wasm-loader - WASM webpack loader
- cpp-wasm-loader - C/C++ to WASM Webpack loader optimized for small bundle sizes
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!
- go-wasm-cli - Minimalistic cli to create and run (with hot reload) Go application targeting WASM
- xwasm - WebAssembly Packager and WASM tooling for modern frontend
.NET
- Uno Platform - An implementation of Microsoft's UWP APIs for iOS/Android/WebAssembly/Linux/macOS, using C#/XAML on top of mono-wasm
- Ooui.Wasm - A Xamarin.Forms backend for WebAssembly, using C#/XAML on top of mono-wasm
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
- ewasm - Ethereum flavored WebAssembly
- webm-wasm - Create webm videos in JavaScript via WebAssembly
- wasm-pdf – Generate PDF files with JavaScript/WASM
- go-web-app – Quickly setup Go + WebAssembly frontend apps
- gotemplate.io – Quicky test and visualize your Go templates live
- WasmBench - A large dataset of real-world WebAssembly binaries, collected from the Web, GitHub, NPM and more
- gtree - Web app that converts from Markdown to tree using WebAssembly
- wasm-bpf - A WebAssembly eBPF library, toolchain and runtime to help you build eBPF programs to Wasm and run in kernel.
- [crypto-js-wasm - An alternate to crypto-js implemented with WebAssembly