Navigating Dependency Injection with Metro
summary
Metro is a Kotlin compiler plugin that implements compile‑time DI by mutating FIR and generating IR so builds do one compilation instead of multiple, claiming 40–70% faster compile times in benchmarks. It produces graphs, runs Tarjan+Kahn for cycle detection/topological ordering, supports class/provided/assisted bindings, scoped singletons, provider/lazy intrinsics, private constructor injection, multi‑bindings and Anvil‑style aggregation, and emits ~100 diagnostics to validate graphs at compile time.
AI-written summary · about
chapters (14)
- 0:00Metro introduction
- 1:28Dependency injection basics
- 5:02Metro as DI framework
- 7:07Metro core concepts
- 11:24Scoping and class bindings
- 14:11Advanced bindings and optimizations
- 18:30Aggregation and contributions
- 23:04Intrinsics like Provider and Lazy
- 24:07Graph extensions and modularization
- 25:11Metro compiler integration
- 27:39Front-end compilation phases
- 34:00Back-end compilation
- 36:50Validation and errors
- 39:19Q&A
related talks
40mNavigating Dependency Injection with Metro
37mAdvanced multi-platform dependency injection
35mDIY Dependency Injection with Kotlin
29mDIY Dependency Injection with Kotlin
37mDagger + Anvil: Learning to Love Dependency Injection
49mDependency injection from zero to hero with Koin
38mExtending kotlin-inject for fun & profit
31mKoin in Action - Dependency Injection for Kotlin
