The Mono project, which produces an open source implementation of the .NET runtime, has released version 2.8. The update brings full support for version 4.0 of the C# programming language, substantial improvements to the optional LLVM-based Mono backend, and a new garbage collection implementation that is more efficient.

Mono was originally created to accelerate Linux application development and enable Windows developers to bring some of their existing code and skills to the Linux platform. The focus of the project has expanded in recent years as Novell has explored ways to monetize the underlying technology. Mono is increasingly viewed as a compelling tool for supporting rich embedded scripting in applications and bringing C# to environments where it wouldn't otherwise run.

Mono is used in a number of well-known applications, including the Second Life client and the Unity game development suite. Novell also offers its own Mono-based commercial development tools for building native iPhone and Android applications with C#.

The Mono developers initially supplied a preview of C# 4.0 in Mono 2.6, but it is now feature-complete in 2.8 and has consequently graduated to fully-supported status. Mono's standard "mcs" C# compiler will now target 4.0 by default. Some noteworthy C# 4.0 features offered by Mono include dynamic binding and named arguments.

Mono 2.8 introduces a new generational garbage collector that is demonstrably more efficient. It hasn't been made the default yet, however, and must be activated with a special option. Detailed documentation that describes how the new garbage collector works can be found on the Mono project's website. There are also independent benchmarks available that demonstrate some of the performance characteristics.

Mono has gained several .NET libraries that were released by Microsoft under permissive open source licenses. These include the Dynamic Language Runtime and the Managed Extensibility Framework.

Another nice addition is x86 support for ahead-of-time (AOT) compilation. As we explained last year, Mono's AOT compilation will convert .NET intermediate code directly into native code at compile time. This allows developers to create static binaries and obviates the need to use JIT compilation at runtime. Mono supports this on several architectures like PowerPC and ARM for the benefit of mobile and embedded developers who are deploying on mobile handsets or gaming consoles. Adding support for the x86 architecture will make it easier for those developers to test the applications on their own development workstation.

Mono's optional LLVM backend got some significant improvements in this release. Lead Mono developer Miguel de Icaza says that it has reached production quality and has made Mono "finally suitable for High-Performance computing workloads."

Mono 2.8 packages are available for several different operating systems and Linux distributions. There is also a Mono 2.8 appliance in the SUSE Studio Gallery. For more details about Mono 2.8, you can refer to the official release notes.