Building a Debugger for Scala 3
summary
A Scala-specific debug adapter translates JDI to DAP and ships a new Scala Debug Adapter v3.0.0 that implements a debug server, an expression compiler that injects a val and generates a runtime class, and a tasty-query based step filter to skip compiler-generated methods. It resolves lambda lifting and captured locals by running a resolve-reflect phase after transforms, supports conditional breakpoints, hit counts, logpoints, data breakpoints, edit-value and restart-frame. It is available via Metals/SBT integration, mostly works in demos, and needs wider testing.
AI-written summary · about
chapters (14)
- 0:00Start
- 0:36The Scala run time
- 3:07Main Takeaways
- 4:44Scala Debug Adapter: Origins
- 7:44Debug Adapter Protocol
- 12:12ISourceLookUpProvider
- 15:44Implementing the scala-debug-adapter
- 18:22The Scala 3 Compiler
- 21:07Extract Expression
- 23:12The Expression Compiler
- 23:53Lambda lifting
- 39:52Skipping methods
- 42:05Little-known debug features
- 44:04What's next: More Scala friendliness
related talks
16mDebugging for Scala Control Flow DSLs
39mA Dance with Tools
41mReconstructing Scala
32mTestable Compiler Plugin Development in Scala 3
43mBoost Your Productivity with IntelliJ, Scala Plugin and More
29mWhy Scala 3 will be awesome
01h 07mPanel On The Future Of Scala
36mHow does Incremental Compilation Work with Scala 3
