ROSE has been used to facilitate a number of projects for exploring program analyses and optimizations, supporting new programming languages, and building correctness and performance tools. Representative examples include:
- Compass: a tool for the checking of source code.
Compass is based on the ROSE compiler infrastructure and demonstrates the use of ROSE
to build many simple pattern detectors for analysis of C, C++, and Fortran
source code. See the current Compass Manual for details.
- Whole-program empirical optimization: participation in the PERI project.
ROSE is a central component in the PERI project to enable performance portability of DOE applications
through an empirical optimization system,
which incorporates a set of external tools interacting with ROSE to
support the entire life-cycle of automated empirical optimization.
See the current draft autotuning tutorial for details.
- Loop optimizer: support for aggressive loop optimizations such as loop fusion,
fission, unrolling and blocking. An extended dependence analysis algorithm has been implemented to support both perfectly nested loops and irregular loop nests.
- OpenMP: a project to support OpenMP using ROSE. ROSE already has a lightweight parser for OpenMP C/C++ pragmas and a translator for OpenMP 2.5 constructs. We are extending it to support Fortran and the new OpenMP 3.0 specification.
- UPC: ongoing work to support UPC using ROSE. We are leveraging the existing UPC support available in the EDG frontend to build an environment for program analysis and optimizations for UPC applications.
- Haskellport: an interface to ROSE's IR for the Haskell programming language. See the tutorial (a chapter of the ROSE Tutorial) and API documentation for details.
- Windows support: We are currently working to support ROSE under Windows using Visual Studio (via CMake generation of the MSVC Solutions file)