--- layout: releasenotes title: Release Notes Mono 3.10.0 version: 3.10.0 releasedate: '2014-10-04' --- Mono 3.10.0 is a bugfix release with a few features. ## Highlights - Implemented System.IO.Compression.FileSystem. - Uri now implements the .NET 4.5 behavior. It can be reverted to the old behavior by setting enviromnent variable `MONO_URI_IRIPARSING` to `false` or by setting the System.Uri::s_IriParsing static field to false. The code to do this is shown below: ``` csharp FieldInfo iriParsingField = typeof (Uri).GetField ("s_IriParsing", BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic); if (iriParsingField != null) iriParsingField.SetValue (null, false); ``` ## Performance - Remove unnecessary locking from core metadata parsing functions. - Avoid cache thrashing of locals array when looping over enumerator. ## Known Issues The OSX packages have an invalid libgdiplus library that affects users of System.Drawing that requires it to work.
This specially affects Xamarin.Mac users that fit the following criteria: - Uses Xamarin.Mac Classic (Unified is unaffected). - Uses the subsets of System.Drawing that use libgdiplus.dylib internally
- System.Drawing.RectangleF, PointF, Colors are unaffected
- System.Drawing.Bitmap, and font for example are affected The symptom of the problem is your application failing with: "System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.Exception: GdiplusStartup" ## Bug fixes ### Runtime - Fix support for unaligned offsets in the store_membase_imm opcodes. Fixes #23267. - Fix the lookup of nested types which have a namespace. Fixes #21653. - Increase some opcode sizes. Fixes #23026. - Always pass the imt arg to interface calls in gsharedvt methods. Fixes #22624. - Store the epilog length in MonoArchEHJitInfo instead of encoding it in jinfo->unwind_desc, since the latter can overflow for methods with large epilogs. Fixes #22685. - Add a mono_thread_detach_if_exiting () public api function which can be called by embedding code to detach the runtime if the code is running from a pthread dtor. Fixes #21164. - Fix yet another native types problem. Fixes #22053. - Fix the leaking of mach ports introduced by 98bbf8512aec0fa01b4426583280f6d231d22187. Fixes #22068. - Add support for constrained calls with vtype return types in gsharedvt code. Fixes #22109. - Fix the PLATFORM_GNU check so it works with gnueabi etc. as well. Fixes #21520. - Don't make runtime invoke signatures generic. Fixes #21973. - Allow v8..v15 in unwind info on arm64. Fixes part of #21615. - Fix Process.PrivateMemorySize64 etc. on ios. Fixes #21882. - Fix enum->int casts in gsharedvt code. Fixes #21893. - Don't assert when loading a generic methodspec with 0 arity. Fixes #19097. - Avoid asserting when a cattr cannot be loaded. Fixes #21653. - Avoid making generic calls from gsharedvt methods normally, go through the rgctx infrastructure instead. Fixes #21677. ### Class Libraries - Fix Uri UserInfo parsing. Fixes 23246. - Update RequestMessage.RequestUri.AbsoluteUri after redirect. Fixes #22383. - Fixes XContainer attempt to create a XNode from a null value. Fixes #20151. - Changed XObject OnChanged and OnChanging to use Owner. When XObject.Owner is not a XElement XObject.Parent returns null and the owner would not be notified of changing and changed events. Fixes #18772. - Process XslLiteralElements with only child attributes as empty ones. Fixes #14751. - 'finally' protect ClientRuntimeChannel.Begin/EndProcess(). Fixes #22179. - WebClient.OpenWrite() must get the response on close. Fixes #10163. - Fix WebClient.UploadValuesTaskAsync(); Fixes #20359. - Improve System.Security.Claims. Fixes #22282. - Fixed serialization of XmlNode field with attribute XmlAnyElement. Fixes #3211. - Handle String::Format with escaped closing }. Fixes #22114 - Add a missing check to TypeBuilder.CreateType (). Fixes #22059. - Xml Serialization of Base class w/o a parameterless constructor. Removed validation code that did not allowed serialization of base classes without a parameterless constructor. Fixes #6913. - Fixed XmlSerializer to handle attribute XmlSchemePrivider.IsAny. XmlSerializer no longer outputs a root element with class name when the class has the attribute XmlSchemeProvider and IsAny is true. Fixes #11916 - Test that DeflateStream.Read does read an empty stream. Covers #19313. - Reseting all private key values to null is required because a new import may not overwrite existing values. Fixes #18482. - Handle quoted filename value. Fixes #21960. - Dispose XmlReader using correct value. Fixes #21771. ### C# Compiler - Don't use `1 naming for compiler generated second level and deeper nested types. Fixes #22893. - Extend missing type check to type lookups. Fixes #20933. - Fix copy and paste error in constraints checker. Fixes #22131. - Speed up nullable tokenizer. Fixes #20195. - Coalescing operator if the lhs of a null is a integer type that is larger than the integer type on the rhs. Fixes #22054. - Check for duplicate destructors. Fixes #21983. - Switch statement with constant block at first label. Fixes #21805. - Decimal constants modulo folding. Fixes #21743. - Update codegen for boolean loads. Fixes #21685. ### MSBuild - Workaround for issues with CreateItem task where metadata are not generated due to up-to-data inputs. Fixes #23022. - Add KeepDuplicates etc. to 4.0 as internal. Fixes #20961.