A C++ Transformation Framework
CodeBoost is a tool for source-to-source transformation and optimisation of
C++ programs. It is intended to be used as a test-bed for various
high-level optimisations; the traditional textbook optimisations are
assumed to be handled by the C++ compiler. The CodeBoost optimiser will
attempt to bridge the gap between a human-friendly coding style and current
compiler/optimiser implementations. Although CodeBoost was created mainly
for use with the Sophus numerical
library, the transformation framework
may be useful for other projects as well.
- Otto Skrove Bagge, Karl Trygve Kalleberg, Magne Haveraaen, Eelco Visser:
Design of the CodeBoost
Transformation System for Domain-Specific Optimisation of C++ Programs.
In Dave Binkley and Paolo Tonella, editors, Third IEEE
International Workshop on Source Code Analysis and Manipulation
(SCAM'03), Amsterdam,
The Netherlands, September 2003. IEEE Computer Society
Press.
(Abstract,
ps,
pdf,
BibTeX)
- Otto Skrove Bagge, Magne Haveraaen:
Domain-Specific Optimisation with User-Defined Rules
in CodeBoost.
In Jean-Louis Giavitto and Pierre-Etienne Moreau,
editors, 4th International Workshop on Rule-Based Programming
(RULE 2003), volume
86/2 of Electronic Notes in Theoretical Computer
Science, Valencia, Spain, June 2003. Elsevier.
(Abstract,
pdf,
pdf (local),
BibTeX)
- Otto Skrove Bagge:
CodeBoost: A Framework for Transforming C++ Programs.
Master's thesis. University of Bergen, Norway, March 2003.
(ps.gz,
BibTeX)
- Karl Trygve Kalleberg:
User-configurable, High-Level Transformations with CodeBoost.
Master's thesis. University of Bergen, Norway, March 2003.
(ps.gz,
BibTeX)
- Otto Skrove Bagge, Magne Haveraaen, and Eelco Visser:
CodeBoost: A framework for the
transformation of C++ programs.
Technical Report
UU-CS-2001-32,
Institute of Information and Computing
Sciences, Utrecht University, 2001.
(ps.gz,
ps.zip)
- Otto Skrove Bagge, Magne Haveraaen, and Eelco Visser:
A C++ Transformation Framework (extended
abstract).
Presentation at the Nordic Workshop on
Programming Theory (NWPT'00), Bergen, Norway, October 2000.
(ps,
ps)
- T.B. Dinesh, Magne Haveraaen, and Jan Heering:
An algebraic programming style for numerical software and its
optimization.
Scientific Programming 8 4 (September/October 2001), pp. 247-259 (Special
issue on Coordinate-Free Numerics)
(pdf)
- Vector -- simple Vector class example, with
before-and-after code for four different transformations.
To obtain the latest development version, try the public Subversion repository:
https://svn.cs.uu.nl:12443/repos/codeboost/ (trunk,
development
branch). See
INSTALL.SVN for information on installing from Subversion.
- codeboost-0.3.0.tar.gz (NEWS,
INSTALL).
Needs Stratego 0.9.5 or 0.10 and OpenC++ snapshot-HEAD-2003-03-25-ATerm-3 (original source, diff).
Improved C++ support and semantic analysis, better performance (2-3
times). AST changes: new type representation, various minor changes.
See NEWS for
more information.
- codeboost-0.2.2.tar.gz (NEWS,
INSTALL).
Needs Stratego 0.8 and OpenC++ 2.5.10-ATerm-3 or a patched OpenC++ 2.6.1.
Much improved C++ support, better performance and lots of new stuff:
compose extension for function composition; map patterns for implementing
generic map functions; matrix specialisation; symbolic program
derivation, generic user-defined rules, and improved support for
conditions in user-defined rules.
- codeboost-0.2.1.tar.gz.
Works with Stratego 0.7 and 0.8, and includes user-defined rules,
function gathering, lambda/map extension and lots of bug fixes.
- codeboost-0.2.0.tar.gz.
First release, includes a (more or less) working framework, and a single
optimisation ("mutification"). Works with Stratego 0.6.2, and possibly
also later versions.
To compile and run CodeBoost, you will also need:
CodeBoost is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public
License as published by
the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
If you know of other related projects, please let us
know, so we can add them to this page.
Maintained by Anya Helene Bagge.
Last updated June 4, 2004.