|
1 - How do I install the binary distribution? 2 - What is required to run Arachne? 3 - What environment variables should be set before using Arachne? 4 - How do I compile an aspect? 5 - How do I weave/dewave an aspect? 7 - Where does the name Arachne come from? 9 - What is this µDyner thing mentionned in the papers? 10 - Your goals on the welcome page are rather vague. Could you be more specific? 11 - Do you have plans for the future? 12 - My question is not on the list: what should I do?
1 - How do I install the binary distribution?
Download the latest tarball from our download area. Store the tarball in /usr/local. Detar the tarball there: bunzip2 pubcurrent.tar.bz2 tar xvf pubcurrent.tar Make sure that the Arachne top-level directory is located in /usr/local.
2 - What is required to run Arachne?
The following is required to run Arachne;
The aspect compiler uses a C compiler as a back end. The first executable named gcc in your path will be used to generate the compiled aspects.
We have been testing Arachne on Pentium machines but it should be portable among all IA-32 processors.
The author uses:
3 - What environment variables should be set before using Arachne?
The Arachne runtime uses a few environnment variables to locate the appropriate binaries. These variables are:
To free the user from the burden of setting these variables, a shell script is provided. In every bash shell where you want to issue Arachne commands, just do once: source /usr/local/Arachne/site/sourceMe.bash
4 - How do I compile an aspect?
Start by setting the appropriate envrionment variables since you will need to use the Arachne aspect compiler. The aspect compiler takes an aspect source code file and generates a shared library. This shared library contains the compiled aspect.
For example: acc Aspect.so Aspect.ac will generate a shared library named Aspect.so holding the compiled aspects defined in the Aspect.ac file.
Any additional arguments will be passed as if to gcc. Hence: acc Aspect.so Aspect.ac foo.o bar.so -g will generate a shared library named Aspect.so:
5 - How do I weave/deweave an aspect?
Arachne provides a dynamic weaver: aspects are woven on running programs identified through their pid. In a first shell, run your base program by typing: run ./baseProgram (if your shell complains because it can not find run see question 3) In a second shell, weave the aspects contained in a library in the base program by typing: weave baseProgramPid WEAVE pathToAspectLibrary (i.e. for example weave 1789 WEAVE ./Aspect.so) (if your shell complains because it can not find weave see question 3) In this second shell, deweave the aspects contained in a library in the base program by typing: weave baseProgramPid DEWEAVE pathToAspectLibrary (i.e. for example weave 1789 DeWEAVE ./Aspect.so)
Be careful: the path to the aspect library is relative to the base program not your path when you issue a weave command. It is always safe to use absolute paths in the arguments given to weave.
Weaving aspects in a given program will generate a few additional libraries in the base program working directory. These libraries hold meta data that are uses by Arachne at weaving time.
If you need a clue to choose the appropriate pid number, the command ls /usr/local/Arachne/tmp/unix-socket/ might help.
A prefetching example for squid is available from the download area. It lacks however comments and documentation. The current distribution contains a few examples. There are located under /usr/local/Arachne/Test. These examples are simply meant to check your installation. In particular, they are not meant to be a tutorial.
7 - Where does the name Arachne come from?
Arachne is named after an ancient Greek myth. Arachne was a Greek girl who was a very skilled at spinning and weaving. Athena was the goddess of wisdom and also taught the art of spinning and weaving. Arachne challenged Athena to a contest although Athena warned her she would not win. Athena was furious and flew down to earth disguised as an old woman. She went to Arachne's hut where she was weaving a pattern of rainbow colored threads. Athena warned Arachne not to compete with a goddess. But, Arachne said that she was the finest weaver in the world, and if Athena didn't believe her to let her come and have a contest. Then, Athena revealed herself and accepted the challenge. Athena and Arachne set up their looms and went to work using all shades of every color thread. Athena wove into her cloth the Olympian gods and all their glory and majesty. Arachne wove an irreverent scene making fun of Zeus and his wives.
8 - How does Arachne works? Is it just hacking? Are you assuming that the base program has been compiled with a specific compiler?
At weaving time, Arachne rewrites the IA-32 instructions interpreted by the processor. Arachne is not a hack. Arachne exploits the published standards. These standards are:
Arachne does not assume that the base program has been compiled with a specific compiler as long as the compiler respects the standards mentioned above. However we have only be able to access to the gcc compiler and therefore Arachne has not been tested with other compilers.
9 - What is this µDyner thing mentionned in the papers?
µDyner was a previous attempt to build an aspect system. The main difference between Arachne and µDyner is that µDyner require a preparation of the base program (and hence a recompilation) while Arachne does not.
10 - Your goals on the welcome page are rather vague. Could you be more specific?
Researchers have already proposed many approaches to make application extensible and/or adaptable. Most of them however sacrifices performance and/or requires additional efforts from developers. Our approach considers three central points:
We believe that adaptability and extensibility issues are not addressed with traditional software development tools. For example, dynamic loading:
We propose to use aspect-orientation. Aspect are woven in the program by a weaver, that is, contrary to dynamic loading, they (or a user) chooses when to load them into the program. Aspects have been devised to cope with the tyranny of the dominant decomposition problem. And finally, the aspect community seems to be concerned by performance issues.
Hence our proposition can be summarized as follow:
11 - Do you have plans for the future?
We are very open to suggestions. We believe that extending Arachne to support other languages could be interesting: the C language does not retain much information on the program structure and hence pointcuts are relatively limited. Compiled C++ programs in contrast contain more information on the program structure. A first application of Arachne instrumentation techniques to compiled C++ programs is discussed in Yan Chen master thesis. Extending Arachne to support C++ applications will require modifying the aspect language syntax. AspectC++ is probably the most advanced aspect language for C++ and we plan to draw our inspiration from it. We would also like to explore the benefits brought by aspects on differents applications. Is there some kind of universal pointcut language? Should the pointcut language be domain specific? Yvonne Coady has already pointed that operating system code uses to contain many crosscutting concerns. We believe that using an operating system kernel as a weaving target to ensure its adaptability/extensibility could help to draw interesting practical conclusions on the features to be included in the Arachne language and stress the limits of our instrumentation techniques.
12 - My question is not on the list: what should I do?
Contact us! We will enjoy interacting with you.
|
||