WebAssembly: 5 Predictions for 2023
In 2022, WebAssembly (often shortened to Wasm) catapulted into the spotlight. New Wasm startups arrived on the scene. Established companies announced support for Wasm. The Bytecode Alliance launched a number of Wasm standards. The Cloud Native Computing Foundation hosted two WasmDay events. And one of the biggest Wasm users, Figma, was acquired by Adobe for a staggering $20 billion.
At its core, Wasm is a binary format. Many different languages can compile to the same format, and that binary format can be run on a huge variety of operating systems and architectures. Java and .NET are similar in this way but Wasm has one major difference: The Wasm runtime does not trust the binaries that it executes.
Wasm applications are sequestered in a sandbox and are only allowed to access resources (like files or environment variables) that the user explicitly allows. Wasm has many other desirable properties (such as extraordinary performance), but it is the security model that makes Wasm useful in a wide variety of environments ranging from browsers to edge and IoT and even into the cloud.
If there is a Wasm trend to spot in 2022, it is that Wasm is now enjoying as much (if not more) success beyond the browser than within it. And this trend underlies much of what will come in 2023. With Wasm showing up everywhere from embedded devices to big data centers, 2023 is poised to be the year of Wasm. Here are my five predictions for the 2023 Wasm ecosystem.
1. The Component Model Will Be the Watershed Moment
Rarely are standards the most exciting part of an ecosystem. And with a name like “the Component Model,” rousing excitement is an uphill battle indeed. But behind the boring name is the most important innovation that Wasm brings to the software world.
The Component Model describes a way for Wasm binaries to interact with each other. More specifically, the two components can tell each other what services they provide and what expectations need fulfilling. And then Wasm modules can utilize each other’s abilities. This provides software developers with a new way of building applications. Instead of finding libraries in their preferred source language, developers can declare which components their app needs — or even more abstractly, what features their app needs — and then the Wasm runtime can assemble the correct set of components on the user’s behalf.
Dan Gohman, one of Wasm’s most prolific contributors wrote a great overview post. And Joel Dice of Fermyon has written a technical overview for those more curious about the internals.
The component model is rapidly maturing, and already reference implementations are appearing. 2023 will be the year that the component model begins redefining how we write software.
2. Serverless Will Be Wasm’s Sweet Spot
The promise of serverless has been evident for the last few years. AWS Lambda opened our eyes to a new and straightforward programming model in the form of Functions as a Service (FaaS). Yet even while the momentum behind the concepts of serverless was building, the underlying technology was expensive to operate. And that cost has been passed on to users. Furthermore, while startup times for FaaS applications are faster than containers, they still fall short of today’s expectations for web performance. There is room for speed improvements.
Wasm has shifted the potential of the serverless landscape. With nearly instant startup times, small binary sizes, and platform and architectural neutrality, Wasm binaries can be executed with a fraction of the resources required to run today’s serverless infrastructure.
If the economy at large is entering a period of economic uncertainty, it is good to know that Wasm will help us rope in our expenses, while also advancing the developer-favorite serverless function model. Wasm’s speedier startup times and modest resource consumption require far less computing power than container-based system and are cheaper to use than FaaS systems like Lambda.
This realization that Wasm can transform the serverless landscape is what led Fermyon to create Spin. Spin is a developer-oriented tool for bootstrapping, building, testing, and deploying serverless functions. At the heart of Spin is its Wasm-based runtime. It is open source and already supported by Fermyon Cloud and Microsoft Azure’s AKS, with more on the way in 2023.
Smaller, faster, cheaper, better. That’s the combination that Wasm is delivering to the serverless world in 2023.
3. Wasm Apps Will Be Stored in DockerHub and Container Registries
Package management. It is a necessary feature of everything from programming languages to operating systems to cluster orchestrators like Kubernetes. And each time we invent a new technology, we seem doomed to (re-)invent a system for managing that technology’s assets.
Early in 2022, we saw several competing methods for managing Wasm objects. None took off. A small cadre of engineers persistently pushed the OCI Registry (aka the Docker Registry) as a system for storing Wasm. But the fact of the matter was that the OCI Registry format did not support non-container artifacts. It was for storing Docker images.
And then a major shift in OCI Registries changed the landscape. The OCI (Open Container Initiative) is a small standards body devoted to managing the standards around OCI Containers (or what we used to call Docker Containers). OCI defines the container format, the security model and the runtime. It also defines how container images are moved between a registry and a client.
Near the end of 2022, the OCI Registries working group announced an official way to store things other than container images. This may include things like Helm charts, photographs, or (you guessed it) Wasm applications. This new feature is called “artifact storage.”
When DockerHub announced support for this new artifact storage specification, the signal reverberated around the Wasm ecosystem: instead of re-inventing the wheel, we can simply store our applications in OCI registries like DockerHub. New work must be done in the Wasm ecosystem to make this a reality, but that work is underway. 2023 will be the year Wasm applications find a home in OCI registries.
4. All the Big Programming Languages Will Have Wasm Support
Language support is a crucial ingredient for Wasm’s success. With each new language that can compile to Wasm, a new community of developers gains access to Wasm’s benefits. Nearly all of the top 20 programming languages are adding Wasm support.
In 2022, we saw three giant leaps forward for Wasm. Python added support. Then Ruby. In October, .NET, which has long embraced in-browser Wasm in the browser, added much deeper support for Wasm, allowing it to run well beyond the browser.
Kotlin and Dart communities have both been actively engaged in building Wasm compile targets. Both, though, have been waiting for one particular Wasm standard to mature — a standard describing garbage collection, the facility in a language runtime that allows memory to be cleaned up as the program executes. Our prediction is that the Wasm-GC proposal will be usable and supported early in 2023, and thus Kotlin and Dart will soon release Wasm compilers
Our last language, though, is so important that it deserves a special prediction.
But assumptions have a way of fading in the face of real-world use cases.
Conclusion: 2023 Is the Year of Wasm
I have made five bold predictions about what will happen inside of the Wasm ecosystem. And as these milestones come true, Wasm will become even more useful as a general-purpose technology beyond the browser. At the beginning of the article, I suggested that 2023 is poised to be the year of Wasm. Given these five predictions, it is easy to see why: new features, clever use cases, integration with Docker Hub and broad language support combine to make this a developer-friendly technology with huge promise.