Saturday, April 5, 2014

Development will stall for some time

I encourage you to take the CR sources and play with them and try to advance them. Anyway for the next months I will work very little to improve CR: I have little time and I'm split in between work, family and other time consuming issues.

What I've learn is a fairly deep how a CIL instructions work, and that is possible technically to move most of instructions (if not all) to a C++ implementation, but there will be always bugs and work-arounds and they require time which very few people want to invest (none!?).

Based on this, I can say that I will be glad to support people to write tools or help them fixing bugs, but I will not work for now at least to improve CR. Maybe when you have more time, please try to add a feature or to fix something. Some parts are partially implemented and they need just "moving code around" to support more cases: delegates, generics, virtual calls have at least some code to start. If they are fixed, basically it will work a good chunk of .Net 2.0 codes.

This is it for now, I really hope that some people will try to clone the repository and improve the code and later I will be really glad to improve the needed parts, elsewhere it looks for now a too small incentive to make it work.


  1. Hey man, just wanted to say I've enjoyed glancing at this blog every now and again because I think the concept is very interesting. Sad to see you leave it for now.

    A question I've always wanted to ask though, did you every consider translating IL to LLVM rather than C++?

  2. With the actual design is a bit harder to target LLVM, because CR is .Net only, so there should be either written into an intermediary representation and used from the LLVM backend based code, or use LLVM code.

    Maybe I'm wrong, but LLVM would not bring any benefits performance wise at least, but it would increase the burden on developer: when LLVM 4.0 will appear maybe it will be a bit incompatible with LLVM 3.x.

    The issue is sadly as always: time! If people will be more interested and they will contribute, it would make a much easier task at least to think about LLVM :)