Overview
The course teaches learners how to simplify building systems using a mix of languages by utilizing the best language for each part of a system. The learning outcomes include understanding the challenges of multi-language software development, reasoning about safe memory usage, and utilizing linking types to annotate component interactions. The course covers skills such as refactoring with linking types, type-preserving compilation, and preserving correctness during refactoring. The teaching method involves a 52-minute talk by the instructor. The intended audience for this course includes software developers, language designers, and toolchain developers interested in building multi-language software efficiently.
Syllabus
Intro
Multi-Language Software is Hard!
Current State of PL Design
Reasoning about Refactoring
Is this Refactoring Correct?
PureLang with Linking Types Extension PureLang
Refactoring: Pure Inputs
Refactoring: Stateful Inputs
Minimal Annotation Burden
Type-Preserving Compilation
Cross-Language Type Errors
Preserving Correctness of Refactoring
Mulberry Project
What about Untyped Languages?
Takeaways
Taught by
Strange Loop Conference