Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DotGNU vs Mono

Tags:

.net

mono

DotGNU and Mono seem to be attacking the same problem - namely implementing the .NET CLR in a free, open-source way with an eye to cross-platform compatibility.

I've been reading quite a bit about both, and I'm having a hard time deciding which implementation to use for an upcoming project. My particular project doesn't need System.Windows.Forms, so the graphical UI part of the libraries won't be too important.

So: has anyone tried comparing the two directly? What are the pitfalls of either with respect to the other? Is one more supported by the FOSS community than the other?

Thanks to all who respond :)

like image 319
Mike Avatar asked Jun 16 '09 19:06

Mike


2 Answers

Well, Mono looks like a much more complete port to me, with a lot more backing.

Judging by the web site, DotGNU seems to be as much about telling people not to use .NET as it is about providing a viable alternative. Many of the links (such as the "latest changes") don't seem to go anywhere useful.

Mono, on the other hand, is very obviously under active development, supports the new DLR, has implemented C# 3.0 and LINQ support, is available to install from packages for multiple platforms, has working documentation etc. The winner seems pretty clear to me.

like image 137
Jon Skeet Avatar answered Nov 19 '22 15:11

Jon Skeet


Dotgnu does not support generics and anonymous delegates, while mono does.

I had successfully compiled dotgnu from git sources on a number of platforms with and without libjit. I had a much less success compiling mono from their latest sources.

If you compile pnet with libjit (./configure --with-jit) then the performance of dotgnu is slightly better than mono for the nbody benchmark.

So, if you need generics, go for mono. Otherwise go with dotgnu.

PS: There is certain development on dotgnu git-sources -- I update it once in a while and can see the new commits every so often.

like image 28
Dmitri Avatar answered Nov 19 '22 15:11

Dmitri