Featherweight Go
summary
Defines a minimal core language Featherweight Go (FG) and its generic extension Featherweight Generic Go (FGG), proves a semantics-by-translation claim that monomorphisation preserves and reflects typing and runtime behavior, and identifies a decidable Nomono predicate that rules out non‑monomorphisable (polymorphically recursive) programs. Provides a working Go toolchain (interpreter, static nomono check, monomorphiser, fgg-gen) that exposes a real gotcha—must generate dummy methods to preserve structural subtyping—or simulation breaks.
AI-written summary · about
chapters (14)
- 0:00Intro
- 0:21The Go Programming Language
- 0:53Go Developers and Generics
- 1:38Design constraints
- 2:02Approach
- 3:18Featherweight Go
- 5:15Featherweight Generic Go
- 8:07Monomorphisation: instance set
- 9:01Monomorphisation: instance generation
- 9:23Formalisation of monomorphisation
- 9:41Not all FGG programs are monomorphisable
- 10:24Monomorphisation: results
- 14:06Prototype Implementations
- 15:02Collaboration with Go Team








