Abstract:
Context-oriented programming (COP) languages modularize context-dependent behaviors in multiple classes into layers. These languages have layer activation mechanisms so that the behaviors in layers take effect on a particular unit of computation during a particular period of time. Existing COP languages have different layer activation mechanisms, and each of them has its own advantages. However, since these mechanisms interfere with each other in terms of extent (time duration) and scope (a set of units of computations) of activation, combining them into a single language is not trivial. We propose a generalized layer activation mechanism based on contexts and subscribers to implement the different activation mechanisms in existing COP languages in a single language called ServalCJ. We formalize the operational semantics of ServalCJ as a small calculus and prove priority preservation, i.e., ensuring that layer prioritization, which resolves the interference between layers, is preserved during computation. To prove this property, we give a formal definition of layer priority that is general so that we can discuss the priorities of layers in other COP calculi and implementations. We implement a ServalCJ compiler, and demonstrate its effectiveness through several example applications.
Reference:
Generalized Layer Activation Mechanism for Context-Oriented Programming (Tetsuo Kamina, Tomoyuki Aotani and Hidehiko Masuhara), In Transactions on Modularity and Composition (TOMC), volume 9800, 2016. (extendend from [kamina2015modularity])
Bibtex Entry:
@article{kamina2016tomc,
pdf = {tomc2016.pdf},
author = {Tetsuo Kamina and Tomoyuki Aotani and Hidehiko Masuhara},
title = {Generalized Layer Activation Mechanism for Context-Oriented Programming},
journal = {Transactions on Modularity and Composition (TOMC)},
year = 2016,
volume = 9800,
series = {Lecture Notes in Computer Science},
pages = {123--166},
month = sep,
date = {2016-09-30},
annote = {accetped on 2015-11-07},
note = {extendend from \cite{kamina2015modularity}},
opturl = {http://link.springer.com/chapter/10.1007/978-3-319-46969-0_4},
doi = {10.1007/978-3-319-46969-0_4},
abstract = {Context-oriented programming (COP) languages modularize context-dependent behaviors in multiple classes into layers. These languages have layer activation mechanisms so that the behaviors in layers take effect on a particular unit of computation during a particular period of time. Existing COP languages have different layer activation mechanisms, and each of them has its own advantages. However, since these mechanisms interfere with each other in terms of extent (time duration) and scope (a set of units of computations) of activation, combining them into a single language is not trivial. We propose a generalized layer activation mechanism based on contexts and subscribers to implement the different activation mechanisms in existing COP languages in a single language called ServalCJ. We formalize the operational semantics of ServalCJ as a small calculus and prove priority preservation, i.e., ensuring that layer prioritization, which resolves the interference between layers, is preserved during computation. To prove this property, we give a formal definition of layer priority that is general so that we can discuss the priorities of layers in other COP calculi and implementations. We implement a ServalCJ compiler, and demonstrate its effectiveness through several example applications.}
}