WebAssembly’s Status in Computing
BILBAO, Spain — During a recent conversation with Liam Crilly, senior director of product management at NGINX, Crilly brought a unique perspective on WebAssembly, drawing from over three decades of software development and operations experience. Although WebAssembly doesn’t directly run on physical devices, it has the potential to operate across a network of devices used for data exchange and deployment, employing WebAssembly modules, as explained by Crilly during a recording of The New Stack Makers podcast at the Open Source Summit in Bilbao, Spain.
The conversation on this episode was hosted by B. Cameron Gain, a frequent TNS contributor.
“I think the long-term promise, the ultimate promise of WebAssembly is that you get to build this thing once,” Crilly said. “That’s, you know, what’s in it for developers build something once, run it anywhere. And there are some other like advantages we can go into about what else WebAssembly can bring those. But for me, the number one thing is universal portability.”
For the server side, running Wasm as the backend or an API endpoint, or “when I’m working on a microservices application or whatever it may be, it’s far less mature,” Crilly said. “We don’t have plenty of runtimes to choose from, and these are newer than the ones in browsers. Moreover, as I discussed in my talk at WASMCon a couple of weeks back, the toolchain for not only building WebAssembly modules but also how to run them, especially when building a web app, which is what we often do, is not quite there yet,” Crilly said. “Another dimension to consider is that the standards are not quite there yet.”
Furthermore, WebAssembly can be seen as a powerful compiler target, as Crilly explained: “What’s fascinating about WebAssembly is that it provides the advantages of a compiler, enabling you to take a high-level language and generate well-optimized instruction set code.” However, because WebAssembly functions as an abstracted computer, it necessitates a virtual machine or runtime to take this instruction set and execute it on the hardware. While this might initially seem like an additional abstraction layer, it’s actually quite ingenious. With WebAssembly, it’s possible to construct a runtime for any hardware, eliminating the need for developers and operators to concern themselves with specific hardware details, Crilly said.