WasmAssembly

Scala.js to Wasm—Exploring the Wasm backend for Scala.js with Sébastien Doeraene


Listen Later

The JVM-to-Web journey continues! In this episode, Thomas Steiner welcomes the original author of Scala.js, Sébastien Doeraene, to discuss the major, experimental leap to WebAssembly. You'll learn why the team decided to target Wasm now and how it complements the existing JavaScript emission. This episode offers a technical deep-dive into how Scala's powerful, nominal type system maps its objects and classes onto Wasm GC, and examines the critical details of interoperability, including what happens when a Scala object crosses the boundary to a JavaScript function. Finally, Sébastien covers the current status of the Wasm ecosystem for Scala.js, and the key limitations you need to know before you flip the `withExperimentalUseWebAssembly(true)` switch. Tune in to discover how a mature typed language is laying a fast, new foundation on the web!

Chapters:

0:00 - Commonalities between composing music and composing compilers

1:38 - Scala, Scala.js, Scala Native, and the Scala Center

11:01 - The "elevator pitch" for Scala.js

14:59 - Is Scala.js competing with TypeScript?

20:31 - What motivated the decision to target Wasm?

26:40 - ] How Scala.js utilizes Wasm GC

31:24 - What's actually crossing the boundary between JS and Scala.js?

37:37 - BigInt support in Scala.js

38:38 - The status of the library ecosystem for the Wasm target

41:40 - Sébastien's hobby project ported to Scala.js

44:02 - Is the Wasm backend purely a Scala.js thing for browsers?

52:38 - What developers should be aware of before flipping that `withExperimentalUseWebAssembly(true)` switch

58:28 - What Wasm proposals are you waiting for to unlock new features in Scala.js?

59:57 - Wasm, but not

Resources:

  • Sébastien Doeraene on GitHub → https://goo.gle/4pMPufo

  • Sébastien Doeraene at EPFL → https://goo.gle/3KTZZhu

  • Ensemble vocal Évohé → https://goo.gle/4pApQu5

  • Scala → https://goo.gle/4iYZwY1

  • Scala.jshttps://goo.gle/4oYze9E

  • Scala Native → https://goo.gle/4rX4hp0

  • Scala Center → https://goo.gle/44uffZ8

  • Scala to TypeScript → https://goo.gle/4j37ZcM

  • Tyrian → https://goo.gle/4iZCOik

  • Laminar: https://laminar.dev/

  • Scala.js WebAssembly backend → https://goo.gle/4oT4bvV

  • Announcing Scala.js 1.19.0 → https://goo.gle/4aSYM4F

  • Wasm GC proposal: https://github.com/WebAssembly/gc

  • JSPI proposal → https://goo.gle/4s5cIik

  • Scala.js Interoperability → https://goo.gle/4afJdE1

  • Scaladex homepage with stats → https://goo.gle/4ja7jCr

  • FunLabryrinhte (Scala) → https://goo.gle/4oTghoL

  • FunLabryrinhte (original) → https://goo.gle/3KA8EWx

  • Bringing Scala to Server-Side Wasm → https://goo.gle/4pgwC7v

  • Scala.js Wasm Limitations → https://goo.gle/4s1jOnN

  • Custom descriptors proposal → https://goo.gle/4p8I7Og

  • Stack Switching Proposal → https://goo.gle/4pJG8B1

  • JS Primitives Builtins proposal → https://goo.gle/4akAnor

  • Shared-Everything Threads proposal → https://goo.gle/3MCCxGd

Watch more WasmAssembly → https://goo.gle/WasmAssembly

Subscribe to Chrome for Developers → https://goo.gle/ChromeDevs

#WebAssembly #Wasm #ChromeForDevelopers #Chrome

Speaker: Thomas Steiner

Products Mentioned: Web Assembly (Wasm), Chrome, WebAssembly for Chrome

...more
View all episodesView all episodes
Download on the App Store

WasmAssemblyBy Google