Mono 3.2.7 is out
news.mono-project.com
news.mono-project.com
Fortunately, we have the Benchmarks Game and that shows Mono performing well [on synthetic benchmarks...] when compared to a variety of languages.
vs Java: http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
vs Go: http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
vs Python: http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
- Python 2.5+
- Python Win32 Extensions (for win32 process monitoring)
- GNU Make for Windows
- GNU DiffUtils for Windows
Download bencher.zip from:
https://alioth.debian.org/frs/?group_id=100815&release_id=18...
Having said that, I've had no performance issues running 3.2 on Linux in general.
If anyone is interested in lending a hand, we'd appreciate it since we'd like for the Mono tests remain in Round 9. Thanks!
[1] https://github.com/TechEmpower/FrameworkBenchmarks/issues/78...
I seem to remember that changed; and for a couple of years the benchmarks game did provide measurements for C# F# (.Net and Mono) and Java on MS Vista.
Then some other helpful person can pastebin the actual results.
Edit: Seems like many do not know about Nancy, check it out, some even say it's better than MVC. The good side is that it's 100% compatible with Mono because they run tests against it too so you can host your C# websites on Linux.
Github: https://github.com/NancyFx/Nancy
(as nifty as mvc can possibly be anyway)
https://github.com/NancyFx/Nancy
EDIT: It seems to be a .NET clone of node.js
When you use a language with real variable types, it's less of an issue... If you really want it, you could shoehorn generators and other db platforms into the hyena[1] package.
In general, I've found that using databases tend to be much more straight forward under node, and that using ORM tools are less necessary.
Using Type dynamic - http://msdn.microsoft.com/en-us/library/dd264736.aspx
.NET has always been able to do what Node does anyway. It has had HttpListener since v1.0...
You can do it, but why bother writing all those crud operations yourself??
Even with complicated SQL you can hand roll it and then tell the EF which class you're.returning and it'll handle all the boring `rs.GetInt(rs.GetOrdinal("ID"))` crap.
(Thus the name. Frank Sinatra's daughter is named Nancy Sinatra)
Nancy and Sinatra are typically used for smaller sites. They're based around routes, controllers, and views but they don't (for better or worse) lock you into an MVC project structure like ASP.Net MVC or Rails.
Web API, by comparison, is pretty much "just for implementing a web-based API" and not something you'd want to use for a user-facing web application that serves up HTML pages.
[1] - http://servicestack.net [2] - https://github.com/ServiceStack/ServiceStack
When I open the vsix file, all I get is a hexdump. I also tried installing it as an add-in, but it doesn't appear to accept vsix files.
The goal is to get past step one of these instructions: https://github.com/NancyFx/Nancy/wiki/Introduction
How to make this work, pretty please?
you can work around that issue if you make an empty asp.net project and then use nuget to install-package nancy.hosting.aspnet
at least i think so, i haven't been doing .net in a while
http://rubygems.org/gems/albacore/versions/1.0.0.rc.1 (for the command to install albacore), and
https://github.com/NancyFx/Nancy/wiki/Running-Nancy-on-your-...
This works on Fedora and probably other distributions as well, though this uses HTTP which might be less optimal than FastCGI with Fos. I got Fos to compile with Mono but it's not usable yet, it can't find IAppBuilder in my "console" application no matter what references or using directives I add. Nowin compiles cleanly but the example projects don't, so it'll take some effort to get it to work. Things are progressing, though. But I really can't recommend anyone use Mono for web development as it stands.
http://curtis.schlak.com/2014/02/04/setup-asp-net-mvc-4-on-m...
I'd say there are plenty of alternatives to OWIN (and the .Net stack) for *nix. That's probably why there's not much interest around Mono, too.
NoWin, Nancy, SignalR & Lego on the raspberry pi:
SO close...
Edit: An open source program must never depend on binaries in the build process where those binaries can't themselves be rebuilt from source. Again, I'm not a zealot but as a developer I see dependencies on arbitrary binaries as damage and try to work around them.
public SampleModule() { Get["/"] = _ => "Hello World!"; }
Get["/"] = _ => "Hello World!";
is actually of the form a = b;Where "a", i.e. "Get["/"]" is an array-like property (http://msdn.microsoft.com/en-us/library/2549tw02.aspx ) and the "b" value assigned to it is an anonymous function with one parameter, i.e.
_ => "Hello World!"
In Nancy these handlers are of the type Func<dynamic, dynamic> ( http://msdn.microsoft.com/en-us/library/bb549151(v=vs.110).a... ) The parameter could be given any legal name, but an underscore is a convention meaning "I am not using this param".[0] https://github.com/NancyFx/Nancy/wiki/Taking-a-look-at-the-D...
public SampleModule()
{
Get["/{id:int}"] = _ =>
{
int id = _.id;
return "Parameter ID is: " + id.ToString();
};
}To perhaps clarify a bit, here's what the Hello World example would look like if we added a second route that uses the lambda parameter, and a third route that does something else, and a fourth route that renders a view template.
public SampleModule() {
Get["/"] = _ => "Hello World!";
Get["/hello/{name}"] = p => ("Hello, " + p.name + "!");
Get["/something-complicated"] = _ => {
// complicated stuff happens here
return "OK... we're all done";
};
// A variety of template engines are supported
Get["/my-resume"] = _ => View["resume.cshtml"];
}My dev platform is Ubuntu so I downloaded MonoDevelop and load the GtkSharp example (or maybe it was just the skeleton project template). Hit compile, bunch of errors showed up. Apparently I don't have the GTK libraries. Googled a bit, it looks like I had to download gtk-dev, compile, and do a bunch of things before I can run a "Hello, World" GTK sharp app.
I wade through the net and the tutorials and documentations are either for older versions or just weren't there (for example, integrating with NuGet).
It's a bit sad because I'm sure there are tons of engineering effort went into Mono but it just doesn't feel polished enough.
It's open source but lately I felt that it's more of a teaser for Xamarin than anything else.
Just curious, I've never installed Mono, but my first thought would have been to look for a PPA. Are there none out there? Let someone else figure out the dependencies and configs for you.
Eclupse and Idea need Java to be installed for example. And I'd guess VS needs .NET to be installed.
Example: A java IDE that can't set up java automatically for me (OR detect/configure an existing install without my intervention) is disappointing.
Well, it might be disappointing, but that describes all of them. Idea and Eclipse don't automatically install Java.
So it's hardly unique to MonoDevelop.
If only more people thought like this then I wouldn't be looked at funny when calling my Emacs an IDE. Instead I have some 90% of PyCharm functionality (+ Org Mode), but I constantly hear that it doesn't count because "I had to configure all these plugins" and so on...
And last time I checked VS installed everything it needed to run by itself - it didn't even ask if I want it IIRC. Dunno about Eclipse.
Also keep in mind that VS only works in Windows, not as cross platform as these two. Installing for Single-Family-OS (Windows...) vs different OSes => different complexity.
As for java IDE's: it can't be rocket science to detect & use existing java installations in a good way, or even download & install them in the background (even with licensing issues).
See how Linux+BSD users install Oracle Java....
The latest one? The most common one? The one the IDE requires?
Surely you don't want to use an older one? Even if you deploy to an older target, if you can't do that from a newer one something is wrong. Worse case the IDE could just ask during installation.
If the IDE setup isn't made by monkeys, suerely it wouldn't rely on a hard-coded download url. They would serve it themselves or ask a web service on their end for the URL to the java installer. Sorry if I sound like a grumpy old man, but it's exactly this sort of thinkning that makes OSS platforms and IDE's so clumsy to work with.
The error is usually the idea of "this tool just tries to do X and doesn't care about Y", or sometimes phrased as "the tool does one thing, and does it well". While that is a noble idea, it should never be used as an excuse for a crappy UX.
I suggest trying to compile it all yourself instead of going for packages on Debian-derived systems.
Well, that's how it works on Linux. What else did you expect? That they'd bundle all the Gtk stuff statically?
Maybe the problem is GtkSharp that relies on native GTK, I don't know...
But in Java, I see that they somehow can get SWING to work (and render as GTK..?) without me downloading 3rd-party dependencies.
Read between the lines man.
The nix world never suffered from lack of decent languages, compilers, development tools, ecosystems and runtimes. The only benefit Mono gives nix users is to write software that's easy to run on Windows and that barely registers on most priority lists. It's been, IIRC, 6 years since I last wrote a "real" desktop app. I did it in C#, but Mono couldn't run it because it relied on Windows-only GUI components. Happily, it was never intended to be deployed on non-Windows environments and everyone was happy.
If I needed to write a desktop application (that's so 90's) that runs identically on both Windows and Linux, I'll just write it in Java.
Well, it sort of did. Gnome, for one, could have used a much better language to facilitate faster development and modularity.
The GObject stuff is archaic, and I was there for the Bonobo fiasco too.
the programs were coming out quickly and looking great then FUD.
A real shame, as Mono is great technology with good GTK bindings and integrated well with the GNOME system. I think having Mono as a first-class GNOME environment would have been interesting.
I've spent the past week using Monodevelop and F# to develop compiler tools under Fedora and have thoroughly enjoyed it. Not to mention F# is well supported within IDE, almost equal to VS.
git clone git://github.com/mono/mono.git
cd mono
./autogen.sh
make
sudo make install git clone git://github.com/mono/mono.git mono.git
cd mono.git
./autogen.sh --prefix=${HOME}/opt
make get-monolite-latest # Need mono to compile mono
make EXTERNAL_MCS="${PWD}/mcs/class/lib/monolite/gmcs.exe"
make install
export PKG_CONFIG_PATH=${HOME}/opt
I can now successfully compile and run a command-line hello world, but
a simple gtk-test (and winforms test) fail when attempting to run the
examples. This probably has someting to do with linking and assemblies,
but experimenting with PKG_CONFIG_PATH, GAC_PATH and MONO_PATH makes no
apparent difference... cat <<eof > hello.cs
using System;
public class HelloWorld {
static public void Main () { Console.WriteLine ("Hello Mono World!"); } }
eof
mcs hello.cs
mono hello.exe
> Hello Mono World!
cat<<eof > hello-gtk.cs
using Gtk; using System;
class HelloWorld {
static void Main () {
Application.Init();
Window w = new Window("Hello Mono World!");
w.Show();
Application.Run(); }}
eof
mcs hello-gtk.cs -pkg:gtk-sharp-2.0
mono hello-gtk.exe
> Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or
assembly 'gtk-sharp, (...)If Unity go another major version still using Mono 2.6, they seriously risk losing ground among developers making CPU/memory-intensive games. Or even those concerned about optimizing for mobile platforms.
Mono JIT compiler version 4.0.0 (master/c198a39 Pk feb 21 22:02:35 EET 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen mono -V
Mono JIT compiler version 3.4.0 (master/8f2d3ea Wed Feb 26 11:59:41 EST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgenHow is Mono's JIT performance compared to Microsoft's? Are they nearing parity?
http://www.codeproject.com/Articles/212856/Head-to-head-benc...
I did a few benchmarks here.
In recent experiences, .NET runtime is faster in most situations, but sometimes Mono can be faster than .NET. It all depends on what you are doing. In extreme cases, .NET is usually ahead. You also have to account for the JIT time. It's after the JIT that should matter.
mvc + mono website on linux success story - i haven't seen one.
On the bright side, I've heard good things coming out of ServiceStack. Apparently it shines in the backend web service department and works well with Mono. It's based on ASP.NET and since the requirements for my little project are fairly minimal, I think it's a bit overkill there. But it's still worth checking out for more demanding projects, IMHO.