Our great sponsors
-
extism
The framework for building with WebAssembly (wasm). Easily load wasm modules, move data, call functions, and build extensible apps.
-
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.
-
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.
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.
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
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
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)
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/
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
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-...
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.
Related posts
- A minimal working Rust / SDL2 / WASM browser game
- What is a really cool thing you would want to write in Rust but don't have enough time, energy or bravery for?
- Rust and web assembly - noob question
- 3 years of fulltime Rust game development, and why we're leaving Rust behind
- Egui 0.27 – easy-to-use immediate mode GUI for Rust