
Mono 4.0.0 Release Notes - tizoc
http://www.mono-project.com/docs/about-mono/releases/4.0.0/
======
ComputerGuru
And with this release we see the beginning of the convergence of the Mono and
Microsoft codebases. I'm glad Mono will be more reliable as a result, there
have always been persistent reliability and compatibility issues that the Mono
team hasn't been able to really fix.

It's also a little sad, in a way. It relegates Xamarin to maintainers of a
distribution for another operating system. At the end of the day, C# and .NET
are now officially first class citizens on Linux. Speaking as someone that
actually ran Mono in production for around a year before realizing it was a
ridiculous waste of time and money and switching to Windows Server 2012 after
finding and filling dozens of untrackable deployment and stability issues in
ASP.NET under Mono, I'm definitely not ready to switch back anytime soon, but
Mono is definitely foreseeably a real option.

~~~
nickysielicki
> At the end of the day, C# and .NET are now officially first class citizens
> on Linux.

C# and .NET will never be first class citizens on unix. This is by design.

[http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

~~~
happycube
Maybe not _first_ class, but I think Microsoft's eaten a bit of humble pie
(ala IBM ~15-20 years ago when they started ramping up Linux efforts) and
generally playing nice.

Who ten years ago would have imagined so much of .NET would wind up MIT
licensed, not just some 'shared source' malarky, on Sourceforge's ~2015
successor?

This isn't the Microsoft of the Halloween memos anymore.

~~~
Locke1689
No, we are making them first class. When we have a bug that breaks one of our
three build queues (Windows, Linux, Mac), it will not be acceptable to break
any of the platforms.

~~~
happycube
Sweet :)

------
knocte
This is a draft. Mono 4.0 hasn't been released yet. Who keeps publishing
mono's release-notes drafts as HN news?

~~~
akoeplinger
I added a note to the page to make this clear.

HN mods: can we get a "(draft)" note added to the submission title as well?

~~~
knocte
thanks Alex

------
gnud
> We no longer build or package reference assemblies for the .NET 2.0, .NET
> 3.5 or .NET 4.0 APIs. We only support now the .NET 4.5 assemblies as well as
> the mobile-based profiles.

Does that go for the runtime as well? Does this mean I can no longer run a
(compiled) .NET 2.0 application on Linux?

~~~
akoeplinger
No, it should run on the 4.5 profile just fine as backwards compatibility in
the .NET APIs is very good.

Please note that this is still a draft and the .NET 2.0/3.5 assemblies will
likely reappear as reference assemblies (i.e. containing only method
signatures in IL, so you can build against those profiles but not run on
them).

------
thurn
I look forward to being able to use this all in Unity3D in 7 years.

~~~
azakai
Unity is moving away from Mono anyhow,

[http://blogs.unity3d.com/2014/05/20/the-future-of-
scripting-...](http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-
unity/)

so updates in Mono are irrelevant to Unity.

~~~
golergka
What? That's what this post says:

> we will also be upgrading to recent versions of the Mono C# compiler, base
> class libraries, and runtime for use in the editor

> We will continue to use the Mono C# compiler (and perhaps later, Roslyn). We
> will continue to use the Mono class libraries. All currently supported
> features and 3rd party libraries which work with Mono AOT should continue to
> work with IL2CPP. We are only seeking to provide a replacement for the Mono
> VM and AOT compiler, and will keep on leveraging the wonderful Mono Project.

~~~
azakai
Currently they support both - il2cpp isn't done yet. But as the blogpost calls
it, it is the future of scripting in Unity.

Also, yes, this is a replacement for the VM and AOT, but the libraries in Mono
are still very useful. Many of them are currently being replaced by Microsoft
code as well, though, so it looks like .NET, Mono and il2cpp will share lots
of code that way. Just not the VMs.

------
rajeevk
Just curious.. Why cant the mono team replaces almost whole of their codebase
with the code Microsoft open sourced? Is there anything stopping them to do
that? Maybe licensing issues?

~~~
azakai
First, the code Microsoft released does not build and run on all platforms.
They promised Linux support, and are working on it now in the open, but it's
not there yet. So Mono can't just adopt the Microsoft .NET VM without losing
features.

Second, Microsoft is open-sourcing their whole VM - JIT, GC, as well as
compiler and libraries. Compiler and library code is already being utilized by
Mono, and more all the time. However, Mono doesn't even have plans to replace
their JIT or GC with .NET's, as far as I know (and the Trello board linked to
in the article seems consistent with that).

Could Mono do that (once Microsoft's builds on Linux and other platforms Mono
needs)? Yes in theory, but it would mean abandoning all the massive amount of
work they put into their VM over many years. I don't know whether it would be
rational or not to do so.

Licensing isn't a problem for Mono to use Microsoft code. However, Mono's
runtime is LGPL licensed, and this has been a source of revenue for them
(people pay Xamarin for licenses for platforms like consoles where LGPL is a
problem). So to replace the Mono VM with Microsoft's could be a step back
there.

~~~
Locke1689
I can't speak for mono, but converging makes sense where it makes sense -- if
mono has a solid implementation of something they consider core and the MS
implementation isn't trivial to port, I don't see a good reason to port it.

------
migueldeicaza
It is a shame that this got submitted before we actually published the code.
It is Easter and many of our engineers are taking these days off.

The release notes are also incomplete and not ready for publishing

Miguel

~~~
tizoc
Sorry, saw it on reddit as "Mono 4 Released"[1] and reposted here, without
noticing it was just a draft (the "THIS IS A DRAFT" comment wasn't there at
the moment).

[1]
[http://www.reddit.com/r/programming/comments/31ezp0/mono_4_r...](http://www.reddit.com/r/programming/comments/31ezp0/mono_4_released_adopts_ms_source_code/)

------
glutamate
Tail call optimisation in F# ?

~~~
saosebastiao
Wait...mono doesn't do tail call optimization with f#???

~~~
glutamate
It is (or was) complicated, you could stack overflow on two mutually recursive
functions or tail calling inside continuations.

~~~
saosebastiao
I'm getting constant memory on this (mono v3.12.1)

    
    
        let rec beep x =
            if x = 0 then x else boop (x - 1)
        and boop y =
            if y = 0 then y else beep (y - 1)
        
        let main argv =
            printfn "%A" (beep 999999999)
            0

~~~
profquail
Those are mutually recursive functions, but they're not using continuations.

------
jordz
This draft looks great. We've been running Mono since December 2013 for a
fairly big data processing framework - 2014 saw us move it into production.
We've had our fair share of really horrible performance issues, runtime issues
and the rest. 4.0 has some stuff in that fixes many of those nasty issues!

Awesome work by team Xamarin + Contributors.

