Abstract:
While modern software development heavily uses versioned packages, programming languages rarely support the concept of versions in their semantics, which makes software update more bulky and unsafe. This paper proposes a programming language that intrinsically supports versions. The main goals are to design core language features to support multiple versions in one program and establish a proper notion of type safety with those features. The proposed a core calculus, called Lambda VL, has versioned values, each of which can contain different values under different versions. We show the construction of the type system as an extension of coeffect calculus by mapping versions to computational resources. The type system guarantees the existence of a valid combinations of versions for a program. The calculus enables programming languages to use multiple versions of a package within a program. It will serve as a basis for designing advanced language features like module systems and semantic versioning.
Reference:
A Functional Programming Language with Versions (Yudai Tanabe, Lubis Luthfan Anshar, Tomoyuki Aotani and Hidehiko Masuhara), In The Art, Science, and Engineering of Programming, volume 6, 2021. (Submission 2021-02-01, Publication 2021-07-15. Presentation at the International Conference on the Art, Science, and Engineering of Programming ( 2022))
Bibtex Entry:
@article{tanabe2021programming,
author = {Yudai Tanabe and Lubis Luthfan Anshar and Tomoyuki Aotani and Hidehiko Masuhara},
title = {A Functional Programming Language with Versions},
journal = {The Art, Science, and Engineering of Programming},
year = 2021,
date = {2021-07-15},
volume = 6,
number = {1, Article 5},
anote = {Presentation at <Programming> 2022. },
optpages = {.},
pdf = {programming6-1.pdf},
doi = {10.22152/programming-journal.org/2022/6/5},
optmonth = jul,
url = {https://programming-journal.org/2022/6/5/},
abstract = {While modern software development heavily uses versioned packages, programming languages rarely support the concept of versions in their semantics, which makes software update more bulky and unsafe. This paper proposes a programming language that intrinsically supports versions. The main goals are to design core language features to support multiple versions in one program and establish a proper notion of type safety with those features. The proposed a core calculus, called Lambda VL, has versioned values, each of which can contain different values under different versions. We show the construction of the type system as an extension of coeffect calculus by mapping versions to computational resources. The type system guarantees the existence of a valid combinations of versions for a program. The calculus enables programming languages to use multiple versions of a package within a program. It will serve as a basis for designing advanced language features like module systems and semantic versioning.},
note = {Submission 2021-02-01, Publication 2021-07-15. Presentation at the International Conference on the Art, Science, and Engineering of Programming (<Programming> 2022)}
}