Abstract:
Programming with versions is a recent proposal that supports multiple versions of software components in a program. Though it would provide greater freedom for the programmer, the concept is only realized as a simple core calculus, called łambdaVL, where a value consists of łambda-terms with multiple versions. We explore a design space of programming with versions in the presence of data structures and module systems, and propose BatakJava, an object-oriented programming language in which multiple versions of a class can be used in a program. This paper presents BatakJava's language design, its core semantics with subject reduction, an implementation as a source-to-Java translator, and a case study to understand how we can exploit multiple versions in BatakJava for developing an application program with an evolving library.
Reference:
BatakJava: an Object-Oriented Programming Language with Versions (Lubis Luthfan Anshar, Yudai Tanabe, Tomoyuki Aotani and Hidehiko Masuhara), In Proceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2022) (Lola BurgueƱo, Walter Cazzola, eds.), 2022.
Bibtex Entry:
@inproceedings{luthfan2022sle,
author = {Lubis Luthfan Anshar and Yudai Tanabe and Tomoyuki Aotani and Hidehiko Masuhara},
title = {{BatakJava}: an Object-Oriented Programming Language with Versions},
booktitle = {Proceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2022)},
year = 2022,
editor = {Lola Burgue{\~n}o and Walter Cazzola},
pages = {222--234},
numpages = {13},
month = dec,
url = {https://2022.splashcon.org/details/sle-2022/19/BatakJava-An-Object-Oriented-Programming-Language-with-Versions},
doi = {10.1145/3567512.3567531},
isbn = {9781450399197},
keywords = {dependency problem, backward compatibility, Java},
location = {Auckland, New Zealand},
series = {SLE 2022},
abstract = {Programming with versions is a recent proposal that supports multiple versions of software components in a program. Though it would provide greater freedom for the programmer, the concept is only realized as a simple core calculus, called \lambda{}VL, where a value consists of \lambda-terms with multiple versions. We explore a design space of programming with versions in the presence of data structures and module systems, and propose BatakJava, an object-oriented programming language in which multiple versions of a class can be used in a program. This paper presents BatakJava's language design, its core semantics with subject reduction, an implementation as a source-to-Java translator, and a case study to understand how we can exploit multiple versions in BatakJava for developing an application program with an evolving library.},
pdf = {sle2022.pdf}
}