VOOZH about

URL: https://thenewstack.io/webassembly-isnt-software-its-a-computer/

⇱ WebAssembly Isn’t Software: It’s a Computer - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2023-10-05 10:20:01
WebAssembly Isn’t Software: It’s a Computer
sponsor-nginx,sponsored-topic,
Software Development / WebAssembly

WebAssembly Isn’t Software: It’s a Computer

Indeed, WebAssembly can be thought of as a new type of computer. It possesses an instruction set, similar to a CPU, from which the "assembly" part derives.
Oct 5th, 2023 10:20am by B. Cameron Gain
👁 Featued image for: WebAssembly Isn’t Software: It’s a Computer
Featured image via Unsplash.

WebAssembly’s computational potential has garnered significant attention, and it may take quite some time, possibly a couple of years, for its true capabilities to be fully realized as these challenges are resolved. One of these challenges involves ensuring that WebAssembly modules can support all programming languages, although currently, it is predominantly limited to a few, such as Rust, C++, Python and JavaScript. Other languages still face hurdles, but even Rust and C++ as well as Python have their issues when the idea is for developers to write code and deploy once and everywhere to numerous devices and environments, all compatible of course.

But what is WebAssembly meant to achieve? The phrase “deploy once, deploy anywhere” has often been used, although it might be more accurate to say that you can write your code once and deploy it on any CPU or device simultaneously with minimal to no configuration required. Think of it, in some ways, as a highly efficient compiler (although some will likely passionately disagree).

NGINX, now a part of F5, is the company behind the popular open source project, NGINX. NGINX offers a suite of technologies to develop and deliver modern applications including NGINX Plus for load balancing, App Protect for security, and NGINX Ingress Controller to get control of Kubernetes.
Learn More
The latest from NGINX

Standard Definition

Citing the standard definition, WebAssembly is a binary instruction format for a stack-based virtual machine, Luke Wagner, a distinguished engineer for edge cloud platform provider Fastly, said during his talk at WasmCon 2023. “Wasm’s design is a portable compilation target for programming languages. I think the operative phrase here is ‘compilation target,”‘ which means we can take our variety of source languages,” Wagner said. “In addition to being able to compile them to all the different native instruction sets, we can compile them to WebAssembly. Then, we can take that WASM and send it to a browser or WASM engine of some sort, which will internally compile it to the actual instruction set it’s running on. What this buys us is portability, determinism if we need it, control flow integrity, and subprocess sandboxing.”

Beyond its definition, it’s necessary to look at what WebAssembly can do in the real world. “So, what are we doing with all these cool powers? Well, today, in browsers, popular use cases deport a large code base, especially C++,” Wagner said. Examples include Unity, AutoCAD and Photoshop. Also, offloading compute-intensive subtasks from JavaScript to Wasm, with examples including codecs, compression, inference, encryption and filters, Wagner said.

“Outside a browser, it’s popular to embed Wasm in your existing system to bring your guest code closer to your system. An example of this is a browser that has a lot of code that’s not in JavaScript,” Wagner said. “Lastly, people are using Wasm to explore alternative models of distributed computing, like serverless, distributed actors, record and replay, and edge computing, similar to what we’re doing at Fastly.”

The use cases for WebAssembly are expanding, but there is ongoing work and project progress. When the day arrives, for example, when the component structure is more standardized, the deployment across various devices and environments will become more achievable. Hopefully, this can be achieved in the near future, perhaps within a year and a half or two years.

Like a Computer?

During a recent conversation with Liam Crilly, senior director of product management at NGINX, he likened WebAssembly to a computer in a conceptual sense. 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.

“WebAssembly allows us to rethink the abstractions we need,” Crilly stated. “As a society, it enables us to take the next step forward rather than being continually anchored to the initial primitives we used to describe storage and compute. That’s why I mentioned it in the context of Kubernetes, as it still carries some of that baggage.”

Indeed, WebAssembly can be thought of as a new type of computer. It possesses an instruction set, similar to a CPU, from which the “assembly” part derives. When you examine sample code, it closely resembles that, provided it’s made human-readable. This simple computer is capable of performing anything a traditional computer can, which, as we know, is quite extensive. What’s significant is that this new, straightforward instruction set becomes a compilation target for all programming languages. Essentially, any high-level programming language can be compiled not just to the CPU instruction set of specific hardware but also to the WebAssembly instruction set.

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.

Crilly further emphasized, “If I have a WebAssembly module that I’ve compiled to this instruction set, I reap the benefits of compiler optimizations as well as the insights gained from over a decade of JavaScript experience in the browser, which includes just-in-time (JIT) optimizations during runtime as I convert the bytecode from this instruction set into CPU instructions. This additional layer of optimization, akin to JIT compilers and browser runtimes, provides near-native compute performance. Therefore, there’s minimal downside to this abstraction layer.”

Computer within a Computer

Taking the concept of thinking of WebAssembly as a computer further, Torsten Volk, an analyst for Enterprise Management Associates (EMA), said he would describe WASM as a “computer within a computer.”

“Instead of providing direct access to CPU, RAM, storage and networking hardware, it provides apps with access to simplified generic versions of these resources,” Volk said. “It does that by translating the instructions that come from the bytecode of apps that were compiled for WASM into bytecode that directly talks to the instruction sets of CPUs, RAM, and disk. Once this translation layer works universally for most types of applications, you could actually describe the WASM runtime as a new type of computer. ”

At the end of the day, WebAssembly is “the third wave of how we think about operating systems and hardware,” Matt Butcher, co-founder and CEO of Fermyon Technologies, told The New Stack. “Virtual Machines broke us out of thinking of operating systems as having a one-to-one relationship with hardware. We can run lots of OSes on a single piece of hardware, while containers furthered this story by allowing us to safely (and in a multitenant way) run lots of discrete filesystems that share one kernel,” Butcher said. “Wasm is the third wave: The application has no direct dependency on the host operating system. It simply declares what it needs, and the host runtime can fulfill specifically those needs. Finally, the developer does not need to know anything about the target environment’s OS or architecture.”

NGINX, now a part of F5, is the company behind the popular open source project, NGINX. NGINX offers a suite of technologies to develop and deliver modern applications including NGINX Plus for load balancing, App Protect for security, and NGINX Ingress Controller to get control of Kubernetes.
Learn More
The latest from NGINX
TRENDING STORIES
BC Gain is founder and principal analyst for ReveCom Media. His obsession with computers began when he hacked a Space Invaders console to play all day for 25 cents at the local video arcade in the early 1980s. He then...
Read more from B. Cameron Gain
SHARE THIS STORY
TRENDING STORIES
TNS owner Insight Partners is an investor in: Pragma, Fermyon.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.