BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Mono 4.0 Released with C# 6

Mono 4.0 Released with C# 6

Lire ce contenu en français

Bookmarks

Mono 4.0 was officially released this month. This marks the first version that contains open source code from Microsoft’s CoreCLR project. It also defaults to C# 6, meaning that once again Mono has an RTM version of a new C# compiler before Microsoft.

In addition to the features and changes we previously reported on, Mono 4 is supposed to have “Lighter Debugger overhead” and “Basic PowerPC64 LE support”. Specific details on these features are not available at this time.

Many people have been asking why the Mono project should continue now that Microsoft is working on their own open source, cross platform CLR. Mono contributor and reddit user _alexrp_ explains,

I think people have the wrong mindset about this whole Mono/CoreCLR situation. Why should one VM becoming open source and being ported to other OSs mean that another VM can't exist? It'd be like saying that there should only be one Python implementation, or one JVM. That is not a good thing. Competition is healthy.

Mono happens to have a lot of features that CoreCLR doesn't: LLVM, full AOT, NaCl, tasklets, cross-VM GC bridge, various profiler modules, etc. Mono's startup time and runtime memory footprint are also optimized for platforms/devices that CoreCLR isn't (at least presently) even targeting. OTOH, CoreCLR has a more mature GC and generally better code generation (hence the slower startup time). The two VMs are good at different things, and there is no reason both cannot exist.

It's not like we insist on keeping our own code either. We're happy to switch to CoreCLR/reference source code when there are clear benefits to doing so (less maintenance, more correct, still portable enough). We've imported tons of reference source code already, and we're also importing certain parts of the CoreCLR VM:

https://github.com/mono/mono/blob/master/mono/metadata/decimal-ms.c

https://github.com/mono/mono/blob/master/mono/metadata/threadpool-ms.c

The 4.0 release is not without its flaws. Reddit user whatsinashagbox writes,

I'm not quite sure how to handle this now, since I have an app that has some third party dll's that seem to want the 10.0.0.0 version of Microsoft.VisualBasic.dll and will not run under mono 4. The release notes seem to imply there's a way to get it to use the .Net 4.5 assembly, but I am not clear on how to do that. Anyone got any ideas how to make this thing work with the new version of mono?

This is currently being researched and appears to be an accident.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Topic

    by Luiz Adolphs,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Well, there`s a large suit of .Net technologies (wf, silverlight) that the new framework version must support, and those are far beyond what Mono CLR can reach, right?

  • Re: Topic

    by Jonathan Allen,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Sorry, that's not the plan.

    Microsoft's Core CLR is only going to support ASP.NET 5 and console applications.

    If you want to use more of the .NET framework (e.g. WinForms), you need to use Mono.

    Nobody is supporting Silverlight or WPF on Linux.

  • Re: Topic

    by Paulo Oliveira,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    well pointed!

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT