Awesome! This is the web summit talk I was looking forward to. So part of the promise of wasm is its integration with the web api and dom. In the fractal application for example if we extend that to include a zoom function that handles mouse events and updates variables, I'm probably employing something like blazor or js-sys in rust. How will that high level integration be handled in the dev console? And is it possible to create custom visualizations? Thanks in advance ;)
I just tried it and it works pretty well. Awfully slow on my mid-2014 MacBookPro though, especially the variable-view-panel redrawing takes very long (1..2 seconds). But definitely a promising new start compared to the older source-map debugging solution.
Hopefully this will also lead to a 'seamless debugging experience' inside VSCode. It would be pretty awesome to have (for instance) a HTML panel with a WebGL canvas in one VSCode tab while stepping through the C/C++ code in another tab. With a bit of tinkering this would also make a nice shadertoy-style live-coding environment.
Although I have no use for it currently I am fascinated by Web-assembly (and PWAs). But is it actually useful? I understand why theoretically it is, but is it being useful in practise?
Answering my own question, a little, I use figma.com a lot. But the potential seems so great, and the available PWAs so poor....
It's mainly hamstrung right now by the hoops you have to jump through to get it talking to the actual web page, is my understanding. Some companies though, like Cloudflare, are playing with it as a cross-platform server/desktop runtime, which is interesting
It's absolutely useful in practice. Sometimes the library you need was written in C++, and needs to run performantly and offline. I needed WASM and PWA to make an offline Japanese dictionary:
https://birchlabs.co.uk/mecab-web/index.html
It uses WASM to do linguistic processing via the C++ library, mecab. It tells you where the spaces should go in a Japanese sentence, and what the dictionary form is of each word (so you can lookup the meaning).
> Answering my own question, a little, I use figma.com a lot. But the potential seems so great, and the available PWAs so poor....
It's just that WebAssembly, like any new technology, can and usually is used in very specific paths that require it.
As a result, it's true that there is not that many full WebAssembly-powered PWAs, although the ones that are, like Figma you already mentioned or Google Earth or various Blazor-powered apps already speak for themselves.
However, there is even more apps and websites out there that use Wasm either directly or via library dependencies for calculations, graphics or even things like hyphenation - in my research https://github.com/mnater/Hyphenopoly was one of the most popular Wasm-powered libs used across a bunch of CMS and blog platforms - probably the last place you would expect to find WebAssembly in, and yet...
I'm coming at with from a similar place as you; I think it's really cool but the benefits are somewhat fringe for normal web apps.
I'm currently writing a SPA in WASM just because I want to play with trendy tech, and the biggest benefit I have observed is massive code size improvement. A similar app I wrote using React had an uncompressed bundle size of about 2 Mb (ouch), which gzipped down to 400 kb. The wasm competitor is about 150 kb and 90 kb gzipped, which is a pretty good code size savings, although still a little bloated. I also strongly prefer the Rust development experience over Typescript, even though TS was perfectly serviceable and the WASM-browser interface is still a little unpolished (but still quite capable). Overall my experience tells me WASM has a strong future but we are house on the bleeding edge of usability at the moment.
This time WASM promises to be as widespread as JavaScript (no plugins needed) and can be targeted by many languages. Having all the major browser vendors on board helps a lot.
I, for one, am greatly looking forward to kicking JS and all its warts to the curb for my frontend code, so this article is great news. DOM access next, please!
Thers is this tool whole algorithms were originally implemented in C++ to use in industrial applications. But was easily ported to the web to create a PWA that now anybody can use. This would have not been possible before. Check it out: https://pidtuner.com
You will be able to build your own extension with any backend in the future, but I'm curious what you're looking to gain from that?
I don't know whether GDB understands the Wasm-specific constructs in DWARF, while the current integration uses LLDB under the hood, which does support those.
I guess you'd have to make series of patches to GDB to make it work, as well as to build your own DevTools extension once the API is stable, but in theory should be possible, yeah.
25 comments
[ 3.9 ms ] story [ 59.9 ms ] threadHopefully this will also lead to a 'seamless debugging experience' inside VSCode. It would be pretty awesome to have (for instance) a HTML panel with a WebGL canvas in one VSCode tab while stepping through the C/C++ code in another tab. With a bit of tinkering this would also make a nice shadertoy-style live-coding environment.
GLSL preview: https://marketplace.visualstudio.com/items?itemName=circlede...
Full on Shadertoy environment (preview panel, lets you use Shadertoy's uniforms): https://marketplace.visualstudio.com/items?itemName=stevenso...
Answering my own question, a little, I use figma.com a lot. But the potential seems so great, and the available PWAs so poor....
Expecting this is a good place to ask
It's just that WebAssembly, like any new technology, can and usually is used in very specific paths that require it.
As a result, it's true that there is not that many full WebAssembly-powered PWAs, although the ones that are, like Figma you already mentioned or Google Earth or various Blazor-powered apps already speak for themselves.
However, there is even more apps and websites out there that use Wasm either directly or via library dependencies for calculations, graphics or even things like hyphenation - in my research https://github.com/mnater/Hyphenopoly was one of the most popular Wasm-powered libs used across a bunch of CMS and blog platforms - probably the last place you would expect to find WebAssembly in, and yet...
I'm currently writing a SPA in WASM just because I want to play with trendy tech, and the biggest benefit I have observed is massive code size improvement. A similar app I wrote using React had an uncompressed bundle size of about 2 Mb (ouch), which gzipped down to 400 kb. The wasm competitor is about 150 kb and 90 kb gzipped, which is a pretty good code size savings, although still a little bloated. I also strongly prefer the Rust development experience over Typescript, even though TS was perfectly serviceable and the WASM-browser interface is still a little unpolished (but still quite capable). Overall my experience tells me WASM has a strong future but we are house on the bleeding edge of usability at the moment.
[1] https://elm-lang.org/
And then use it in scenarios like IBM i TIMI, z/OS language environments, P-Code, M-Code, Dis, CLR, JVM,..., and call it "innovation".
Whatever, I just ride the wave, need to keep that CV updated.
[0] - https://www.software-lab.org/publications/usenixSec2020-WebA...
I, for one, am greatly looking forward to kicking JS and all its warts to the curb for my frontend code, so this article is great news. DOM access next, please!
Given the Chromification of the Web, that kind of makes it anybody.
You can subscribe to https://github.com/rustwasm/wasm-bindgen/issues/2389, but, unfortunately, wasm-pack currently is maintainerless until someone steps in. (see https://twitter.com/ag_dubs/status/1319651621698232322)
I don't know whether GDB understands the Wasm-specific constructs in DWARF, while the current integration uses LLDB under the hood, which does support those.