WebAssembly Playground

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • extism

    The framework for building with WebAssembly (wasm). Easily load wasm modules, move data, call functions, and build extensible apps.

  • Yep, this is one of the initial motivations for creating Extism: https://github.com/extism/extism -- and it works across 16 host languages & 8 guest languages.

  • sandspiel

    Creative cellular automata browser game

  • shrug It finds its uses. It's just not that overstated.

    sandspiel is quite popular and is built using WASM: https://sandspiel.club/

    Google Earth - https://blog.chromium.org/2019/06/webassembly-brings-google-...

    Ruffle (the "make Flash run safely" tool) - https://ruffle.rs/

    Ableton's Learning Synths - https://learningsynths.ableton.com/

    etc etc. It's just hard to tell when something is using WASM when it "just works" and is indistinguishable from optimized JavaScript

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • ruffle

    A Flash Player emulator written in Rust

  • shrug It finds its uses. It's just not that overstated.

    sandspiel is quite popular and is built using WASM: https://sandspiel.club/

    Google Earth - https://blog.chromium.org/2019/06/webassembly-brings-google-...

    Ruffle (the "make Flash run safely" tool) - https://ruffle.rs/

    Ableton's Learning Synths - https://learningsynths.ableton.com/

    etc etc. It's just hard to tell when something is using WASM when it "just works" and is indistinguishable from optimized JavaScript

  • exa-kernel

    EXA Kernel

  • There are a lot of projects around WebAssembly. But technology is hidden from external view. (Some self promotion, I am creating https://exaequos.com, a new Unix like OS running in a web browser)

  • caniuse

    Raw browser/feature support data from caniuse.com

  • I'm developing a wasm game, and currently I am targeting WebGL2 in order to run in iOS Safari.

    Me (and others, I'm sure) are currently waiting for WebGPU [1] to land in Safari so it will make sense to target it.

    WebGPU allows for simplified porting of desktop apps to the web, such as WGSL shaders [2]

    WebGPU will be the next big thing, and currently it is enabled on Chrome Windows/macOS, and can be enabled in Firefox Nightly with a config setting.

    Hopefully, 2024 will be the year of WebGPU!

    1: https://caniuse.com/?search=webgpu

    2: https://www.w3.org/TR/WGSL/

  • tt

    Torus Trooper - reboot of the original shooter game by Kenta Cho (circa 2004) (by speps)

  • 8MB seems high for Rust. Even the project I did [1] which was using D (with GC) ended up with an 8MB WASM. Rust's WASM target is much more exercised than D's, so I think you might need to tweak some compile options.

    [1] https://github.com/speps/tt

  • bevy

    A refreshingly simple data-driven game engine built in Rust

  • That's possible. I did spend quite a bit of time tinkering with compiler flags, and followed the recommendations.

    Some notes I found just now seems to agree with my results, though: https://github.com/bevyengine/bevy/issues/3978#issuecomment-...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • interface-types

  • Some things that might greatly increase wasm usage and overall tooling:

    1) Tools that run docker containers and serverless function services (like AWS lambda) to support providing a .wasm files instead

    2) Garbage collection in the runtime to make GC languages easier to port to wasm

    3) Dynamically typed languages (NodeJS, Python, Ruby) being able to compile to webassembly directly instead of porting the runtime to webassembly and then running the code through the runtime. This is a big ask though, basically needs to redesign the runtime completely

    4) wasm-DOM bindings will enable other languages to do HTML rendering which will require new web frameworks for every language that wants to take over the space from JS. This will lead to (even more) fragmentation of the web ecosystem

    5) A new wasm-first SDK (unrelated to the DOM) for building cross platform applications. I can see this taking off only if it is built-into the browsers and backed by some standards committee, so not very likely I think

    6) Something like the Interface Types proposal ( https://github.com/WebAssembly/interface-types/blob/main/pro... ) becomes a thing allowing wasm programs to be consisted of modules written in several different languages and being able to call said modules with low or 0 runtime performance hit (and of course, no compilation to multiple CPU archs). So much of programming ecosystems are locked to specific languages (like data science with python) when there is little technical reason for it be like that.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts