When Microsoft first created the .NET programming environment, along with C#, it made a point of offering the standard behind the language and environment to the public. Some would say this was done to rub Java’s nose in it. Others would say it was Microsoft learning from its errors. Miguel de Icaza would say it was a smart move, because he’s the fellow who decided to implement those specifications in Linux…
Miguel de Icaza is a polarising figure amongst licence jockeys like Richard Stallman, but there is no denying his ability to get things done. We caught up with Miguel and asked him about Mono, Gnome, and all of the various things in Linux he touches in his role as a Fellow at Novell and project lead for Mono.
What’s up with Mono? What are you working on now and what’s slated for the future?
Oh, we are working on various new goodies. Mono 2.6 is about to ship, and it includes some major cool features:
• LINQ to SQL in Mono
• Support for LLVM for code generation on server configurations
• Most of C# 4.0 is now supported
• The Dynamic Language Runtime is now part of Mono. This is an open source library that Microsoft released and that we are now consuming.
• New soft-debugging technology, originally developed for Mono on the iPhone
• An open source MSBuild implementation called xbuild.
• The Mono runtime finally has a full security infrastructure for running untrusted code side-by-side with trusted code (this was required by Moonlight)
• Our innovative SIMD support in Mono now works on AMD64 class architectures
• The first release of Mono. Tasklets, a continuation framework used mostly by game developers
A couple of recent major milestones are:
• Mono for the iPhone: the MonoTouch products, a major effort to simplify iPhone development and bring garbage collection, type safety and all of the features from .NET to iPhone developers.
• We have also just released a plug-in to Visual Studio that allows developers to move their applications from Windows to Linux, create RPM packages from Visual Studio and even use our SUSEStudio.com website to create full appliances from their software projects.
Unlike Microsoft’s LINQ to SQL that is limited to SQL server, our LINQ to SQL implementation exposes the same API, but depending on the connection string passed, it will generate SQL code for the appropriate database (the usual suspects: MySQL, PostgreSQL, SQL Server and so on).
We are also shipping a new debugger technology that brings the debugging experience for developers to the same levels that they expect from modern IDEs. We are quite proud of the work on this area. Now, this is only the stuff that we have prepared for Mono 2.6. We are currently hard at work for the 2.8 and 3.0 releases of Mono. Some of the major projects include:
• Completing C# 4.0 (in 2.6 we have most of it, but we are missing some of the dynamic support; with 2.8 we will complete it).
• A new garbage collector that will compact the heap (the sgen garbage collector). This addresses one of the most important limitations in Mono.
• Implementation of the Communications Foundation, although we do have a partial implementation today (enough to support Silverlight). We are hard at work to complete this framework.
• Work towards Silverlight 3 and 4.