An expressive stateful aspect language

Paul Leger, Éric Tanter, Hiroaki Fukuda

Research output: Contribution to journalArticle

3 Citations (Scopus)

Abstract

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.

Original languageEnglish
Pages (from-to)108-141
Number of pages34
JournalScience of Computer Programming
Volume102
DOIs
Publication statusPublished - 2015 May 1

Fingerprint

Semantics
Error detection
Concretes

Keywords

  • Aspect-oriented programming
  • ESA
  • JavaScript
  • Stateful aspects
  • Typed racket

ASJC Scopus subject areas

  • Software

Cite this

An expressive stateful aspect language. / Leger, Paul; Tanter, Éric; Fukuda, Hiroaki.

In: Science of Computer Programming, Vol. 102, 01.05.2015, p. 108-141.

Research output: Contribution to journalArticle

Leger, Paul ; Tanter, Éric ; Fukuda, Hiroaki. / An expressive stateful aspect language. In: Science of Computer Programming. 2015 ; Vol. 102. pp. 108-141.
@article{01d37368e17c49459148cec64b6f4d42,
title = "An expressive stateful aspect language",
abstract = "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.",
keywords = "Aspect-oriented programming, ESA, JavaScript, Stateful aspects, Typed racket",
author = "Paul Leger and {\'E}ric Tanter and Hiroaki Fukuda",
year = "2015",
month = "5",
day = "1",
doi = "10.1016/j.scico.2015.02.001",
language = "English",
volume = "102",
pages = "108--141",
journal = "Science of Computer Programming",
issn = "0167-6423",
publisher = "Elsevier",

}

TY - JOUR

T1 - An expressive stateful aspect language

AU - Leger, Paul

AU - Tanter, Éric

AU - Fukuda, Hiroaki

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

VL - 102

SP - 108

EP - 141

JO - Science of Computer Programming

JF - Science of Computer Programming

SN - 0167-6423

ER -