An expressive aspect language for system applications with Arachne
Abstract
Security, networking and prefetching are typical examples of concerns which crosscut system-level C applications. While a careful de- sign can help to address these concerns, they frequently become an issue at runtime, especially if avoiding server downtime is important. Vulner- abilities 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 sys- tems 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 as- pects to be woven “on the fly” in running legacy applications. We show how these abilities can be used to prevent security breaches, to modular- ize 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.
Domains
Software Engineering [cs.SE]Origin | Files produced by the author(s) |
---|
Loading...