[Mono-dev] VB libraries and compiler status?

Rafael Teixeira monoman at gmail.com
Mon Apr 17 21:29:30 EDT 2006

On 4/17/06, Jonathan Morgan <jonmmorgan at gmail.com> wrote:
> On 4/17/06, Miguel de Icaza <miguel at novell.com> wrote:
> > Hello,
> >
> > >             I have some changes and additions to the
> > > Microsoft.VisualBasic libraries.
> > >             It looks like other than a few changes in the last week,
> > > neither the libraries nor the compiler have been worked on in months.
> > >             Are these still being developed?
> > >             Who is currently in charge?
> >
> > Novell is no longer working on the VB.NET compiler.  It was originally
> > one of the planned features for Mono 1.2, but we we decided to retarget
> > our efforts.
> >
> > There were a number of reasons for this decision:
> >
> > * MBas became increasingly hard to maintain.  mbas was based on
> >   a very old version of mcs, and did not get any of the later
> >   improvements in mcs.
> I have wondered why it was based on mcs as a new compiler.  I would
> have thought that Microsoft made enough changes to VB.NET in order to
> make it conform to the CLR that it could be translated fairly directly
> to C#, in which case that would seem to me to be an easier and more
> maintainable compiler (and it would also get all the improvements in
> mcs).

In truth VB.NET has some syntaxes that can't be expressed in C#, like
optional (defaulted) parameters. Currently we post-process the runtime
library written in C#, instead of VB.NET like the MS one, by
converting to IL, changing some things and reassembling, so that some
defaulted parameters can be embedded as needed.

Also double translation, isn't normally a good performer, while using
the same compiler classes (as in the beginning of mbas development)
made it possible for good performance while I was able to keep them in
sync. Some other devs contributed a lot of code to mbas (after all,
there are HUGE semantic differences between the languages) that made
it quite impossible to keep mbas in sync with mcs after the

> > * The runtime is still there, and its today probably the most important
> >   piece, as it allows existing VB.NET applications to run on Mono.
> Can this runtime be accessed from C#, or is it purely used by the VB compiler?
> Jon

Yes it can, but little of it is really needed by non-VB devs, as it
mainly wraps base classes functionality in a way that looks a lot like
VB6, to make long-time VBers happy. Some other bits are helper
functions to support the late-binding semantics optionally available
in the language.

Hope it clarifies things a bit,

Rafael "Monoman" Teixeira
As I'm currently working a lot with Java and even fixing Java VMs
(JamVM/Kaffe) and GNU Classpath code, I think I may partly borrow the
title (Javaman) from my friend Bruno Souza and become the
MonoNJavaMan. Yeah, I may currently be crazier than usual...

More information about the Mono-devel-list mailing list