Compilers are large software projects consisting of many separate but common components like code generators, garbage collectors, and runtime diagnostic tools, to name but a few. Historically compiler developers have had to write each of these components from scratch. The Eclipse OMR project was created to provide generic components for use in new compilers and language runtime environments. OMR has enough flexibility to accommodate a wide range of programming languages without sacrificing performance, portability, or robustness.