Location>code7788 >text

Mono Today and Tomorrow: From Wine-mono to .NET 9

Popularity:540 ℃/2024-08-29 09:22:20

Mono website homepage[1] and MonoThe GitHub page posted an announcement today[2], Microsoft announced that it was handing over the Mono project to the WineHQ organization, the development team for Wine, a Linux-compatible Windows application framework.

Microsoft has been moving toward .NET open source since 2014.At the time, Microsoft announced that .NET Core would soon be open source[3]. NET had an open source program called Mono before that, however. The Mono project began in 2001 with a focus on creating a .NET development platform for Linux desktop applications. The first official release was in 2003, and since then the project has evolved to support .NET on multiple platforms and operating systems. This event marks a milestone in Microsoft's efforts to modernize Mono, the free and open source compatibility layer that includes the Mono engine. Wine is a free and open source compatibility layer that includes the Mono engine, which makes it possible to run some Windows applications on computers running Linux, FreeBSD or some other operating system. It is also the basis for the Proton software that Valve uses to allow Steam Deck users to play Windows games on Linux-powered handhelds. The Mono project has now been transferred to the Gitlab page on the WineHQ website:/wine-mono/mono[4]。

Mono is based on the .NET Framework, the larger version of .NET released as part of Windows. Over the years, both Mono and .NET can be used in different environments. NET domain, this has culminated in the release of .NET Core 3+ (which is the basis for all future work and innovation), and the .NET Framework is a long-maintenance release that will continue to be fixed and tweaked. But there won't be any major innovations.

In the Mono world, the runtime has evolved to support what we call "mobile profiles", which are a select subset of APIs that balance the needs of the user with the need to reduce the need for standalone runtime deployments. This was the basis for the Xamarin .NET effort, as well as the recent WebAssembly work.

The different scenarios for using .NET and the environments in which they are used split the set of APIs that developers must use. There is no easy way for developers to publish library binaries that work on all platforms.

The desire to create binary libraries that work in all different environments was the driving force behind the creation of the .NET standard - a common interface to an API that works on all different versions of .NET, whether it's a small device, a mobile system, or a large server. The approach we've taken here is to come up with a set of APIs that work equally well on all platforms. but that still means we have to maintain different implementations of the library.

NET 5, released in 2020, completed the unification of the .NET Framework, Mono, and .NET Core, and the unification of the entire ecosystem is now continuing, an event that marks the completion of the unification of CoreCLR and Mono at the runtime level, with the upper level libraries using the same set of APIs. unifying the implementation of the class libraries, while providing users with two Runtime options. At the higher level, there is a high-throughput, high-performance runtime in CoreCLR and a lightweight (but not as fast) Mono runtime. Each runtime has been tuned for the workloads they are most commonly used for: CoreCLR for server and desktop applications; Mono for mobile and lightweight applications such as WebAssembly. can execute C# or F# code on all the platforms we support. On some platforms, users will be able to choose which runtime they want to use, while on others there will only be one runtime available. For example, for desktop applications on Windows, only the CoreCLR runtime is available, and for iOS, only the Mono runtime is available.

Next month .NET 9 will be released in an RC version, which will be released at .NET Conf 2024 at the end of the year. The areas we are most focused on are cloud native and smart application development. Now that .NET is installable in parallel and can be upgraded as often as users need it, we have a once-in-a-lifetime opportunity to evolve the language and runtime together, and you can already see some of it.


RELATED:

  • [1] Mono official homepage:/
  • [2] The GitHub page posted an announcement today:/mono/mono/issues/21796
  • [3] At that time, Microsoft announced that .NET Core would soon be open source:/dotnet/net-core-is-open-source/
  • [4] WineHQ official Gitlab page:/wine-mono/mono