[Main Page]

Aspects in C

From AOSD Wiki

Main Page | Recent changes | View source | Page history | Log in / create account |

Printable version | Disclaimers | Privacy policy

At AOSD 2006, there was a "Birds of a Feather" meeting of people interested in languages and technologies for aspect-oriented programming in C. The participants decided that they needed a page in the AOSD Wiki to serve as a resource for people who want to learn about and discuss "aspects in C" and related topics. You're reading that page now, and since you're here, I assume you're interested.

Welcome! Please contribute!

Below you will also find a growing list of pointers to project pages, people pages, discussions of open issues, and so on.

This PhD compares all aspect languages/frameworks for C up until March 2008.


Table of contents

Language-Based Systems

AspectC

AspectC++ is an AO language extension for C++. It has already been used in a number of research projects at universities and companies. Besides weaving in C++ code, aspects can also be woven in plain C code as long as only the C subset of C++ is being used and the generated code is compiled with a C++ compiler. Full C support, i.e. a transformation from C input into C output and C-specific pointcut functions, is currently being implemented.

AspeCt-oriented C (ACC) enables aspect-oriented software development with the C programming language. ACC provides a compiler that translates code written in ACC into ANSI-C code. This code can be compiled by any ANSI-C compliant compiler, like for example gcc. The ACC compiler builds on proven aspect-oriented language design, most notably the AspectJ language design. The ACC compiler supports call/execution join points, the cflow() pointcut, join point context exposure, wildcard character matching, reflective thisJoinPoint information, composite pointcuts, named pointcuts, before/after/around advice, static crosscutting and debugging on original files. The ACC compiler generates thread safe code and code compatible with gcc. It is currently used in a 3rd introductory Operating Systems course at the University of Toronto. ACC also provides a set of weave adapters to easily integrate aspects into the existing build process of large C software projects.

Aspicere is an aspect language for C. Its aspects are plain C modules enriched with an advice construct. The pointcut language is based on Prolog and allows to bind logic variables for use as template parameters within the advice body. Aspicere has support for delimited continuation join points, annotations and temporal pointcuts. We implemented a source-to-source and a link-time aspect weaver, which have been applied in various case studies.

C4

WeaveC

Binary-Based Systems (e.g., Binary Weavers)

Arachne

KLASY

µDyner has been superseded by Arachne

TinyC

TOSKANA

VM-Based Systems

TOSKANA-VM


People Interested in Aspects in C/C++/...

Bram Adams designed Aspicere to re(verse)-engineer legacy C applications.

Alexandre Bergel is interested in how and when aspects can be applied to embedded device and automotive software.

EricEide

Chris Matthews and Yvonne Coady have started revamping the original AspectC prototype (based on a gcc 2.95 grammar), and are anxious for community input on this -- project page coming soon!

Olaf Spinczyk is the leader of the AspectC++ project, which supports aspect weaving in C++ (and soon also plain C).


Pericles Leng Cheng is starting his PhD work on Aspects and their applications in embedded systems.

Mike Mortensen is using AspectC++ with legacy C++ systems for VLSI CAD programming and chip verification.

Retrieved from "http://aosd.net/wiki/index.php?title=Aspects_in_C"

This page has been accessed 115,055 times. This page was last modified 01:25, 8 August 2009.


Wiki

Instant Feedback

Edited by the AOSD Steering Committee.  Maintained by the webmaster