[Mono-dev] Beyond C#

Scott Thomas lunchtimemama at gmail.com
Sun Jul 26 04:25:37 EDT 2009

I had a few hours to kill in SeaTac recently and was NOT ABOUT to
suffer AT&T's wifi extortion scheme. Thusly out of sync with my usual
git repos, I decided to hack on a local copy of gmcs. Last week, abock
and I were discussing wish-list syntax sugar WRT event handler
registration in object initializers and undefined parameters for
lambdas. It turns out to be a mainly grammatic change, with a little
additional semantic logic. The patch[1] is discussed on my blog[2]. So
I've forked the language. The question is, what now?

Aaron suggested, only half jokingly I think, that Banshee include a
fork of gmcs for the use of non-standard syntax. The ideal solution,
of course, is to merge the patch into mainline mcs. There has been
talk in the past about this kind of thing: non-standard language
features available by passing some flag to the compiler (I use
-langversion:future, much mention of which has already appeared in
these such discussions). The talk to date has been purely theoretical.
We now have a real patch. In mainline, people will be readily able to
experiment with and use these new language features. They (the
features) will actually be useful.

The two primary concerns I hear are:
1) The burden of maintaining and supporting non-standard features is
2) It's not C#!

My rebuttals:
1) These non-standard features can mature through various levels of
"supportedness," beginning life in a volatile "experimental" category
which vehemently disclaims any suspicion of stability, and eventually
growing into a station of de facto officialdom.
2) No, it is not. It is something new. Perhaps it is what we want C#
to be. Perhaps it can help us shepherd C# in the direction we desire.
Or perhaps it is a different language with a different name. As to the
dangers of there being such a thing as Mono-only source code, the
recent efforts on Mono-related VS plugins should easily equip our .NET
brethren with all prerequisites for our betterments. Also, the
compiled assemblies remains binary-compatible with the .NET virtual
machine. Since binary images make the rounds more commonly than source
code in the Windows-ways .NET world, the beneficiaries of our
libraries and applications will transparently consume our code in its
binary form. Those who do desire source are welcome to it, and its
compiler - Mono is free to all.

That's my piece. I think we should do it. Respond!

[1] http://getbanshee.org/~abock/stoms-super-spectacular-abock-inspired-csharp-revolutionizing-gmcs-patch.diff
[2] http://themonkeysgrinder.blogspot.com/2009/07/cer.html

More information about the Mono-devel-list mailing list