

Mono 3.6.0 is out - edsiper2
http://www.mono-project.com/Release_Notes_Mono_3.6

======
lucianp
I really wish Mono would gain more traction. C# (3.0 onwards) is one of the
nicest programming languages I have worked with (despite its warts). I also
heard a lot of good things about F#.

~~~
edgyswingset
F# is a phenomenal language. Not that C# is bad (it's fantastic!), but the
more I use F# the more I feel it's a superior language for most tasks. First-
class .NET support is the real kicker, since you can do anything from DB
interaction to writing MVC controllers. Integration with existing C# projects
is seamless too, so it's really just a joy to work with.

~~~
Touche
I disagree; C# is bad by comparison. I cannot think of a single reason to use
C# over F#, can you? F# is essentially C# but with better defaults and much
more easily extensible.

~~~
math
I trialed F# a while back. Something I certainly noticed was not having as
much help from the IDE (no resharper). The lambda notation also annoyed me (by
comparison to C#). Yeah, I know it's no big deal and I understand the trade-
offs being made.. but it still annoyed me. Pattern matching is one of the draw
cards - but I see that is coming in C# soon.

~~~
edgyswingset
Did you give F# Power Tools a go? It gives you a lot of what is missing out of
the box. It's still not as great as C# IDE support, but for most things it
gets the job done.

------
akoeplinger
FYI, the current Mono website is pretty outdated right now and will soon be
replaced by a new one built on Jekyll: check
[http://mono.github.io/website/](http://mono.github.io/website/) for a
preview.

~~~
Ad_Nauseam
Why mono website built on Jekyll instead of .net with mono itself?

~~~
romanovcode
I don't think there is anything dynamic happening on Mono website. Why use
backend when there is no need in it?

------
romanovcode
So the real important question is: Does it finally support MVC5?

~~~
akoeplinger
Yes, it works:
[https://twitter.com/mjhutchinson/status/479063888575881216](https://twitter.com/mjhutchinson/status/479063888575881216)

Anything complex may still hit some issues, though this might not matter much
in the future as ASP.NET vNext will fully support Mono.

~~~
weiran
Unfortunately Web API 2 doesn't seem to work on it.

------
Locke1689
_Our msbuild implementation can now build Project K and Roslyn_

Wow. Really impressive -- our MSBuild hackery is gut-wrenching.

------
deevus
This is cool!

I got pretty far into building an MVC project that I have been working on for
a long while in Windows.

I had to manually run the NuGet package restore command, as I couldn't see a
way to enable package restore for the project. I set
EnableNuGetPackageRestore=true preceding the command and it installed all the
packages successfully.

I have run into a roadblock with a MSBuild TypeScript target however. The
error message wasn't very telling but I'm assuming it's because it can't find
the TypeScript compiler.

------
DAddYE
Interesting, how about performances of mono? The thing that attracts me to it
is F#, however as others stated I'm out of windows development since 98.

~~~
MichaelGG
Mono performs "fine". That is, I've never really isolated Mono as the cause of
performance issues. I'm running it in telecom applications, handling billions
of transactions a week. Years ago I compared things, and the CLR was usually
better. But generally speaking, the approach in algorithms/approaches is going
to dominate the runtime.

The exception is when you're dealing with a very high transaction rate (say,
doing 100K msg/sec, non-trivial processing per message, in a single process).
Then the GC overhead is something to be aware of, and you'll go to extreme
lengths just to remove a handful of allocations for each message. At that
point, manual memory management (either via hacking up the runtime with unsafe
code, allocating large arrays of structs, or using unmanaged code) is the
right path. But from light reading, it seems the same is true in Java or other
GC languages, so no difference for Mono there.

So the alternative is C, usually, which has its own set of tradeoffs. Rust
looks far more promising, but in general, Mono's performance is just good
enough that I'm more likely to keep my nice F# code and add a few boxes.
Unless you're in a high-performance arena, and you'd know if you are, this
likely holds true for your business.

Edit: Also, I'll note we're using Mono 2.10. So updating to 3 should get us
the new GC which may make a difference, as well as allow LLVM code, which
should help significantly for server apps.

~~~
e12e
Interesting information. Can you share a little more about your platform?
Distro? Are you doing basic tcp/ip or pushing to/from some kind of dedicated
hw?

~~~
MichaelGG
CentOS and Windows, Xeon 5400 series CPUs - cheap used Dells. OpenSIPS,
FreeSWITCH, RabbitMQ, SQL Server, VoltDB, and a custom DB. We have a few
hundred million routes loaded at any given time and run up to 50,000
calls/sec. SQL Server is going to get phased out in favour of Postgres, due to
SQL Server's increasing licensing costs. ElasticSearch also looks like it
might be a good candidate for crunching up a bunch of records.

All critical code is F# on Mono and CLR. Each voice-handling machine makes an
HTTP request to a CLR process to get routing instructions, then the results of
the call are handed off to a Mono process, which protobufs stuff into a local
RabbitMQ instance, which gets shoveled into billing, analysis, etc.

Lots of "XML", as that's FreeSWITCH's preferred format (it's not real XML, but
a psuedo-XML with inane encoding rules, for some reason). This is the cause of
at least 20% CPU time when handling call records.

In general, scaling out by adding a few more machines to the mix is so easy
we're not really pressed hard to make things go faster. But it's certainly fun
to do. I'd guess we can improve many pieces up over 100% without doing
anything really tricky.

As a comparison, I know of at least one successful competitor that has
everything in PHP. Every call creates multiple processes and multiple (10+
sometimes) DB queries. Their entire scale-out process is to throw hardware at
things. At one point they had over 100(!) servers just to hold call records
(maybe 100M a month?). Inefficient? Hilariously so. Did the primary owners get
rich from it? Absolutely. Engineering quality counts for surprisingly little,
when it really comes down to it.

------
lmedinas
Here it is a good business for the "new" "21 century" Microsoft.

To put their language into Mobile, OSX and Linux.

~~~
romanovcode
If they do succeed I seriously think it could be the end of Java.

~~~
wclax04
Java has a massive foothold in the business community, especially in finance.
I don't think Java is going away anytime soon.

~~~
CmonDev
Yes, Java is basically new COBOL. Ugly yet to stay in a lot of places for a
while.

~~~
watt
You should realize that Java (JVM and libraries) is completely open source
(GPL). Oracle JDK is just another build of OpenJDK. This means the ecosystem
is not tied to a vendor: if you build your systems on Java, you are your own
master.

------
ldw
Still... try to install any version higher than 2.10 on your linux distro and
be ready for some suffering...

~~~
logicchains
If that's the case it might be worth considering an Arch Linux install.

~~~
logicchains
To the downvoters, what's wrong with suggesting someone use a Linux
distribution that's generally quite quick to package new versions of software,
as a solution to their stated problem of their Linux distribution(s) making it
difficult for them to install recent versions of said software?

It's quite possible to have a new Linux distribution up and running on
VirtualBox in under an hour, or in a chroot under an existing Linux
installation.

~~~
JimmaDaRustla
I'm going through some pain with some Ubuntu based distros and packaged
software. Really missing Arch with its rolling releases!

------
jkbyc
Any time I wanted to use mono it didn't work. It wasn't many times though. A
couple of times to try a FPS game and also for some sites based on
Silverlight. I'm wondering if it is usable now or what's the common use case
for it for which it works fine.

~~~
throwaway12321d
If you want to run Windows .NET applications, in particular GUI applications
you may have problems. But I have been using Mono for developing new software
(libraries) for a decade and it works nicely. I often don't need a GUI and if
I do, I just do that part on Windows later.

~~~
xtrumanx
Do you use an IDE when developing on mono or just a text editor? If you do use
an IDE what's it like?

------
tuio899
It looks like only the installer for OSX is up to date.

Is Ubuntu supported? Where do Linux users other than OpenSUSE users get
packages? Do they build it themselves?

~~~
akoeplinger
Packages for the major Linux distributions are being worked on, see
[http://lists.ximian.com/pipermail/mono-devel-
list/2014-June/...](http://lists.ximian.com/pipermail/mono-devel-
list/2014-June/041658.html)

One of the early outcomes of this are CI packages built for each commit:
[http://www.mono-project.com/DistroPackages/Jenkins](http://www.mono-
project.com/DistroPackages/Jenkins)

~~~
tuio899
Thanks for providing those links. I'm really excited to see Xamarin hiring a
developer for Linux support issues.

------
blutgens
AND THE CROWD GOES....

"Yawn... what is out? Oh yeah, I think I heard of that..."

------
dragonbonheur
It's sad to see VB.net being treated as a second class citizen on this
platform and ironic to see little GAMBAS be a better option for BASIC
programming on Linux, given the resources.

~~~
eropple
Why is this "sad"? VB.NET offers little (anything?) over C#. I've never seen a
bit of VB.NET you couldn't transpile into perfectly readable C# outside of
_really gross and bad_ implicit type conversions around Booleans.

If Xamarin should care about VB.NET, it should be better at things than C# is.

~~~
kazagistar
It offers the ability to run VB.NET codebases. Transpiling them into C# offers
cost with little benefit (for stable code that is rarely updated), while
running it on Mono allows for hosting infrastructure upgrades.

But if anyone cared, they would do it. No one cares, so it does not get done.

~~~
eropple
Right, so what's sad about that?

Use majority tools or deal.

