Last week at Lang.NET 2009 conference the Common Compiler Infrastructure was open sourced under the terms of the MS-PL license.
This library was developed used internally at Microsoft some years ago to support some internal projects. This provides a set of services similar to our own Cecil library. Despite this, it is nice to see Microsoft open source more code.
Cecil, in addition to the low-level APIs for reading and writing ECMA CIL files has a few niceties layered on top of it like a Flowanalysis engine (it is used to decompile byte codes into ASTs) and a full fledged decompiler.
Additionally, Marek is currently replacing the backend in
our C# compiler to move away
from System.Reflection.Emit
into using Cecil so
that we can bring our C# REPL to Windows developers.
Mono's C# REPL currently works in a very limited mode in
.NET (no generics, no LINQ) because
.NET's System.Reflection
has several limitations
for building full-fleged compilers. To work around this issue
Mono has over the years extended the Reflection stack to
provide the features that were missing. We were never quite
happy with this and we are now dropping it in exchange for
Cecil.
JB, the creator of Cecil shares with us his take on Cecil and the CCI.
Posted on 20 Apr 2009