Evolving the Haskell Debugger
summary
New debugger implements custom DebugView instances, per-frame variables and real stack frames, pauses on exceptions with source locations extracted from compiled info tables plus breakpoint metadata for bytecode frames, and runs the debuggee in an external interpreter by default so stdin/stdout and threads stay isolated. Step-in/step-out works by toggling breakpoints inside every BCO (bytecode object) so every continuation needs a breakpoint; compiled frames remain unbreakable unless loaded as persistent bytecode artifacts. Vim/Emacs/VS Code DAP integration and multi-threaded primitives are landed and mostly functional.
AI-written summary · about
chapters (20)
- 0:00Haskell debugger intro
- 1:10Live demo: breakpoint stepping
- 3:17Decoding stack traces
- 5:27Step out functionality
- 8:38Breakpoints in compiled code
- 9:43Persistent bytecode artifacts
- 11:08Debugging exceptions and stacks
- 15:41External interpreter role
- 17:46Custom commands for performance
- 19:11Debug view: data visualization
- 21:19Module graphs as HTML
- 22:44Built-in debug view instances
- 23:05Multi-threaded debugging progress
- 24:07Hot code reloading plans
- 24:50Haskell for time travel debugging
- 25:30Effect systems support
- 27:38Time travel through thunks
- 28:19Interactive execution at breakpoints
- 29:22Debug view: lists and laziness
- 30:03Garbage collection in time travel
related talks
26mghc-specter: a GHC plugin that inspects the GHC state on live
32mCode as Data: Extracting & Analyzing Info from Haskell Codebases
47mIndustrial Strength Laziness: What's Next?
01h 26mHaskell Language Server
01h 39mETA lang a Journey from Haskell via STG and Bytecode to Assembly Part 1
54mHaskell Project Showcase and Community Contributions
01h 07m50,000 Lines of LLM Haskell: What Broke, What Held, and Letting Go
49mEta lang - Haskell On JVM
