Compilation Semantics for a Programming Language with Versions
Programming with versions is a paradigm that allows a program to use multiple versions of a module so that the programmer can selectively use functions from both older and newer versions of a single module. While previous work showed λVL, a core calculus for programming with versions, it has not been integrated into practical programming languages. In this paper, we propose VL, a Haskell-based surface language for λVL along with its compilation method. VL leverages Girard’s translation, a newly proposed bundling process, and a type and version inference algorithm to support multiple versions of modules with minimal version annotations. The paper gives a formal definition of the inference algorithm and an implementation of a compiler. A case study shows that VL can support a scenario of software evolution that happened in practice.
Mon 27 NovDisplayed time zone: Beijing, Chongqing, Hong Kong, Urumqi change
10:30 - 12:00
|Compilation Semantics for a Programming Language with Versions
|What Types are Needed for Typing Dynamic Objects? A Python-based Empirical Study
|Types and Semantics for Extensible Data Types