Mono 4.0 released, partially based on .NET Core

aidancheddar

Active Member
http://www.mono-project.com/docs/about-mono/releases/4.0.0/
Highlights
  • Adoption of Microsoft’s open source code
  • C# 6.0
  • Floating point optimizations
  • We dropped support for the 2.0, 3.5 and 4.0 assemblies
  • Updated IKVM
  • Lighter Debugger overhead
  • Basic PowerPC64 LE support
Dropped Support for Old Frameworks
Reference Assemblies
We no longer build the reference assemblies for the .NET 2.0, .NET 3.5 or .NET 4.0 APIs, we now ship binaries of the reference assemblies (API contracts, without any actual executable code in them).

Mono will now only build the .NET 4.5 assemblies as well as the mobile-based profiles.

Note: You can still run assemblies compiled for earlier .NET profiles on Mono, there’s no need to recompile them (they’ll just run on the .NET 4.5 assemblies instead).
Microsoft Source Code Adoption
This is the first release of Mono that replaces various components of Mono with code that was released by Microsoft under the MIT license in one of three places:

  • Microsoft’s ReferenceSource drop
  • Microsoft’s CoreFX
  • Microsoft’s CoreCLR
While Microsoft is working towards .NET Core: a redistributable and re-imagined version of .NET, the project remains a work in progress. Mono at this point continues to provide an API that tracks the .NET desktop/server version.

This means that most of the code that we have integrated comes from the ReferenceSource drop. In the future, we will deliver a “Mono Core” along the same lines of .NET Core to allow the use of the Mono runtime with the new library distribution system that is being developed with CoreFX.

In this release, we have ported components that were either incomplete or buggy in Mono and were relatively easy to port to Mono. There is much more to be done in this area. If you are interested in tracking those efforts, check the project status:

https://trello.com/b/vRPTMfdz/net-framework-integration-into-mono

Mono ships now with a subset of the referencesource that have been adjusted to work with Mono’s class libraries or have been updated to be cross platform.

Decimal
We have replaced Mono’s System.Decimal implementation with Microsoft’s version. This fixed a couple of formatting bugs. While Mono’s code did not have any major bugs, Microsoft’s implementation is more efficient and is actively maintained. Fixing bugs in System.Decimal was always difficult.

Assorted Microsoft Classes Imported
These are some highlights of code imported from Microsoft (smaller bits like attributes, enumerations, event arguments, exceptions or other simple bits are not shown):

The following namespaces have been entirely, or almost entirely replaced with ReferenceSource code:

  • System.Collections
  • System.Collections.Concurrent
  • System.Collections.Generic
  • System.Collections.Specialized
  • System.ComponentModel
  • System.ComponentModel.Design
  • System.Diagnostic.Contracts
  • System.Linq
  • System.Linq.Parallel
  • System.Text.RegularExpressions
  • System.Runtime.CompilerServices
  • System.Threading.Tasks
Partial changes:

  • System:
    • ArraySegment
    • BitConverter
    • Boolean, Byte, Char, Decimal, Int16, Int32, Int64, SByte, UInt16, UInt32, UInt64,
    • Convert
    • DateTime, Decimal
    • Guid
    • Lazy
    • Random
    • TimeSpan
    • Version
  • System.Collections.Generic
    • HashSet
    • Mostly replaced
  • System.Diagnostics.Contracts
  • System.Globalization
    • Entire calendar stack
    • DaylightTime
    • TextInfo (replaces text categorization tables, replaces it with .NET which is half the size)
  • System.IO
    • BufferedStream
    • Stream
    • MemoryStream
    • StreamReader, StreamWriter, StringReader, StringWriter, TextReader, TextWriter
  • System.Linq.Expressions
    • DynamicExpression, ExpressionVisitor
  • System.Net
    • Cookie, CookieCollection, CookieContainer,
    • FtpWebRequest
    • WebClient
  • System.Text
    • Bring the non-code page encoders
  • System.Threading (about 60% replaced)
Also the System.Numerics has been updated to use ReferenceSource (it used an older Microsoft open sourced version of the library in the past)
As a side note, being based on .NET Core FX and CLR, this also includes full compatibility and support for Visual Basic .NET.
 
Last edited:
Seems good news, but why no longer build reference assiembles, how will allow old program compatibility...
 
Back
Top