[Mono-dev] Incremental build for mono compiler

Marek Safar marek.safar at seznam.cz
Fri Apr 10 15:39:59 EDT 2009

> I am planning to implement background compilation for
> SharpDevelop<http://www.icsharpcode.net/OpenSource/SD/Default.aspx>.
> It requires to modify mono compiler to have an incremental build feature.
> I am thinking about this and from my point of view it requires from
> mcs to (correct me if I'm wrong):
> * The naive implementation of this just modify frontend of compiler to
> have parser stage completed - quick prototype
> * save metadata of compilation and internal state of compiler
> * allow to compile only one modified file (If modification requires to
> compile more than one e.g. change of interfaces or name of public
> member additional recompilation should be made)
> * Next step of this task will be to allow recompilation of only one
> method for E&C feature
> So I  am asking for Your help with my few questions:
> * Which is the best place to start ?
> * Potential problems ?
> * Some guidelines to do this in the "Mono" way for future integration.
I think this could be easier to implement than you may think. All what 
you need is to create an instance of mcs compiler (keep it in memory) 
and then use REPL interface to compile modified code using same mcs 
instance. You will have to tweak our REPL to compile in correct context 
but that should be almost all what needs to be changed.

The bad news is that mcs does work properly on Mono runtime only. But as 
Miguel wrote I am working on a solution and it should be ready in next 
few months. You can play with current mcs as the new version should only 
make things easier for you, e.g. you could get compiled method body as 
byte array.


More information about the Mono-devel-list mailing list