WebAssembly 3.0 with Andreas Rossberg
Episode
61 min
Read time
3 min
Topics
Productivity, Remote Work, Design & UX
AI-Generated Summary
Key Takeaways
- ✓WebAssembly 1.0 Design Philosophy: The initial release targeted existing ASM.JS users with minimal features - four numeric data types, linear byte array memory, and function pointers. This intentionally limited scope enabled quick adoption for C, C++, and Rust codebases while leaving deliberate gaps for multiple values, multiple tables, and multiple memories to be added in future versions without breaking compatibility.
- ✓Garbage Collection Architecture: Version 3.0 introduces low-level GC supporting only structs and arrays, not high-level objects like Java VM. Languages must map runtime data structures to these primitives, similar to native code compilation. The implementation leverages existing JavaScript garbage collectors in browsers, adding zero overhead for applications that don't use GC features, following the pay-as-you-go principle.
- ✓Performance Characteristics: WebAssembly excels at numeric computation with near-native performance through ahead-of-time compilation. JavaScript can outperform WebAssembly in dynamic scenarios due to runtime profiling and recompilation. Applications focused primarily on DOM manipulation gain minimal benefit from WebAssembly compilation. The calling overhead between WebAssembly and JavaScript is dominated by actual DOM work, not the boundary crossing itself.
- ✓Non-Web Use Cases: Edge computing platforms like Fastly, embedded systems at Siemens, and blockchain implementations adopt WebAssembly for three primary reasons - portability across hardware without rebuilding toolchains, strict sandboxing without ambient capabilities, and deterministic execution. The 3.0 deterministic profile ensures identical results across replicated computation environments by eliminating all sources of non-determinism beyond intentional concurrency.
- ✓Component Model Development: This separate specification layer defines language-agnostic high-level types and advanced module systems for cross-language interoperability. Unlike bare WebAssembly's hardware-like ABI requirements, the component model provides shared-nothing concurrency and standardized interfaces. Work progresses on defining a C ABI for WebAssembly and WASI libraries for operating system abstractions, enabling portable module composition without knowing entire system implementations.
What It Covers
Andreas Rossberg, WebAssembly architect and former Google V8 team member, explores the evolution from version 1.0 through the groundbreaking 3.0 specification. The discussion covers garbage collection integration, multi-language interoperability, reference types, tail calls, and how WebAssembly expanded beyond browser compilation targets into edge computing, embedded systems, blockchain platforms, and deterministic execution environments requiring formal verification.
Key Questions Answered
- •WebAssembly 1.0 Design Philosophy: The initial release targeted existing ASM.JS users with minimal features - four numeric data types, linear byte array memory, and function pointers. This intentionally limited scope enabled quick adoption for C, C++, and Rust codebases while leaving deliberate gaps for multiple values, multiple tables, and multiple memories to be added in future versions without breaking compatibility.
- •Garbage Collection Architecture: Version 3.0 introduces low-level GC supporting only structs and arrays, not high-level objects like Java VM. Languages must map runtime data structures to these primitives, similar to native code compilation. The implementation leverages existing JavaScript garbage collectors in browsers, adding zero overhead for applications that don't use GC features, following the pay-as-you-go principle.
- •Performance Characteristics: WebAssembly excels at numeric computation with near-native performance through ahead-of-time compilation. JavaScript can outperform WebAssembly in dynamic scenarios due to runtime profiling and recompilation. Applications focused primarily on DOM manipulation gain minimal benefit from WebAssembly compilation. The calling overhead between WebAssembly and JavaScript is dominated by actual DOM work, not the boundary crossing itself.
- •Non-Web Use Cases: Edge computing platforms like Fastly, embedded systems at Siemens, and blockchain implementations adopt WebAssembly for three primary reasons - portability across hardware without rebuilding toolchains, strict sandboxing without ambient capabilities, and deterministic execution. The 3.0 deterministic profile ensures identical results across replicated computation environments by eliminating all sources of non-determinism beyond intentional concurrency.
- •Component Model Development: This separate specification layer defines language-agnostic high-level types and advanced module systems for cross-language interoperability. Unlike bare WebAssembly's hardware-like ABI requirements, the component model provides shared-nothing concurrency and standardized interfaces. Work progresses on defining a C ABI for WebAssembly and WASI libraries for operating system abstractions, enabling portable module composition without knowing entire system implementations.
- •Stack Switching via Continuations: The next major feature implements delimited continuations based on effect handlers, enabling efficient compilation of async/await, generators, and green threads. Current workarounds include expensive CPS transformations, trampolining through JavaScript, or brittle manual techniques. Effect handlers allow modular composition of multiple control effects without interference, letting generators suspend entire threads without knowing about thread scheduling logic.
Notable Moment
Rossberg reveals WebAssembly maintains machine-verified mathematical proofs demonstrating zero undefined behavior across the entire specification. The team designed formalization hand-in-hand with implementation, using formal verification as a feedback loop - when formalization becomes difficult, the design likely needs revision. This approach enables potential verification of entire software stacks from hardware through engines to compilers, unprecedented for industrial programming languages.
Episode Transcript
WebAssembly has grown from a low level compilation target for c and c plus plus into one of the most influential technologies in modern computing. It now powers browser applications, edge compute platforms, embedded systems, and a growing ecosystem of languages targeting a portable and secure execution model. Andreas Rosberg is a programming languages researcher and former member of the v eight team at Google. Andreas helped architect WebAssembly from its earliest concepts through its most recent milestone releases, including the groundbreaking three point o spec that introduces garbage collection, richer reference types, and major steps towards multi language interoperability. In this episode, Andreas joins Kevin Ball to explore the history of WebAssembly, the constraints that shaped its earliest design, the major turning points in versions one, two, and three, and what's coming next for WebAssembly. Kevin Ball or Kay Ball is the vice president of engineering at Mento and an independent coach for engineers and engineering leaders. He cofounded and served as CTO for two companies, founded the San Diego JavaScript meetup, and organizes the AI in action discussion group through Latent Space. Check out the show notes to follow Kay Ball on Twitter or LinkedIn, or visit his website, kball.llc. Andreas, welcome to the show. Oh, thank you. Thanks for having me. Yeah. I'm excited to to have this conversation. Let's start a little bit with you. Can you give us a bit of your background and how you got involved with WebAssembly and kind of what took you to where we are today having this conversation? Yeah. It's been a bit of a journey. So I'm I'm a person who's kind of on both sides of the ale in terms of academic and industrial work. So I used to be more like a researcher in programming language, both hardcore theory stuff, but also implementation stuff. At some point, I switched over to industry working for Google, working on the VA team, and that's one side where the whole WebAssembly thing started. So that's how I got involved in that. Let's dive in there. Actually, I I didn't realize you'd done a lot of academic work on theory. So I'm kind of curious maybe as we go along to explore how that has influenced development of WebAssembly. But let's maybe take us on a a quick journey of the history of WebAssembly. I think, you know, if we have web programmers here, they're probably familiar, but not everybody is. So let's let's kind of go through what was the inspiration and and the different stages we've been at coming to today. Okay. Yeah. So a bit of history was that before WebAssembly on the web, we basically only had JavaScript. Right? And it was always clear and common complaint by many people that this is, like, not good enough, and JavaScript has problems as we all know. And if you wanna use other languages, you have to compile to JavaScript, and that's far less than ideal as a …
Get the full transcript (10,998 words) + summary by email — free
One-time email with the complete transcript and AI summary of this episode. No account needed.
One email, no spam. We’ll also show you what SignalCast does.
You just read a 3-minute summary of a 58-minute episode.
Get Software Engineering Daily summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from Software Engineering Daily
SED News: The NVIDIA-Hugging Face Deal, China’s Proxy Economy, the Open Weight Surge
Sep 8 · 52 min
The TWIML AI Podcast
How AI Learns to Smell with Alex Wiltschko - #771
Jul 8
More from Software Engineering Daily
Moving Beyond RAG with Precomputed Context
Sep 3 · 55 min
Dwarkesh Podcast
Reiner Pope – The math behind how LLMs are trained and served
Apr 29
Books, tools, and gear mentioned in this episode
SignalCast may earn commission on purchases via these links.
Tools
- WebAssemblyBy guest
“Andreas Rossberg, WebAssembly architect and former Google V8 team member, explores the evolution from version 1.0 through the groundbreaking 3.0 specification.”
“Work progresses on defining a C ABI for WebAssembly and WASI libraries for operating system abstractions”
“The initial release targeted existing ASM.JS users with minimal features - four numeric data types, linear byte array memory, and function pointers.”
company
“Edge computing platforms like Fastly, embedded systems at Siemens, and blockchain implementations adopt WebAssembly for three primary reasons”
“Edge computing platforms like Fastly, embedded systems at Siemens, and blockchain implementations adopt WebAssembly for three primary reasons”
More from Software Engineering Daily
We summarize every new episode. Want them in your inbox?
SED News: The NVIDIA-Hugging Face Deal, China’s Proxy Economy, the Open Weight Surge
Moving Beyond RAG with Precomputed Context
The Death of Online Anonymity
TypeScript 7 and What Comes Next
The Gap Between AI Spending and AI Value
Similar Episodes
Related episodes from other podcasts
The TWIML AI Podcast
Jul 8
How AI Learns to Smell with Alex Wiltschko - #771
Dwarkesh Podcast
Apr 29
Reiner Pope – The math behind how LLMs are trained and served
Modern Wisdom
Apr 2
#1079 - Tristan Harris - AI Expert Warns: “This Is The Last Mistake We’ll Ever Make”
Eye on AI
Feb 17
#321 Nick Frosst: Why Cohere Is Betting on Enterprise AI, Not AGI
Latent Space
Jan 23
Captaining IMO Gold, Deep Think, On-Policy RL, Feeling the AGI in Singapore — Yi Tay 2
Explore Related Topics
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
You're clearly into Software Engineering Daily.
Every Monday, we deliver AI summaries of the latest episodes from Software Engineering Daily and 192+ other podcasts. Free for one show.
Start My Monday DigestNo credit card · Unsubscribe anytime