Migrating Gallia to Scala 3 the good, the bad and the very good
summary
Gallia moves from Scala 2 to Scala 3 with concrete outcomes: a working migration of the core and a new macro-based WTT construct that reproduces weaktypeinfo at compile time, tradeoffs around losing scala.reflect.api runtime, and about two thirds of effort spent rewriting macros. Tooling includes SBT crossfolders (-2/-3), scala3 compiler flags and quotes/inline macros. Performance work is next. The experience rates positive because the 213→3 interop and no runtime reflection shaped clear, solvable engineering choices.
AI-written summary · about
chapters (20)
- 0:00Migrating Gallia to Scala 3
- 1:25Why migration matters
- 3:11Partial migration strategy
- 4:13Starting the migration process with documentation
- 5:17Scala 3 macros for reflection
- 6:23Good errors improved quality
- 7:51Bad errors and indentation
- 10:22Odd errors and compiler issues
- 11:05Testing and recursive calls
- 12:29Spark serialization debugging
- 13:13Weak type tag mysteries
- 13:55Replacing TypeTag with macros
- 15:21Scala 3 vs 2 macro challenges
- 16:46Scala 3 macro advantages
- 17:49Migration lessons learned
- 19:34Tips for Scala 2/3 compatibility
- 20:18Testing Gallia with Scala 3 demo
- 21:00Overall migration experience
- 23:31Q&A Scala 3 and Spark
- 24:35Q&A Scala 3 macros impact
related talks
49mDotty is coming
48mTypelevel Scala: What does it mean ?
48mA gentle introduction to type level programming in Scala
28mSecrets of the Scala Type System
33mHerding types with Scala macros
38mScalaJS and Typescript: an unlikely romance
44mType level Computations in Scala
34mSo You’ve Decided to Do a Technical Migration
