The Mono Project (mono/mono) (‘original mono’) has been an important part of the .NET ecosystem since it was launched in 2001. Microsoft became the steward of the Mono Project when it acquired Xamarin in 2016.
The last major release of the Mono Project was in July 2019, with minor patch releases since that time. The last patch release was February 2024.
We are happy to announce that the WineHQ organization will be taking over as the stewards of the Mono Project upstream at wine-mono / Mono · GitLab (winehq.org). Source code in existing mono/mono and other repos will remain available, although repos may be archived. Binaries will remain available for up to four years.
Microsoft maintains a modern fork of Mono runtime in the dotnet/runtime repo and has been progressively moving workloads to that fork. That work is now complete, and we recommend that active Mono users and maintainers of Mono-based app frameworks migrate to .NET which includes work from this fork.
We want to recognize that the Mono Project was the first .NET implementation on Android, iOS, Linux, and other operating systems. The Mono Project was a trailblazer for the .NET platform across many operating systems. It helped make cross-platform .NET a reality and enabled .NET in many new places and we appreciate the work of those who came before us.
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.
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.
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.
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