TY - JOUR
T1 - An expressive stateful aspect language
AU - Leger, Paul
AU - Tanter, Éric
AU - Fukuda, Hiroaki
N1 - Publisher Copyright:
© 2015 Elsevier B.V. All rights reserved.
PY - 2015/5/1
Y1 - 2015/5/1
N2 - Stateful aspects can react to the trace of a program execution; they can support modular implementations of several crosscutting concerns like error detection, security, event handling, and debugging. However, most proposed stateful aspect languages have specifically been tailored to address a particular concern. Indeed, most of these languages differ in their pattern languages and semantics. As a consequence, developers need to tweak aspect definitions in contortive ways or create new specialized stateful aspect languages altogether if their specific needs are not supported. In this paper, we describe ESA, an expressive stateful aspect language, in which the pattern language is Turing-complete and patterns themselves are reusable, composable first-class values. In addition, the core semantic elements of every aspect in ESA are open to customization. We describe ESA in a typed functional language. We use this description to develop a concrete and practical implementation of ESA for JavaScript. With this implementation, we illustrate the expressiveness of ESA in action with examples of diverse scenarios and expressing semantics of existing stateful aspect languages.
AB - Stateful aspects can react to the trace of a program execution; they can support modular implementations of several crosscutting concerns like error detection, security, event handling, and debugging. However, most proposed stateful aspect languages have specifically been tailored to address a particular concern. Indeed, most of these languages differ in their pattern languages and semantics. As a consequence, developers need to tweak aspect definitions in contortive ways or create new specialized stateful aspect languages altogether if their specific needs are not supported. In this paper, we describe ESA, an expressive stateful aspect language, in which the pattern language is Turing-complete and patterns themselves are reusable, composable first-class values. In addition, the core semantic elements of every aspect in ESA are open to customization. We describe ESA in a typed functional language. We use this description to develop a concrete and practical implementation of ESA for JavaScript. With this implementation, we illustrate the expressiveness of ESA in action with examples of diverse scenarios and expressing semantics of existing stateful aspect languages.
KW - Aspect-oriented programming
KW - ESA
KW - JavaScript
KW - Stateful aspects
KW - Typed racket
UR - http://www.scopus.com/inward/record.url?scp=84923308419&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84923308419&partnerID=8YFLogxK
U2 - 10.1016/j.scico.2015.02.001
DO - 10.1016/j.scico.2015.02.001
M3 - Article
AN - SCOPUS:84923308419
SN - 0167-6423
VL - 102
SP - 108
EP - 141
JO - Science of Computer Programming
JF - Science of Computer Programming
ER -