Third party software used by Compose*

As with most large software projects not everything in Compose* was written from scratch. This page gives an overview of all the 3rd party software used by the various parts of Compose*.

Compose* core
Software used by the main part of the Compose* project, and thus used by all distributions.

  • Groove: a graph transformation system. It is used by Compose* to construct flow and execution models of the composition filter specifications. The resulting models are used for static analysis and to create the "inline" filter code.
  • ANTLR: a parser generator. Used to create the parser for the composition filter specification.
  • KernelProlog: a java based prolog engine. Prolog is used as pointcut language in Compose*.
  • Log4j: a logging library. Used to create nice Compose* compiler progress output.

Additional software used by the Java frontend.

  • Javassist: used as weaver to replace certain function calls with calls to the composition filter interpreter.

Additional software used in StarLight.

  • Cecil: a .NET byte code manipulator. Used as base for the weaver.
  • XMLBeans: used for communication during the compiler process between the .NET part of StarLight and the Java based core of Compose*.

Additional software used by the C frontend.

  • WeaveC (ASML): a weaver for ANSI-C. This software is, at the moment of writing, not freely available.

This software is used by the build and testing system of Compose*.

  • ANT: a build system. The whole build and testing system in Compose* is defined in ANT. For starlight certain tasks are performed by msbuild (through an ANT interface). Various custom tasks have been developed for the Compose* project.
  • CruiseControl: a continuous integration server.
  • Eclipse: the IDE used for all Java development.
  • Microsoft Visual Studio 2005: used for C# development.
  • FindBugs: a static Java byte code analyser, very useful to find (possible) bugs in the code.
  • CheckStyle: used to enforce/check the codeing style. Also used to detect possible bugs.
  • FxCop: similar to FindBugs, except for .NET bytecode.
  • jUnit: unit testing framework for Java.
  • NUnit: unit testing frameowkr for .NET.
  • Windows Installer XML: used to generate the installer for Starlight.
  • SVNKit: a pure Java based SVN library with ANT bindings. It is used for various build tasks.