WASI 0.2.0 and Why It Matters

WebAssembly’s new WASI Preview 2 release is seen as a major step toward making Wasm a practical, portable runtime beyond the browser, thanks to its capability-based system interface and the emerging component model/Canonical ABI for polyglot interoperability. Commenters debate whether this approach is an overcomplicated “second system” or a necessary foundation for secure, serverless-style workloads and plugin systems, contrasting it with older efforts like JVM/CLR, Java applets, and NaCl. There is enthusiasm around real-world uses (from Figma to VS Code extensions) and future potential (GUI APIs, async and GC in Preview 3), alongside frustration over missing pieces such as standardized graphics, threading, and smooth tooling for languages like C.

Graphics and GUI APIs

  • Several commenters want a standard framebuffer-style GUI API for WASI so WASM apps can draw to a screen outside browsers.
  • Others argue framebuffers are outdated and higher-level APIs like WebGPU are better; counterpoint: WebGPU isn’t ubiquitous yet and WASM runs beyond browsers.
  • Contributors involved with WASI say graphics hasn’t been blocked by vendors; it simply hasn’t had contributor focus, which has been mostly on serverless and foundational pieces.
  • There’s interest in future GUI/IO-device proposals, but no concrete standard yet.

Component Model, Preview 2, and Compatibility

  • WASI Preview 2 is built on the WebAssembly Component Model, separating “core WASM” from higher-level APIs.
  • Existing WASI modules aren’t directly compatible; adapters are needed, which some see as messy and a “second-system effect.”
  • Others argue the component model is about clean interop and a canonical ABI (no shared memory exports, handle-based resources) enabling different languages and memory models to cooperate.
  • Component model can be used without WASI and is on a standardization path, though not fully formalized yet.

What Problem WASI Solves

  • Multiple explanations: core WASM alone can’t do I/O; WASI defines a capability-based system interface (files, networking, etc.), especially for non-browser runtimes.
  • It’s compared to “POSIX for WASM,” though some note WASIX aims more directly at POSIX semantics.
  • Capability-based security (minimal, explicit permissions) is highlighted as a key design goal.

Use Cases vs. Skepticism

  • Skeptics say after ~10 years of WASM-related work, they see mostly demos, complex tooling, and unclear economic value, especially compared to native builds.
  • Others cite practical uses: browser apps (design tools, games, video, Flash emulation), embedded systems, polyglot plugins, VS Code extensions, and game mod scripting.
  • Server-side WASM is seen as promising but still immature; performance and cloud-provider support are open questions.

Comparisons to JVM/CLR and Applets

  • Some see WASI as redoing ideas from CLR, JVM, and earlier bytecode efforts; debate centers on whether “redoing” is bad if this version gains real adoption and is more open.
  • Applets vs WASM: commenters emphasize WASM’s smaller exposed surface, better startup performance, multi-language focus, and vendor coalition backing.

Polyglot, FFI, and Future Features

  • There’s strong interest in easier polyglot FFI; Preview 2 plus the component model and canonical ABI are seen as foundations for this.
  • Tools and frameworks (e.g., plugin systems) are emerging but still limited in data types and ergonomics.
  • Future additions like GC and async (Preview 3) are anticipated to make WASM a better runtime for languages like JavaScript and Dart, and to improve integration with JS engines compiled to WASM.