This project is read-only.

CCI vs [DLR|Phoenix|Language Service|Cecil...]

Apr 27, 2009 at 10:28 AM


Just to get it out of the way: I think there is a lot of confusion because of the different offerings of Microsoft and others in the ompiler tools space. I've read the discussion about CCI and Phoenix and that was illuminating - how about the rest?

Especially, and I have to be careful here as my experience with this stuff has been limited, wouldn't DLR expressions give you everything the CCI code model gives you as for generating IL? Or the upcoming C# languge service? How does CCI compare to Cecil?

I'm not looking for definitive answers here, obviously, but I think this kind of question is bound to come up very often. I'd like to hear from people that have experience with CCI and X, just to get their impressions.

thanks for any thoughts on the matter.

Apr 28, 2009 at 7:07 AM
The DLR is primarily about making it easier to compile and run dynamically typed languages. Its been a while since I've looked at the DLR and it is possible that in the mean time it has become general enough to serve as a code generation framework, but I would be little bit suprised, since that is not the primary scenario for the DLR. Consider using the DLR if you are compiling a dynamically typed language. If you are compiling a statically typed language, CCI might be bettrer fit. Also, if you are reading metadata, rather than consuming it, CCI is likely to be a better fit.

I have not been able to look at Cecil, but I imagine there is a lot of overlap with CCI. I can offer no guidance as to when you should use the one or the other. As time goes on, I expect that both frameworks will converge to cover the same set of scenarios and the choice of the one over the other will be largely based on your prior history and your overall environment.

The upcoming C# language service is still being designed. It is too early to speculate what it will look like when its done, but it seems unlikely that it will be just like CCI. If you can wait a few more years, and it is very important to use tools that are supported by a Microsoft product group, that may be the right technology for you. If you'd need something today, then consider CCI.