Welcome to UNSOUND
summary
Opens the UNSOUND workshop and defines unsoundness as a mismatch between claimed type guarantees and runtime behavior, then gives concrete examples and fixes: arrays covariant + mutation causes inserting 42 into an upcast string array; contravariant method refinements let a subclass assume a string parameter and crash when called with integers; TypeScript "YOLO" expands recursive types a fixed number of times and then accepts subtyping, deliberately unsound; suggested remedies include separating mutable/immutable arrays, using type classes or F‑bounded polymorphism, and restricting recursive types to regular or parametric.
AI-written summary · about
chapters (7)
- 0:00Welcome to UNSOUND
- 1:50Unsoundness in type systems
- 4:01Historical unsoundness examples
- 8:13Why unsoundness arises
- 13:53Cross-language unsoundness bug
- 15:58Safety in programming languages
- 18:46Conclusion
related talks
37mTyping the Untyped: Soundness in Gradual Type Systems
21mThe long-tail of type safety
24mTreat the Compiler With Compassion
21mThe long-tail of type safety
28mGoing Static, Gradually: Semantic Soundness and Telling the Truth at Scale
31mLies We Tell Ourselves Using TypeScript v2
45mLeaky sieve of types: understanding subtype relationships in TypeScript
29mThe Lies we Tell Ourselves using TypeScript
