The goal of this work is to provide a high quality front-end for LLVM that is built with the same principles as the rest of LLVM (it is built as a set of reusable libraries, integrates well with rest of the LLVM architecture, same license, etc). Among other things, this means that LLVM can now be used for a variety source-level analysis and transformation tasks that it was not suitable for before.