Initializing Global Objects: Time and Order
summary
Claims a static, flow-sensitive interprocedural analysis that enforces initialization-time irrelevance plus partial ordering to eliminate Scala global-object initialization errors at compile time. The implementation lives in the Scala 3 compiler, tracks ownership of mutable state created during initialization, introduces region contexts for tunable context-sensitivity, produces explanatory warnings with dependency traces, and enables static scheduling (removing runtime init checks). Artifacts and an evaluated implementation are available.
AI-written summary · about
chapters (10)
- 0:00Welcome
- 0:45Global variables and initialization
- 3:37Static analysis for safety
- 7:16Limitations of whole program analysis
- 8:01Initialization time irrelevance principle
- 9:28Enforcing with ownership tracking
- 12:19Static scheduling of initialization
- 13:23Advantages and usability issues
- 14:30Scala 3 compiler integration and demo
- 15:15Q&A
related talks
15mModular Reasoning about Global Variables and Their Initialization
32mThe Evolution of Object-Oriented Programming
34mHow I learned to stop worrying and love Functional Design
27mThe Mutability Matrix of Pain
01h 04mKeynote - What to Leave Implicit
26mInfinite Possibilities
07mHow Should We Access Global Resources?
52mBenefits of addressability - clean management of mutation
