Linux and the Inauguration

by Miguel de Icaza

Not only was the inauguration transmitted using Silverlight, but also on each window for everyone watching the inauguration from the following caption was at the bottom of every page:

Every viewer could see "Linux-compatible Silverlight Player".

Posted on 21 Jan 2009

Watching the Obama Official Inauguration on Linux with Moonlight.

by Miguel de Icaza

I just wanted to confirm that you can watch today's Barack Obama Official Inauguration video stream using Moonlight on Linux/x86 and Linux/x86-64 systems.

All you need to do is to go to the Moonlight Download page, install Moonlight and restart your browser. Then you can visit in a few hours and watch the event from Linux.

Microsoft worked late last night to get us access to the code that will be used during the inauguration so we could test it with Moonlight.

Thanks to: Joseph, Larry, Geoff, Rusty and specially Aaron who all worked tirelessly to implement and get everything tested tonight and ready to go on the Novell side. To Brian, Eric, Ben at Microsoft and Mio at IStreamPlanet to make sure that Linux users will be able to watch Obama's inauguration.

Ben Waggoner has posted an update on the Microsoft side..

Aaron's code will also be powering MacOS/PPC streaming.

Now everyone say at once: O-ba-ma! O-ba-ma! O-ba-ma!

Posted on 20 Jan 2009

Mono's New Code Generation Engine

by Miguel de Icaza

Three years ago, in November of 2005 we started a project to upgrade Mono's code generation engine as the engine started to age and it became increasingly difficult to improve code generation and extend the JIT engine in meaningful ways.

The new code generation engine is based on a linear intermediate representation as opposed to the tree-based intermediate representation that we had used up to Mono 2.0.

Switching the code generation engine is a pretty significant effort and we did not want to switch it shortly before we had to ship Mono 2.0, so we decided to ship 2.0 with the engine that had been in wide use.

Shortly after we branched Mono's tree for the 2.0 release Zoltan merged his work from the linear branch into the main tree.

We have now shipped all of this as part of Mono 2.2, you can get it here.

Some Benchmarks

Mono's new engine generates much better code than the version found in Mono 2.0.

Speed: The engine will mostly benefit computationally intensive code, usually between 10% and 30% performance increase, with some cases going up as high as being 50% faster.

Code size: the new engine generates slimmer code, typically 12% to 20% smaller code generated.

Check out some of the benchmark results.

Debugging the Transition

Although we had our test suite, and we regularly tested the code against most apps, we were still afraid that something might go wrong. The new code could miss-compile something, and it would be hard in a large project to pin point exactly what went wrong.

For example, the problem might not appear while compiling a small test program like `hello world', but could appear when running a web site under heavy load or when running MonoDevelop.

Zoltan came up with a very interesting solution: for a period of time Mono had two JIT engines built into it, the new and the old one. Here is where the clever trick comes in: an environment variable contained the number of methods that should be compiled with the new JIT engine. After the Nth method had been compiled, the engine would switch code generators.

This was used to bisect regressions and failures.

A couple of months after we had done the switch and both our unit tests and our system tests passed the old JIT engine was eliminated from Mono.


Using SIMD for accelerating certain floating point operations had been in the back of our minds for a while. We looked into implementing that in our old engine, but that turned out to be very difficult.

With the new engine, Rodrigo was able to put together a prototype in a weekend (the legend goes that Rodrigo's wife was busy that weekend).

This prototype was later turned into Mono.SIMD an API for accelerating vector operations.

Mono 2.2 is the first release to officially support and distribute it. To learn more about Mono.SIMD support, you can see this blog entry.

Full Generics Sharing

With this release, the generics code sharing engine has been completely debugged and is now enabled not only for code that lives in mscorlib, but for all generics code written by the user.

The Technical Details

We have provided A complete description of Mono's new engine design and the the various code generation stages.

Posted on 20 Jan 2009

More Mono-based games on the iPhone

by Miguel de Icaza

Update: as of September there are at least 258 games on the AppStore build with Unity3D according to this interview. And 5 out of the Top100 applications are Unity based.

Randy Edmonds pointed out in my previous post that FlashBang Studios's RaptorCopter is not the first or the only Unity3D/Mono-based game on the Apple AppStore.

I counted almost 40 apps on the AppStore based on Mono, from the thread here.

These are a few other games available today from the AppStore that are powered by Mono:

  • Downhill Bowling (5 stars), (screenshots and video).
  • Billiards.
  • SpacePig.
  • Age of Curling.
  • Dusktreaders.
  • X-Razer.
  • Tapball (video).
  • InvinciBall (video).
  • SlidePop.
  • FuguMaze.
  • Monkey Diving (video).
  • Ball-X (with the dash in the middle, or you wont find it).
  • FuguTilt.
  • Pizza Dash (you deliver pizzas in a car).
  • Debris (you do controlled demolitions).
  • Trash it!
  • Rotunda.
  • Asteroid Strike.
  • Crazy Snowboard (and 2.0).
  • Bubble Bang (video).
  • iStronaut Willy.
  • Bounce Pop.
  • Labyrinth 3D.
  • FuguBall.
  • SpaceRace (video).
  • iDrone.
  • Mars Explorer.

Word games:

  • Christmas spell.
  • Alpha Blocks: Brain Freeze.

Not really games, but cool hacks:

  • Moobox 3D, cute!
  • Widget Monkey.
  • Butterflies.
  • Dice 3D.
  • Night Divine.
  • Rainbow Day.
  • Zen of Snow and Zen of Snow 2.
  • Jingle Bells.
  • ArtiFISHal Life (3D Aquarium).
  • Leaves.
  • iFeathers.
  • Bobblehead Santa.


  • Cricket (from SpinFast).
  • Rock'em Blocks (video).
  • Pelagic Tones.

Posted on 07 Jan 2009

First Mono-game hits the Apple AppStore

by Miguel de Icaza

Blurst's Raptor Copter game built using Unity3D and Mono just hit the Apple AppStore.

From the announcement:

Raptor Copter has become our first Unity-made iPhone game to hit the App Store! We’re making it available for a limited-time price of $0.99. The game is a loose follow-up to Off-Road Velociraptor Safari. Instead of a jeep, you have a Chinook helicopter, but the basic game loop is the same: Capture raptors, drop them into factories, and teleport their sweet meats to the future.

You can get it for your iPod Touch or iPhone from this Raptor Copter iTunes Link.

Cute video:

Unity3D is using Mono's full static compilation to allow the game to run JIT-less and interpreter-less on the iPhone.

Posted on 06 Jan 2009

First Mono-based Wii Game on the Shelves

by Miguel de Icaza

Christian Lassmann from Weltenbauer Software Entwicklung GmbH, who I had the pleasure of meeting at the Unite Conference in Denmark in October, just wrote to tell me that "My Animal Center", a game built with Unity3D's Wii Edition and Mono hit the shelves on December 20th in Germany.

The game uses C# extensively. It was a joy to hear Christian explain how the various effects were created, I wish he blogged about it.

Cute trailer (text is in German):

The game is coming to a Wii near you in the US soon.

Posted on 06 Jan 2009

Mono goes Accessible!

by Miguel de Icaza

Brad Taylor has announced the first release of the Mono Accessibility stack:

UI Automation provides programmatic access to most user interface (UI) elements on the desktop, enabling assistive technology products such as screen readers to provide information about the UI to end users and to manipulate the UI by means other than standard input. UI Automation also allows automated test scripts to interact with the UI.

Mono's Accessibility Framework is an implementation of UI Automation. The same API that is available for WPF and the framework is used by Silverlight and Windows.Forms.

Client Code: The initial launch of Mono Accessibility adds accessibility support to applications built with Windows.Forms to be accessible.

Backend Code: The code has a bridge that talks to the existing ATK framework on Linux.

In the future the Mono Accessibility framework will be used in our own Moonlight 2.0.

Check the release notes, install from source or use OpenSUSE's 1-click install.

Posted on 05 Jan 2009

Mono Goes to Android

by Miguel de Icaza

Koushik Dutta got Mono running on the Android-based G1 phone.

He posted a video of the phone compiling "Hello World" (he points out that it is slower due to Mono running from the SD card):

He also posted some performance and memory usage comparisons between Dalvik, Mono and Java/ARM. Short story: Mono does great!

There are some caveats on running Mono on the G1, see the comments on this post. Still, these are encouraging news.

Posted on 05 Jan 2009

F-Spot Extensions

by Miguel de Icaza

Today I upgraded my F-Spot, I had not upgraded it since before the PDC.

It is now has a Picassa-like toolbar on the left:

And third-party extensions are starting to come out:

Posted on 19 Dec 2008

Mono brings Plastic's Windows.Forms UI to Linux and MacOS

by Miguel de Icaza

Pablo has sent me these two screencasts of their Plastic SCM product running on Linux and MacOS using Mono 2.0's Windows.Forms support:

Plastic on Linux, the GUI toolkit is Windows.Forms with custom widgets and a nice color scheme.

Plastic has a nice graphical diff tool:

A preview of Plastic on MacOS X.

Cute graphs

More screenshots here.

Plastic is one of the finalists for this year's Jolt Awards.

Posted on 18 Dec 2008

« Newer entries | Older entries »