WASM is called WEB assembly but it can't access the Web API's without paying tax to the JS tyrant in between.
https://hacks.mozilla.org/2026/02/making-webassembly-a-first...
Wasm components & wasi have a lot of promise here. Until now though browsers have been ignoring all this; Firefox just started taking a more active interest. https://hacks.mozilla.org/2026/02/making-webassembly-a-first...
It's trivial to create small statically linked WASM programs in the "a few dozen kilobytes" range with the right programming language (like C).
"Code sharing" via dynamic linking also works, but it has the same downsides as dynamic linking on native platforms (basically that DLL interfaces represent an optimization barrier): https://emscripten.org/docs/compiling/Dynamic-Linking.html
In practice, whenever you need more than a singlethreaded app with http/serial port, the "run everywhere" breaks.
Don't get me wrong I love WASM but we're not there yet