awesome-wasm
😎 Curated list of awesome things regarding the WebAssembly (wasm) ecosystem.
https://github.com/mbasso/awesome-wasm
Last synced: about 17 hours ago
JSON representation
Articles
- WebAssembly at eBay: A Real-World Use Case (2019)
- How We Used WebAssembly To Speed Up Our Web App By 20X (Case Study) (2019)
- Why WebAssembly? (2018)
- 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)
- 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)
- What is WebAssembly? (2015)
- 7 Things You Should Know About WebAssembly (2015)
- Compiling to WebAssembly: It's Happening! (2015)
- The Future of Programming: WebAssembly & Life After JavaScript (2015)
- WebAssembly Everywhere
- WebAssembly Fixed-Width SIMD from C# (2023)
- Ruby on WebAssembly (2018)
- The world's easiest introduction to WebAssembly with Golang (2019)
- WebAssembly and SIMD: A Match Made in the Browser (2020)
- Practice your Go WebAssembly with a Game (2019)
- Writing WebAssembly By Hand (2018)
- WebAssembly: A New Hope (2017)
- WebAssembly Demystified (2017)
- WebAssembly: a binary format for the web (2015)
Benchmarks
- WebAssembly Video Editor
- Performance Testing Web Assembly vs JavaScript
- JavaScript vs WebAssembly running in Browser/Nodejs
- 3D skeletal animation system
- Cubes JS - Cubes (WebAssembly)
- JavaScript vs WebAssembly easy benchmark
- Wasm vs. PNaCl Performance Benchmark by PDFTron
- A Real-World WebAssembly Benchmark by PSPDFKit
Books
- Rust and WebAssembly
- WebAssembly in Action - Introduces the WebAssembly stack and walks you through the process of writing and running browser-based applications
- WebAssembly Reference Manual
- Learn WebAssembly - Build web applications with native performance using Wasm and C/C++
- Hands-On Game Development with WebAssembly
- Programming WebAssembly with Rust - Unified Development for Web, Mobile, and Embedded Applications
- Level up with WebAssembly - A practical guide to building WebAssembly applications
Community
Compilers
- Rust - A safe, concurrent, practical language
- faust2 - Functional programming language for signal processing and sound synthesis
- Binaryen - Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++
- ilwasm - CIL to WebAssembly compiler
- Asterius - A Haskell to WebAssembly compiler
- 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
- WebAssembly for the GNU Toolchain
- TinyGo - Go for embedded devices and WebAssembly. Creates very small .wasm files.
- Emscripten - LLVM-based project that compiles C and C++
- PPCI.wasm - PPCI Can compile wasm to machine code and run it in the Python process
Demos
- Aphrós - finite volume solver for incompressible multiphase flows
- Funky Karts
- PSPDFKit for Web - a WebAssembly-based PDF viewer with annotation features
- wasmBoy Demo/Debugger - a Gameboy Emulation library written in Web Assembly using AssemblyScript
- Cubes - direct port of the Bullet physics engine
- Symatem - an Ontology Engine, Visualizer, and Editor
- Basic4GL
- WebViewer - a CAD, MS Office, and PDF SDK
- Squoosh.app - Compress and compare images with different codecs, right in your browser
- Uno Platform Playground - a WebAssembly-based XAML playground
- Roslyn Quoter - a WebAssembly-based Roslyn-based C# code quoter
- DOOM 3 - Doom 3 WebAssembly port
- SketchUp - 3D modeling software
Examples
- Factorial in WebAssembly
- D3 force layout with WebAssembly
- TiDB playground - writing SQL in an in-browser golang database in WebAssembly
- Made With Webassembly - Showcase of Awesome Production Applications, Side Projects, and Use Cases Made With Webassembly
- WAsm Heatmap - Creates a heatmap layer for Leaflet.js with Go+WebAssembly+WebWorkers
- webassembly-examples
- WebAssembly vs. JavaScript Animation Demo
- Web DSP
- wasm-intro - Tiny WebAssembly Examples with LLVM/clang and C
- webassembly-examples - From Simple To Complex.
- 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
- HackerNews PWA with wasm-bindgen
- HandyTools - A tool providing features like base64 encoding/decoding, Unix time conversion, etc. Written in Go + WebAssembly
- Gameboy emulator written in Rust and compiled to WebAssembly
- Boytacean - A fast Game Boy Emulator written in Rust and running in the Browser using WebAssembly
- WebAssembly A* Pathfinding
- Pyxel - A Retro Game Engine for Python With a Rust Core, Running in the Browser via WebAssembly
- The Windows 10 calculator running in WebAssembly
- Modfy - Wasm Video Transcoder
General Resources
Gists
Job Boards
Languages
Esoteric
Forth
Go
- Go - Go programming language WebAssembly support
- VueGo - WebAssembly Vue.js wrapper written in Go
- Compiling Go to WebAssembly
JavaScript-family
- TurboScript - A TypeScript-like language that compiles to asm.js and WebAssembly (unmaintained)
- speedy.js - Accelerate JavaScript Applications by Compiling to WebAssembly (unmaintained)
- Getting Started with AssemblyScript
Lua
OCAML
- ocamlrun-wasm - OCaml Bytecode Interpreter in WASM
- Wasocaml - OCaml to WasmGC compiler
- wasicaml - Translate OCaml Bytecode to WASM
Other
- Lys - a functional language that compiles to WebAssembly
- Never - statically typed, embeddable functional programming language
Prolog
Python
- python-wasm - WebAssembly CPython for Node.js and the browser built using Zig (no emscripten)
- Pyodide - The Python scientific stack running in the browser
- PyScript - Run Python Code and the scientific stack in the browser
- Rocket game - Rocket, written in Rust, compiled to WASM, running in Python - (using PPCI)
Rust
- awesome-rust - (has scattered references to targeting WASM)
- parity-wasm - WebAssembly serialization/deserialization library in pure Rust
- wasmi - WebAssembly interpreter in pure Rust
- Ruffle - Adobe Flash Player emulator written in the Rust
- Rusty Web
WASM-like
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
- Wasmer for PHP
- 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
- 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
- Owi - a Wasm interpreter written in OCaml
- wasmtime - Standalone WebAssembly Runtime
- Wasmer for Go
- Wasmer for Python
- Wasmer for Ruby
- Wasmer for Postgres
Online Playground
Papers
- An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases
- Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code
- Provably-Safe Multilingual Software Sandboxing using WebAssembly
- Wasabi: A Framework for Dynamically Analyzing WebAssembly
- Wasocaml: compiling OCaml to Webassembly
- Owi: Performant Parallel Symbolic Execution Made Easy, an Application to WebAssembly
- Bringing the Web up to Speed with WebAssembly
- The Web Assembles
Projects
AI
Apache Server
Browserify
Data processing
.NET
- Ooui.Wasm - A Xamarin.Forms backend for WebAssembly, using C#/XAML on top of mono-wasm
- Uno Platform - An implementation of Microsoft's UWP APIs for iOS/Android/WebAssembly/Linux/macOS, using C#/XAML on top of mono-wasm
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
Others
- YAKC - a multi-system 8-bit emulator written in C++
- ewasm - Ethereum flavored WebAssembly
- gotemplate.io – Quicky test and visualize your Go templates live
- wasm-init - Work environment and code generator for WebAssembly projects
- wasm - Python WebAssembly decoder & disassembler library
- 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
- webm-wasm - Create webm videos in JavaScript via WebAssembly
- wasm-pdf – Generate PDF files with JavaScript/WASM
- 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 and ESM
- ssheasy - An online ssh and sft client
- go-web-app – Quickly setup Go + WebAssembly frontend apps