Compilation Semantics for a Programming Language with Versions
Yudai Tanabe, Luthfan Anshar Lubis, Tomoyuki Aotani, Hidehiko, Masuhara

TL;DR
This paper introduces VL, a Haskell-like language that implements a formal calculus for programming with multiple module versions, enabling flexible software evolution and version management.
Contribution
It presents a practical surface language and compilation method for lambda calculus with versions, integrating formal semantics into usable programming tools.
Findings
VL supports practical software evolution scenarios.
The compilation method infers consistent versions and generates multi-version interfaces.
Case study demonstrates scalability and applicability.
Abstract
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. Previous work formalized , a core calculus for programming with versions, but it has not been integrated into practical programming languages. In this paper, we propose VL, a Haskell-subset surface language for along with its compilation method. We formally describe the core part of the VL compiler, which translates from the surface language to the core language by leveraging Girard's translation, soundly infers the consistent version of expressions along with their types, and generates a multi-version interface by bundling specific-version interfaces. We conduct a case study to show how VL supports practical software evolution scenarios…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Logic, programming, and type systems · Parallel Computing and Optimization Techniques
