Modular Borrowing Without Ownership or Linear Types
summary
Claims a practical way to get Rust-like temporary borrowing without ownership or linear types by tracking uses as effects and encoding forbidden regions with Boolean negation types, implemented atop a type-and-effect system with generalized MLstruct Boolean-algebraic subtyping and higher-rank polymorphism. Shows concrete encodings: iterator-invalidations prevented, exception handlers as capabilities, mutable buffers with safe iteration and parallel nesting, and a prototype implementation that typechecks and rejects leaked effects while letting code be refactored freely via the new tracked binding construct.
AI-written summary · about
chapters (19)
- 0:00Introduction
- 1:02Borrowing semantics disclaimer
- 2:06Scope safety and guarantees
- 3:09Tracked instance construct
- 4:31Type and effect system basics
- 5:55Tracking mutation with effects
- 8:23Referential transparency
- 9:49Ambient effects and ergonomics
- 10:31Exception safety with combinators
- 13:00Mutable collections safely
- 14:23Iterator lifetime restrictions
- 16:10Modular refactoring without syntax
- 17:12Non-lexical lifetimes
- 18:37Safe concurrency with effects
- 19:19Type system foundations
- 20:23Implementation progress
- 20:43Related work and philosophy
- 21:04Conclusion
- 22:13Q&A
