Where Are We With Scala's Capabilities?
summary
Scala now ships an opt‑in capture checking system (nightly/Scala 3.8+ via a language import) that tracks which capabilities a lambda or object closes over, lets capabilities be passed via using/context functions, and flags leakage (e.g., returning a closure that writes to a closed file). EPFL ships a capture‑annotated Scala library plus incubators (steps, gears) and a mutation checker called capibara with update/consume modifiers; separate compilation works and the design targets practical async/error patterns (await/ok) and migration bridges.
AI-written summary · about
chapters (20)
- 0:00Scala's 2025 capabilities
- 1:07Named tuples and given in Scala 3
- 2:32Standard library and Scala 3 migration
- 4:40Scala 3.9 LTS changes
- 6:47Scala Center 2025 advancements
- 8:29Capture polymorphism and libraries
- 10:41Convenience versus safety
- 15:36Effects quadrant and Rust analogy
- 18:45Capability-based architecture
- 24:47Why Scala 3 for capabilities
- 25:48Control effects and error handling
- 30:49Async/await with capabilities
- 34:42Combining effects and prompts
- 37:30Capability-based effects basics
- 41:05Effect polymorphism and arrows
- 44:39Capture types and safety
- 47:08Overhead of capture checking
- 50:16Capibara mutation control
- 53:32Separation and linearity checks
- 55:18Summary and future
related talks
41mWhere Are We With Scala's Capabilities?
01h 03mInside the Scala Capture Checker
49mThe first steps towards practical capture checking
38mCapture Checking - A New Approach to Effect Safety in Scala
20mSystem Capybara: Capture Tracking for Ownership and Borrowing
41mHands On Capture Checking with Martin Odersky
01h 23mCapture Tracking in Scala
01h 02mSimply Scala
