7 ms·
Mono 4.0.0 Release Notes
- ComputerGuru 11y agoAnd 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.
- tacos 11y agoThe Mono team did an amazing job, and they actually had a lot of support deep within Microsoft all along. But yeah, I think it's okay to say "it never really worked." (And there's nothing wrong with being a port factory that deals with obscure path issues all day. That's why they give you a paycheck...) Still, Xamarin is doing a LOT more than just Mono, much of it extraordinary. Also delivering something that actually works is an ego boost. Probably attracts the "right" kind of employee for the task, too.
- smosher_ 11y ago> But yeah, I think it's okay to say "it never really worked." I don't. I mean yes mono <4.0 has a lot of problems, but it works well enough for me to shell out money for applications running on mono and be happy about it.
- tacos 11y agoI literally saved two businesses as favors to friends. One by replacing a Mono app on Mac with Windows running in a VM. The second by doing the two hours of config work they were afraid of to host on Windows Server instead of a Linux box. (At the same damn price!) Xamarin did an immense amount of work pushing that boulder up a hill. Glad you got results, but frankly it did a lot of damage to a lot of people. I say this as a Microsoft fanboy and someone who deployed sites you've heard of on Mono + Postgres + CentOS. In the last year or two many .NET vendors went from "yes, it works on Mono!" to "it should work but no support." This indicates the formal death of the ecosystem to anyone but apologist hobbyists and thankfully we've gotten to a better place now.
- smosher_ 11y ago> This indicates the formal death of the ecosystem to anyone but apologist hobbyists and thankfully we've gotten to a better place now. A couple of things. First: "This", so far, is anecdotal and doesn't indicate much of anything, really. For something concrete, look at Unity. Maybe you haven't used anything built with it, but everything I've seen come out of it works just fine. Second: Apologist hobbyists? That's not true and needlessly insulting. If your aim is to just marginalize anyone with a differing opinion please don't expect me to take you seriously.
- tacos 11y agoUm... Unity spent the last three years trying to find a way to pry themselves off Mono. Unity "works" because devs using Unity work their asses off tiptoeing around a really old version of Mono. You picked about the worst possible example to make your point. http://forum.unity3d.com/threads/unity-5-and-mono-runtime.235079/ http://forum.unity3d.com/threads/unity-5-and-mono-runtime.23...
- smosher_ 11y agoUnity works though. Unity games have a much better batting average in my experience than C++ ports, and I have more problems with "cross-platform" games and other applications written in Java. These aren't hobbyists and they're not definitely not apologists. They're making good money on it. If it was as bad as you say, why bother with the Linux/Mac support to begin with? That's just noise compared to the Windows market. I also have to point out that an ancient version of mono being problematic doesn't mean mono failed or doesn't work. By my measure, even that old version of mono works. I don't know what your metric is. People ship working code and make money in parts of the market they wouldn't otherwise have. But I guess that doesn't count in the face of what? your decision not to use it?
- azakai 11y ago> It's also a little sad, in a way. It relegates Xamarin to maintainers of a distribution for another operating system. I'm not sure I understand what you mean here. As I understand things, Mono is still keeping its runtime - JIT, garbage collector (the release notes here mention optimizations to SGen), etc. That means Mono isn't nor is it planning to be "just" a distro for Microsoft's .NET. (But it is using more and more Microsoft library and compiler code.)
- coldtea 11y ago>I'm not sure I understand what you mean here. As I understand things, Mono is still keeping its runtime - JIT, garbage collector (the release notes here mention optimizations to SGen), etc. So? Who will still use those, if there's a fully supported MS based (+ some open source effort for some edges) alternative?
- nickysielicki 11y ago> 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 11y agoMaybe 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 11y agoYou're aware the past can only inform the future, not predict it?
- yareally 11y agoSome people are never going to get over the past...guessing if the poster is American, they must not trust the British either for burning down the White House 200 years ago. I lived through the late 90s and 00s Microsoft era and know as well any developer the shenanigans that went on for better or worse. I always had a fondness for C# over Java for its willingness to innovate while Java stagnated, but never wanted to commit myself to being stuck only in the Windows ecosystem. That said, I am excited to see the direction Microsoft is heading. It enthused me enough to start using Xamarin when I want to build cross platform for personal projects and to recently switch my day job to a company that uses .net for most of the their software. Not overly fond of cmd.exe and powershell on Windows still, but for most things, there's always Cygwin and it too has come a long way. Main issue is Powershell inherited all of cmd.exe's bad user interaction design (tab completion, select/copy/paste, buffer, history up/down scrolling) when compared to a typical *nix terminal.
- j_s 11y agoIt will be interesting to see if anyone releases an open-source port of the MS runtime to ARM... Xamarin could wind up left with only their proprietary cross-platform UI toolkit!
- yareally 11y agoRuntime is already open and runs on Linux, one just has to cross compile it, optimize for mobile and do the bindings and such that Xamarin already does. That's still quite a bit of legwork since Xamarin has been doing it for some years now. Not saying someone couldn't do it, but it would take a good amount of time to be on the level Xamarin is in stability and performance. I pay for Xamarin personally and think it's well worth it if doing cross-platform compared to the alternatives out there. I'd continue to do so until there's a very stable open sourced alternative. However, I think Xamarin knows such a possibility could happen and that's why they primarily target enterprise and not individual developers. https://github.com/dotnet/coreclr https://github.com/dotnet/coreclr
- moonchrome 11y agoFor Android this could be possible. For iOS I think you would have to figure out how to hook up MS runtime to a LLVM AOT compiler and then do all the work Mono team did to make sure libraries compile/work without JIT. I really hope Xamarin guys follow Microsoft lead and make entry level version of their product free. It's not just about the ~25$ per month, it's about community as well - say some guy X is maintaining .NET library Y. I write up a port/pull for Xamarin - X goes "sweet but I can't test that since I don't own Xamarin and I can't even include it in my test suite to not break it further". Now I have to maintain a branch of Y for Xamarin and most other people are likely not going to find it or willing to use it. I don't know which % of their profit comes from the indie licensing but if it's not significant as I suspect I would hope that they see this - it will help both their adoption and the OSS community build tools for their product.
- pjmlp 11y agoThat depends on what Microsoft plans to do with the upcoming .NET Native compiler, but I guess that would be kept closed.
- gnud 11y ago> 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 11y agoNo, 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).
- glutamate 11y agoTail call optimisation in F# ?
- saosebastiao 11y agoWait...mono doesn't do tail call optimization with f#???
- glutamate 11y agoIt is (or was) complicated, you could stack overflow on two mutually recursive functions or tail calling inside continuations.
- saosebastiao 11y agoI'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 11y agoThose are mutually recursive functions, but they're not using continuations.
- knocte 11y agoThis is a draft. Mono 4.0 hasn't been released yet. Who keeps publishing mono's release-notes drafts as HN news?
- akoeplinger 11y agoI 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 11y agothanks Alex
- golergka 11y agoThis is on HN homepage now, so the question you should ask is not who published it, but who upvoted it. And the answer is, at least 158 different people who found it useful.
- coldtea 11y agoPeople who want to learn some details about this upcoming release before it happens?
- thurn 11y agoI look forward to being able to use this all in Unity3D in 7 years.
- azakai 11y agoUnity is moving away from Mono anyhow, http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/ http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-... so updates in Mono are irrelevant to Unity.
- golergka 11y agoWhat? 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.
- lhenry 11y agoThey are (apparently) using Mono (C# compiler + base class libraries + runtime) on the desktop for their IDE, and they are using IL2CPP and parts of Mono (C# compiler + base class libraries, but not the runtime) on their targets (iOS, Android, ...)
- azakai 11y agoCurrently 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.
- needusername 11y ago> Unity is moving away from Mono anyhow, I don't know man. Mono moved away from Boehm GC to a real gc (SGen) because it never really worked for them bespite feeding it a lot of metadata. Others before them have found out that tanspiling to C/C++ isn't really that great (some of the more recent ones where HipHop PHP).
- rajeevk 11y agoJust 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?
- knocte 11y agoYou know that Mono is cross-platform and Microsoft code only runs in Windows right?
- gfodor 11y agoIs this true?
- beachwood23 11y agoYes. Its literally the point of the Mono project.
- ianlevesque 11y agoNot anymore. The .NET Core has been ported to OS X and Linux already. It still has a long way to go in stability though.
- knocte 11y agoThe OP is talking about the reference sources, not .NET Core (which is an unfinished effort, btw).
- Locke1689 11y agoNetFx core contains many of the same things that NetFx desktop does, and everything in Netfx Core is required to be cross-platform, so I would say that many, if not most, pieces of the framework should be portable directly to mono.
- knocte 11y agoYes, especially for the IO code, which is C# code p/invoking into Windows kernel APIs. Mono project has been mainly pulling Microsoft's code that is managed, which is the one that should run in any OS unmodified.
- jordz 11y agoThis 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.
- migueldeicaza 11y agoIt 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 11y agoSorry, 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_released_adopts_ms_source_code/ http://www.reddit.com/r/programming/comments/31ezp0/mono_4_r...