24 hour race

by Miguel de Icaza

Another Mono-race, in 24 hours we are aiming to:

  • Support the iPad SDK from Apple (freshly baked and published).
  • Add MonoDevelop support for it.

Posted on 27 Jan 2010

Preordering the Apple Tablet

by Miguel de Icaza

Posted on 25 Jan 2010

MVP Award

by Miguel de Icaza

Thanks to everyone that participated in the campaign to nominate me for a C# MVP award, when I got back to Boston I found on my piles of email that I am now part of the program.

This is Pretty Sweet(tm). This will be a great opportunity to build more bridges with Windows developers and show them that there is an ECMA CLI life in the other side of the OS spectrum.

Looking forward to the group picture!

Posted on 11 Jan 2010

Mono at FOSDEM

by Miguel de Icaza

This year we will have a Mono Room at the FOSDEM Conference in Brussels. The FOSDEM conference is held on the weekend on February 6th and 7th.

Ruben and Stephane organized the room and the speakers for the it. has posted the finalized schedule for the Mono activities at FOSDEM on Sunday.

Here is the schedule, there are some pretty interesting talks:

09:00 - 09:15Opening (Ruben Vermeersch, Stéphane Delcroix)
09:15 - 10:00MonoDevelop (Lluis Sanchez Gual)
10:00 - 11:00The Ruby and .NET love child (Ivan Porto Carrero)
11:00 - 12:00Mono Edge (Miguel de Icaza)
Lunch Break
12:45 - 13:15The evolution of MonoTorrent (Alan McGovern)
13:15 - 13:45Image processing with Mono.Simd (Stéphane Delcroix)
13:45 - 14:15ParallelFx, bringing Mono applications in the multicore era (Jérémie Laval)
Coffee Break
14:30 - 15:30Building The Virtual Babel: Mono In Second Life (Jim Purbrick)
15:30 - 16:00Moonlight and you (Andreia Gaita)
16:00 - 16:30OSCTool - learning C# and Mono by doing (Jo Shields)
16:30 - 16:45Smuxi - IRC in a modern environment (Mirco Bauer)
16:45 - 17:00Closing (Ruben Vermeersch, Stéphane Delcroix)

Posted on 11 Jan 2010

Pixel Shaders for Moonlight

by Miguel de Icaza

David Reveman has just posted a fascinating patch that debuts the support of pixel shaders in Moonlight.

David's patch uses Gallium, and he says:

The current implementation uses gallium's softpipe driver but hooking up the llvm driver as well should be a minor task and give significantly better software performance.


My current approach is to focus on getting all these things working in software first. By using a OpenVG backend for cairo we can incrementally move to using gallium and hardware for all rendering.

Posted on 07 Jan 2010

Moonlight: Platform Abstraction Layer Lands

by Miguel de Icaza

Chris Toshok has landed the changes necessary to abstract Moonlight's engine from the platform.

The platform abstraction layer lives in moon/src/pal and the Gtk+ interface lives in moon/src/pal/gtk.

This is a necessary step to bring Moonlight to non-X11 powered GUI systems.

Posted on 06 Jan 2010

C# Support for Tuples

by Miguel de Icaza

More Mono proof of concept extensions to C#.

As part of the list of things I would like to see in C# is support for tuples in the language. They would show up in a few places, for example, to return multiple values from a function and assign the results to multiple values at once.

In recent versions of the framework there is a new datatype called Tuple, it is used to hold N values, the Tuple for N=2 looks like this:

	public class Tuple<T1, T2> {
		public Tuple (T1 v1, T2 v2);
		T1 Item1 { get; set; }
		T2 Item2 {get; set; }

The tuple patch extends the C# language to allow multiple variables to be assigned from any Tuple, like this:

	(user, password, host, port, path) = ParseUri (url);

The above would assign the four values to user, password, host, port and path from the call to ParseUri. ParseUri would be declared like this:

	Tuple<string, string, string, int, string> ParseUri (string url);

Future Work and Ideas

In addition to handling Tuples, I would like to extend this to support collections and IEnumerables as well, for example:

	(section, header) = my_array;

The above would store my_array [0] in section, and my_array [1] in header.

If the last element of a tuple is a collection, it could store the rest of the values from the collection or enumerable in the last element:

	(query, page, other_options) = Request.QueryString;

The above would store the first item in the QueryString into query, the second into page, and the rest into the other_options array.

Tuple creation syntax:I would like to add nicer support for creating Tuples as return values, it could just mirror the assignment syntax.

	ParseUri ()
		return (user, password, host, port, path);

Handling well-known types: In addition to Tuple, ICollections and IEnumerables, perhaps the compiler should know about older versions of Tuple like DictionaryEntry.

Using statements: Today the using statement is limited to a single resource, with multi-valued return types, it could handle multiple resources at once, like this:

	using (var (image, audio, badge) = iphoneApp.GetNotifications ()){
	    // use IDisposable image
	    // use IDisposable audio
	    // use trivial int badge

Posted on 23 Dec 2009

New Moonlight Covenant has been posted

by Miguel de Icaza

As I mentioned a few days ago, there is a new covenant form Microsoft for Moonlight, it has been posted.

Posted on 22 Dec 2009

Cena Linuxera en el DF, hoy

by Miguel de Icaza

Cena Linuxera/Monera hoy (Diciembre 22) en el bar/restaurante del Covadonga a las 7pm. Para todo p�blico (incluso talibanes).

Direcci�n: Puebla 121 cerca de el Metro Insurgentes.

Posted on 22 Dec 2009

C# String Interpolation

by Miguel de Icaza

We have discussed in the past adding support to C# to support string interpolation. I have cooked a patch that allows C# developers to embed expressions inside strings, like this:

	var a = 'Hello {name} how are you?';

Single quotes are used for strings that will have expressions interpolated between the braces. The above sample is equivalent to:

	var a = String.Format ("Hello {0} how are you?", name);

Currently the patch supports arbitrary expressions in the braces, it is not limited to referencing variables:

	var a = 'There are {list.Count} elements';

This notation can be abused, this shows a LINQ expression embedded in the string:

	var a = 'The {(from x in args where x.StartsWith ("a") select x).FirstOrDefault ()} arguments';

I am not familiar with what are the best practices for this sort of thing in Python, Ruby and other languages. Curious to find out.

Update: after the discussion on the comments the syntax was changed to use $" instead of the single quote to denote a string that will be interpolated. Now you will write:

	var a = $"There are {list.Count} elements";
	var greeting = $"Hello {name} how are you?";

The updated patch is here.

Posted on 20 Dec 2009

« Newer entries | Older entries »