Mono is een opensource implementatie van het .NET Framework. Door gebruik te maken van Mono kunnen ontwikkelaars crossplatform applicaties schrijven die niet alleen op Windows-systemen zullen werken, maar ook op Mac OS X, Linux en Unix. De software bevat onder andere een C#-compiler, een .NET compatible runtime en twee verschillende sets api's: een set die compatibiliteit met Microsofts .NET Framework verzorgt (inclusief ondersteuning voor ASP.NET, ADO.NET en een aantal andere componenten) en een set die allerlei Linux- en Unix-specifieke functies aanbiedt. De ontwikkelaars hebben versie 1.2.5 uitgebracht met de volgende lijst van aanpassingen:
Mono 1.2.5 is an update to Mono 1.2.4 in the Mono 1.2 series, it is a bug fix release for all the supported components, but also includes updates on the 2.0 stack.
Dynamic Language Runtime
- This release fixes various issues that were exposed by IronPython 2.0 preview release and the Dynamic Language Runtime from Microsoft. They are both functional on this release.
- Scott Petterson and Marek Safar implemented the following C# 3.0 features:
- Variable type inference (the "var" keyword).
- Anonymous types.
- Array type inference.
- Object initialization.
- Collection initialization.
- Automatic properties.
- Marek Safar continued work on the LINQ grammar support and the underlying System.Core assembly support for it.
- The C# 3.0 support is enabled by passing the -langversion:linq option to the compiler. In addition to the above the C# 3.0 compiler also supports: extension methods, lambdas and anonymous method generic type inference.
- AOT now provides some support for 2.0 assemblies (although generic calls are still not pre-compiled) [Zoltan].
- Devirtualization optimization for sealed classes and methods, improving IronPython 2.0 pystone performance by 4%. Other programs can expect similar improvement [Rodrigo].
- Invocation speed of non-multicast delegate methods has been increased by calling directly into the delegate, this improves IronPython 2.0 (pystone) performance by 25% [Zoltan Varga].
- Math.Min and Math.Max are now inlined for signed integers and String.OrdinalCompare has been tuned to use these, which results in a 2-3% performance increase in running PyStone with IronPython.
- Massi and Paolo implemented a mechanism that reduces virtual table sizes for interface method invocations. The most visible change is in significant memory reduction for applications loading many interfaces (this happens for many 2.0 apps because of the many additional interfaces arrays implement).
- Optimized double to int conversions using SSE2 on x86 [Paolo Molaro].
- Implemented proper caching of generic methods (provides a very large speedup for virtual generic method invocations) [Paolo Molaro].
- It is now possible to force Mono to use a single CPU by using the MONO_NO_SMP flag.
- Rodrigo Kumpera has added an IL verifier to Mono. IL verifiers are not very useful for applications that run at full-trust level (their only use is to help in compiler development and sanity checking). But we are now working towards supporting Silverlight in Mono which needs to provide limitations on what code can do, and cope with malicious code.
- HttpWebRequest can now be used with X.509 client certificates (only possible in the 2.0 profile) [Sebastien]
- Added support X.509 Client Certificate Chains for SSL/TLS [Roy Versteeg]
- Fixed SSL/TLS not to require exportable private keys for client certificates [Roy Versteeg]
- Implemented import and export of DSA keys CryptoAPI-compatible BLOB (2.0) [Randolph Chung]
- Added SafeBag handling to Mono.Security's PKCS#12 [Jay Miller]
- Completed support for RegionInfo.
- Dictionary: Optimize and add implementation notes. Use a "mini-heap" to store the linked lists instead of the regular heap. Split arrays of structs into separate arrays to make the GC's life simpler (see bug 81879 for details). Make class serialization compatible with MS.NET.
- Environment.GetFolderPath: Now checks for the existance of the XDG_DESKTOP_DIR, XDG_MUSIC_DIR and XDG_PICTURES_DIR environment variables when trying to find the requested path.
- LocalFileSettingsProvider implementation is contributed [Noriaki Okimoto]. With this code, ApplicationSettingsBase now works like .NET (per-user settings are created in the user's (local) application data directory.
- Fresh implementation of TimeZoneInfo [Stephane Delcroix].
- System.Data.SqlClient: 99% of API's is now compatible with MS.NET 2.0 profile [Nagappan]
- Implemented SqlBulkCopy in SqlClient. With this the data can be imported in bulk from client to MS-SQL server [Nagappan].
System.Drawing / Libgdiplus
- New 2.0 controls:
- MaskedTextBox implementation [Rolf Bjarne].
- BindingNavigator [Alan, Olivier]
- 2.0 version of many controls are now complete.
- AutoSize is now supported [Jonathan]
- ToolStripPainter, ToolStripSystemRenderer [Jonathan Pobst]
- Roughly 150 submitted bugs were resolved.
- Libgdiplus has been updated to use Cairo 1.4.6 [Sebastien]
- Libgdiplus header, types and enums names are now much closer to MS GDI+. This should make it easier to use from C/C++ even if this was not the primary goal. [Sebastien, Yves Bastide]
- Added support for 2bpp PNG and fixes for 4bpp PNG image palettes [Sebastien]
- Added support for interlaced GIF bitmaps [Sebastien]
- Added support for ColorMatrixFlag and Gray ColorMatrix in ImageAttributes [Sebastien]
- Implemented GdipDrawImagePointsRect[I] functions [Sebastien]
- Multiple printing fixes (e.g. text size/position) [Vladimir Dimitrov, Sebastien]
- The Mono Cairo API has been updated (Alp Toker), it will now expose Cairo 1.2 API entry points. Application code should call CairoAPI.Version to obtain the version and determine if the needed features are available.
- Added support for late binding in vbnc (Option Strict Off and Option Explicit Off) [Rolf Bjarne].
- Several bug fixes in vbnc and vbruntime [Rolf Bjarne].
- Better error reporting (it's now possible to get line numbers in stack traces) [Rolf Bjarne].