Mono 3.2.7 is out!

After 5 months in development, mono 3.2.7 is out. This is the work of 1235 commits by 65 contributors. A lot of very exciting new things come with this release.

The highlights are all the love our JIT received. A much improved ABCREM pass that now can remove a lot more bounds check on 64bits architectures. We added Alias Analysis and Loop Invariant Code Motion that allows even better code to be generated. Performance under some benchmarks was improved by more than 20%.

We have a new interpreter for LINQ expressions and dynamic that works under FullAOT.

Significantly improved reachability and flow analysis in C# compiler, which should catch a lot more bugs for you.

We have an initial port of mono for ARM hardfp ABI which is used now by many of the linux distributions.

Finally, our runtime uses native instructions for 64bits compare-and-swap on 32bits hardware when available. This makes some PLINQ benchmarks go 6x faster on 8 core machines.

For the full changelog and download go to:

New Mono Releases!

The Mono team has been busy working on Mono, and we have done seven releases since our last blog post.   Our latest Mono 3.0.12 contains a load of new features:

  • Support for MacOS X Mavericks
  • Portable Class Libraries runtime support: you can now run PCL code with Mono.
  • XBuild now supports Portable Class Libraries
  • mkbundle now uses IKVM.Reflection, allowing you to create bundles with any profile, without resorting to hacks
  • We fixed LLVM loadable module on OSX
  • New Entity Framework shipping with Mono
  • csharp REPL terse bug fixes.
  • Fine tuning of our internal uses of the class libraries for performance
  • System.WeakReference<T>, Volatile.Read/Write<T> and Interlocked.MemoryBarrier ().
  • SGen can now return memory to the OS
  • WCF has cookie support
  • Many performance optimizations on Marshal class
  • LINQ optimizations
  • Many fixes to our SGen concurrent collector

New Mono Builds, Release Notes.

Mono 3.0.4 is out!

We have just released Mono 3.0.4 to the world.

The release packs our SGen concurrent collector with a new strategy to deal with pinned objects called cementing (Mark discussed that last year).   We are very excited about this new feature.

MacOS users will be happy to know that we no longer install a /usr/bin/pkg-config, so it will not break their homebrew installations and it only contains the new Gtk+ stack that allows the new Xamarin Studio to run on OSX with 3.0.

Mono Mobile Profile

When Mono for iOS was launched, we designed a new lightweight API profile.  This lightweight profile was designed to deliver all of the major features that developers needed and remove things that did not make sense on iOS or caused binaries to bloat too much on an environment where everything would have to be included.

This mobile profile was based on Silverlight, because Silverlight also had those requirements: small downloads and a good set of features.    The major difference for a developer between the Silverlight profile and the standard desktop profile is that System.Configuration and Microsoft.Win32.Registry have been eradicated.

We took the Silverlight API and extended it to add things that Silverlight had dropped.  We called this the Mobile profile.

This mobile profile is the foundation for Mono on iOS, Android and other mobile efforts.

We are currently in the process of turning this mobile profile into a general purpose solution.   Instead of being based on the old Silverlight 4/Silverlight 5 profile, we are doing this based on the .NET 4.5 API, and removing the same bits we removed in the past: System.Configuration and the Registry.

Mono 3.0.3 is out!

We have released an update to Mono, version 3.0.3, it is mostly a bug fix release, but contains a few interesting goodies as well:

  • DTrace: Mono garbage collectors now feature multiple dtrace probes for users on MacOS and Solaris.
  • Many stability improvements and performance work on Mono’s Async support.

Garbage Collector

Sgen now has a concurrent GC that can significantly reduce max pauses. This is an experimental feature that is been continuously developed. Click here for more details.

Bug Fixes


Ongoing work on Mono

As a reminder, we have adopted a new development strategy for Mono.   We are no longer doing multi-year development efforts that we land all at once.   Instead we are doing incremental fixes and improvements in our master branch, and all experimental code is now done on branches that are only merged when the work is completed and stable

For more details see the Change in Policies post.