Why are there four mono C# compilers? -
this page explains 4 different mono compilers - mcs/gmcs/smcs/dmcs.
to me, it's little bit weird have 4 c# compilers. newer version of compiler maintains backward compatibility.
i assume that's because of runtime support issues, microsoft's c# has 1 csc.exe supports of runtime versions.
it's because mono's compiler written in c# , uses system.reflection, means can access mscorlib runtime it's running on. therefore, example, smcs doesn't target 2.1, uses 2.1 corlib, etc.
there have been plan while have *mcs use either mono.cecil or ikvm.reflection instead of system.reflection, mean there single mcs compiler arguments target different runtimes.
microsoft's compiler doesn't have limitation because doesn't use .net reflection (it's written in native code).
Comments
Post a Comment