Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Browser is the Computer (Wasm I/O)

The Browser is the Computer (Wasm I/O)

Wasm has blurred the lines between servers and clients, allowing you to run full-stack development environments completely inside your browser. Thirty plus years ago, when the web started, only text and images were supported. Over time, it evolved to support programming. First was JavaScript and Java Applets, later on ActiveX and Flash. Today, WebAssembly and browser APIs allow you to interact with audio/video, filesystems and GPUs, securely and efficiently.

This talk explains how you can leverage Wasm and the browser to build the dream programming environment. You can instantly run any combination of language runtimes, databases and servers that you can share with your friends and teammates without having to worry about running and maintaining cloud infrastructure. We will discuss the OSS projects, technology choices, tradeoffs and hacks involved to make this possible, including demos!

Ángel M

April 08, 2025
Tweet

More Decks by Ángel M

Other Decks in Programming

Transcript

  1. Washington Posh 1995/10/11 99c The network is the computer Thin

    clients, the new norm Dot-com is not a bubble Reputed economist confirms it Amazon rocks! Read the opinion of our Director The early days
  2. r +

  3. Where the World is going Laptop computers increasingly cheaper and

    powerful … and your phone, and your tablet! Browser APIs increasingly capable Improved filesystem access, WebGPU, networking WebAssembly continues to improve Garbage Collection, Memory64, JSPI, multi-threading, etc. Increased complexity of development environments Languages, tools, services, etc.
  4. Compute Browser-native Wasm apps and components Performance Compatibility Syscall Emulation

    Emscripten, WALI, and WebVM Hardware Emulation V86, QEMU-Wasm, etc. Wasm Syscalls Hardware
  5. Networking External Communication Web Native Fetch WebSocket Proxy VPN tunneling

    Internal Communication Direct communication Web Streams Emulated TCP/IP stack
  6. Storage FileSystem Access API Access user filesystem (read / write)

    FileSystem Access API Origin Private FileSystem A dedicated folder per origin OPFS In-Memory Persistence Browser Storage ZenFS EmscriptenFS
  7. Use cases Isolated ephemeral environments you can use Don't be

    afraid to break things! Zero-installation environments Stop asking people to install software to run your project Learning Give your students an environment they can work with Development From cloning to contribution without installing a single package
  8. What's next? More languages and services 64 bit support Persistence

    Designing and sharing complex environments
  9. References https://github.com/copy/v86/ v86 https://emscripten.org/ Emscripten https://github.com/ktock/qemu-wasm/ QEMU-Wasm https://github.com/chipmk/tcpip.js tcpip.js https://webvm.io/

    WebVM https://github.com/arjunr2/WALI/ WALI https://zenfs.dev/ ZenFS https://www.exaequos.com/ ExaequOS https://howfuguismybrowser.dev/ Project Fugu