An expressive aspect language for system applications with arachne

  • Authors:
  • Rémi Douence;Thomas Fritz;Nicolas Loriant;Jean-Marc Menaud;Marc Ségura-Devillechaise;Mario Südholt

  • Affiliations:
  • OBASCO project, École des Mines de Nantes – INRIA, LINA, Nantes, France;Gruppe PST, Institut für Informatik, Ludwig-Maximilians-Universität München, München, Germany;OBASCO project, École des Mines de Nantes – INRIA, LINA, Nantes, France;OBASCO project, École des Mines de Nantes – INRIA, LINA, Nantes, France;OBASCO project, École des Mines de Nantes – INRIA, LINA, Nantes, France;OBASCO project, École des Mines de Nantes – INRIA, LINA, Nantes, France

  • Venue:
  • Transactions on Aspect-Oriented Software Development I
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Security, networking and prefetching are typical examples of concerns which crosscut system-level C applications. While a careful design can help to address these concerns, they frequently become an issue at runtime, especially if avoiding server downtime is important. Vulnerabilities caused by buffer overflows and double-free bugs are frequently discovered after deployment, thus opening critical breaches in running applications. Performance issues also often arise at run time: in the case of Web caches, e.g., a prefetching strategy may be required to increase performance. Aspect-oriented programming is an appealing solution to solve these issues. However, none of the current dynamic aspect systems is expressive and efficient enough to support them properly in the context of C applications. Arachne is a new aspect system specifically designed to address these issues. Its aspect language allows aspects to be expressed concisely using a sequence construct for quantification over function calls and accesses through variable aliases. Arachne enables aspects to be woven “on the fly” in running legacy applications. We show how these abilities can be used to prevent security breaches, to modularize the replacement of network protocols by more efficient ones, and to introduce prefetching in Web caches. We present two formal semantics for Arachne: one which defines in abstract terms the main properties of the sequence construct, and a second one which enables reasoning about the actual implementation. Following a detailed presentation of Arachne's implementation, we give performance evaluations showing that Arachne is fast enough to extend high-performance applications, such as the Squid Web cache.