Compilation Semantics for a Programming Language with Versions

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Tanabe, Yudai, Lubis, Luthfan Anshar, Aotani, Tomoyuki, Masuhara, Hidehiko
Formato: Preprint
Publicado: 2023
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866916162233696256
author Tanabe, Yudai
Lubis, Luthfan Anshar
Aotani, Tomoyuki
Masuhara, Hidehiko
author_facet Tanabe, Yudai
Lubis, Luthfan Anshar
Aotani, Tomoyuki
Masuhara, Hidehiko
contents 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 $λ_{\mathrm{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 $λ_{\mathrm{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.
format Preprint
id arxiv_https___arxiv_org_abs_2310_00298
institution arXiv
publishDate 2023
record_format arxiv
spellingShingle Compilation Semantics for a Programming Language with Versions
Tanabe, Yudai
Lubis, Luthfan Anshar
Aotani, Tomoyuki
Masuhara, Hidehiko
Programming Languages
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 $λ_{\mathrm{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 $λ_{\mathrm{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.
title Compilation Semantics for a Programming Language with Versions
topic Programming Languages
url https://arxiv.org/abs/2310.00298