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 $\lambda$VL, 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 $\lambda$VL 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 and discuss the method’s scalability.
Reference:
Compilation Semantics for a Programming Language with Versions (Yudai Tanabe, Lubis Luthfan Anshar, Tomoyuki Aotani and Hidehiko Masuhara), In Proceedings of the 21st Asian Symposium on Programming Languages and Systems (APLAS 2023) (Chung-Kil Hur, ed.), 2023. (to appear, the full-version of this paper is available at https://arxiv.org/abs/2310.00298)
Bibtex Entry:
@inproceedings{tanabe2023aplas,
author = {Yudai Tanabe and Lubis Luthfan Anshar and Tomoyuki Aotani and Hidehiko Masuhara},
title = {Compilation Semantics for a Programming Language with Versions},
optcrossref = {},
optkey = {},
booktitle = {Proceedings of the 21st Asian Symposium on Programming Languages and Systems (APLAS 2023)},
year = 2023,
editor = {Chung-Kil Hur},
optvolume = {.},
optnumber = {.},
series = {LNCS},
optpages = {.},
month = nov,
location = {Taipei, Taiwan},
optaddress = {},
optorganization = {},
optpublisher = {Springer-Verlag},
note = {to appear, the full-version of this paper is available at https://arxiv.org/abs/2310.00298},
url = {https://conf.researchr.org/details/aplas-2023/aplas-2023-research-papers/3/Compilation-Semantics-for-a-Programming-Language-with-Versions},
date = {2023-11-27},
pdf = {aplas2023.pdf},
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 $\lambda$VL, 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 $\lambda$VL 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 and discuss the method’s scalability.},
optannote = {}
}