Search code examples
.netcompiler-constructionnativengen

Can you use the Phoenix compiler as a more powerful NGEN?


In case you don't know of Phoenix, it's a compiler framework from Microsoft that's apparantly going to be the foundation of all their new compilers. It can read in code from CIL, x86, x64, and IA64; and emit code in x86, x64, IA64, or CIL.

Can I use it to transform a pure .Net app into a pure native app? By which I mean, it will not have to load any .Net .dll (not even mscoree), and will have the same semantics? This is excluding Reflection, of course.


Solution

  • Without knowing too much about Phoenix, in order to have a .NET app run natively you're going to also need a native version of the framework, unless you don't use the framework (which is pretty much impossible).

    Also the CLR includes garbage collection, assembly loading, etc, so dumping the interpreting part of the CLR probably won't make that much difference to the performance of .NET apps.

    Also, from the Phoenix FAQ:

    Q. How do I retarget from a native image to an MSIL image (or vice-versa)?

    A. Not very easily. This is not a supported scenario, and while it might be theoretically possible, we do not know of anyone who has actually done it.