Mono Project Changelog

New in version 4.0

July 14th, 2015
  • 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

New in version 3.12.1 (March 12th, 2015)

  • Patch to address SKIP TLS vulnerability
  • Patch to address FREAK vulnerability
  • Removal of SSLv2

New in version 3.12.0 (January 16th, 2015)

  • Highlights:
  • Major performance and memory consumption improvements on SGen.
  • Improve the heuristic of the ThreadPool to maximize efficiency and minimize the number of Threads
  • Experimental preview on new Windows installer
  • Garbage Collector:
  • Reorganized how major heap blocks are manipulated for increased efficiency of the major collection.
  • Reduced memory consumption by better sizing of allocation buckets.
  • Switched to a simpler heuristics for major heap sizing that is more stable and avoid unexpected spikes.
  • Removed the parallel collector, it was an experimental feature that did not provide an effective speedup. It will be brought back in the future with a functioning design.
  • Removed the fixed heap configuration, it was an experimental feature that did not deliver enough of a performance improvement. Removed for the additional complexity.
  • Canaries are now supported for the nursery. Canaries is a lightweight debugging tool for detecting memory corruption. Enable it with the new “nursery-canaries” option in the MONO_GC_DEBUG environment variable.
  • Threadpool:
  • Switched to adaptative hill climbing for sizing the pool. This fixes the cases where the old algorithm would cause thrashing by spinning too many threads.
  • The supervisor thread now goes into deep sleep when no new jobs are submitted for a while. This should save power on targets running on batteries.
  • Runtime:
  • Implement the new suspend machinery on Windows, amd64 and arm. The new machinery is known to be more reliable and results in significantly less hangs when using advanced threading features of the platform.
  • The minimum version support of Windows is now WinXP SP2, it was Windows 2000 before. (Wait what?)
  • Tooling:
  • Debugger support for 64bits Windows.
  • Multiple fixes in the profiler to make statistical sampling reliable and functional on unix targets without kernel assisted sampling.
  • Performance:
  • X86 code now generate pushless code. This is faster on modern cpus and produces smaller unwind information.
  • Reworked internal runtime locking to do less work under hot locks and do more optimistic metadata loading.
  • Class Libraries:
  • OS X now uses an experimental FileSystemWatcher that relies on kqueue. It works and doesn’t require polling.
  • Packaging:
  • New experimental Windows installer available. It’s a technical preview so any feedback is welcome.
  • Known Issues:
  • The new OS X kqueue FileSystemWatcher will consume all file descriptors when watching very large directories.
  • Canaries might not work under 64bits and produce false reports in some pinning corner cases.
  • Bug fixes:
  • Runtime bug fixes:
  • Avoid asserts on shutdown when the appdomain unload callbacks are called on the debugger thread during shutdown. Fixes #24342.
  • Fix the calculation of the epilog size for EH info. Fixes #24577.
  • Fix a class initialization race which happens if a class initializer initializes a got slot before it finishes running. Fixes #23242.
  • Fix OP_LOCALLOC on arm so it correctly adjusts sp with the param area size even if the size is large. Fixes #24221.
  • Disable the extension of i8/i16 arguments to i32 on arm64, since the ios calling convention passes them differently than i32. Fixes #22800.
  • Use NULLIFY_INS () to nullify instructions and use MONO_INST_NEW to create phi node instructions to avoid asserts in the spill pass. Fixes #24006.
  • Rewrite the way direct calls are made between llvm methods. Previously all calls were made to plt entries and the plt entry symbols were aliased to point to the corresponding method if the method was directly callable using the .set assembler directive. This doesn’t seem to work with newer LLVM/CLANG versions, so do this completely on the LLVM side using Value::replaceAllUsesWith (). Fixes #23976.
  • Make process handles non-shared. Fixes #23423.
  • Fix the return of vtypes containing a single fp member from pinvoke methods on OS X/x86. Fixes #23813.
  • Fix an SRE assert. Fixes #19039.
  • Implement 5dbf97e66057f8626c53fcea30f1988d6627e5a2 for calls made from NEWOBJ too. Fixes #23557.
  • Make each CASTCLASS_CACHE patch unique by generating a unique identifier from the method index and an per-method counter. Fixes #23478.
  • Disallow generic classes with explicit layout. Fixes #23438.
  • Add an option to make debugger invokes virtual. Part of the fix for #23385.
  • Allow renaming of threadpool threads. Fixes #23206.
  • Fix the unregistration of our exception handler on Windows. Fixes #23221.
  • Make calls from gshared to gsharedvt sharable methods indirect since otherwise at runtime we might find an instantiation and we cannot patch the call, leading to performance problems. Fixes #23021.
  • Allow the SIZEOF opcode in gsharedvt code if it doesn’t reference a gsharedvt type. Fixes #22711.
  • Fix mono_marshal_free_ccw (). Fixes #22414.
  • Class Libraries bug fixes:
  • Fixes DbEnumerator current property to clone read data. Fixes #24452
  • Allow sending of text data longer than 4000 characters by using a different column type. Fixes #21172.
  • Implement MonoGenericClass:GetCustomAttributes () for created types. Fixes #23769.
  • Improved BlockingCollection.AddAny. Fixes #22775.
  • Implement KnownTypes for DataContractJsonSerializer. Fixes #23058
  • HttpQSCollection.ToString now url encodes values. Fixes 22557.
  • Call SetupRequestAsync only after ContentType changes. Fixes 19529.
  • Notify parent task when child task uses NotOnFaulted. Fixes #23594
  • Use TZ transitions when AdjustementRules are ignored. Fixes 23170.
  • Timespan ticks formatting rewrite. Fixes #23376
  • Improved Json deserialization of floating-point numbers. When DataContractJsonSerializer was created from type object, deserialization of floating.point numbers was not possible. Fixes 21583.
  • Test Json deserialization of a floating-point number as object. Covers 21583.
  • Rss20ItemFormatter.ReadFrom now sets Id when guid is PermaLink. Fixes 23262.
  • fix bug #23318 - XComment.ToString() accepts “invalid” values.
  • Uri made from UNIX path and RelativeOrAbsolute is now relative. Fixes 22954.
  • UriParseComponents no longer decodes ‘@’ in UserInfo. Fixes 23246.
  • Update en-NZ designators. Fixes #22212
  • Update to my last fix for bug #22129.
  • Copy out/ref parameters on async call; bug #22129.
  • If not specified assume that array items are nullable. Fixes #19012.
  • Added optional serialization based on ShouldSerialize{V}. SerializationCodeGenerator and XmlSerializationWriterInterpreter will no longer serialize an attribute named {V} if its object has a method named ShouldSerialize{V}() that returns false. {V}Specified now is also checked to be true before serializating the attribute even if it is a property that is not settable. Fixes #1852.
  • GMT DateTimeOffset is now properly parsed. Fixes #22851. GMT date formats set useutc to true, so now useutc is checked to init DateTimeOffset with a zero offset.
  • Improved CalendricalCalculations fixed_from_dmy methods. Fixes #21930. In some cases fixed_from_dmy is used with the month parameter greater than the number of months of that year. Year is now incremented until month parameter is valid.
  • Enumerate all subdirectories including the first one. Fixes #22857
  • Encode ContentDisposition name. Fixes #18422
  • When needed serialized objects are now implicitly converted. Fixes #20403.
  • Fix ClientWebSocket.ReceiveAsync() with small buffer; bug #22704.
  • Tokenize dash only in range values. Fixes #22764
  • Added time format with only offset. Fixes #22558.
  • fix bug #6512 (by Mikkel Kruse Johnsen) - don’t deserialize GET parameters.
  • Added support for UriComponents.SerializationInfoString. Fixes #21571.
  • Unify handling of default ctor and zero. Fixes #22591
  • Make SendAsync state free to handle recursive calls. Fixes #22724
  • Actually fix #22179 to allow concurrent requests.
  • DateTime.Parse now handles unlimited number of fractional digits. This change was made because .NET can parse ISO8601 format with an unlimited number of fractional digits. Fixes #22417.
  • Added test ISO8601FractionalDigits. Covers #22417.
  • Delay reflection hit to actual execution point. Workarounds #22522
  • Update RequestMessage.RequestUri.AbsoluteUri after redirect. Fixes #22383
  • Catch exceptions thrown by SerialPortStream.Dispose () when called from the finalizer. Fixes #15514
  • KeyPairPersistence now tries to fix folder permissions. An exception is no longer thrown if the folder permissions can be fixed. Fixes bug 19274.
  • C# Compiler bug fixes:
  • A pointer-type may be used as the type of a volatile field. Fixes #23770
  • Correctly identify constant switch section when value match is not section start. Fixes #23475
  • Check for true/false user operators on unwrapped nullable type. Fixes #23199
  • More tweaks to conditional tokenizer. Fixes #23319
  • Populate inherited constraints member cache from types not only base types. Fixes #23017
  • Fix removing incomplete generic types from eval cache. Fixes #22393
  • Parsing of ternary expressions whose then condition is a lambda. Fixes #22523
  • MSBuild bug fixes:
  • Use ToolPath when building ToolTask execution path. Fixes #22981

New in version 3.8.0 (September 28th, 2014)

  • Highlights:
  • Major performance and scalability improvements across the the whole runtime.
  • Finished the Windows 64 port.
  • Debugger wire protocol optimized for usb connections.
  • Debugger:
  • Updated wire protocol better handles high latency connections such as those found when doing USB debugging.
  • Client library now aggressively caches information and batches requests. Under one test scenario single stepping packets transmitted dropped from 2233 to only 16, with the latency going from seconds to 20 milliseconds.
  • Performance:
  • The JIT now better handles long remainders by powers of two, generating significantly better code.
  • Over 10x faster code is generated for delegates that are only invoked once. C# features such as async and LINQ produce a lot of those delegates, so this improvement will impact everyone.
  • Improved alias analysis can now handle second order aliases and eliminate null checks.
  • The runtime now has a concurrently readable hashtable that can makes reflection heavy workloads significantly faster and more scalable.
  • Garbage Collection:
  • Optimized one of the core data structures of the garbage collector; should result in 5-10% reduction in collection times.
  • Bug fixes:
  • Runtime:
  • Fix the leaking of mach ports introduced by 98bbf8512aec0fa01b4426583280f6d231d22187. Fixes #22068
  • Fix Process.PrivateMemorySize64 etc. on ios. Fixes #21882
  • Fix enum->int casts in gsharedvt code. Fixes #21893
  • Avoid making generic calls from gsharedvt methods normally, go through the rgctx infrastructure instead. Fixes #21677
  • Fix another native-types problem. Hopefully fixes #21670 and #21636
  • Use alias information to eliminate explicit null checks. Fixes #21645
  • Initialize fields in MonoField:GetFieldOffset () if needed. Fixes part of #21604
  • Properly handle rethrow outside of catch blocks. Fixes #20412
  • Disable runtime unit tests on linux, because it cannot be linked due to circular dependencies between libraries. Fixes #21520
  • When parsing a method header, ensure we pass any available generic context. Fixes #21388
  • Added new mono_domain_set_config function; used to fix ConfigurationErrorsException in #10468
  • Only apply the maverick stack size hack to the main thread. Fixes #10096
  • Don’t hardcode the temp dir to /tmp, use g_get_tmp_dir instead. Fixes #20894
  • Explicit thread GC data around instead of relying on TLS storage. Fixes #20360
  • Make WaitForPendingFinalizers () really wait for the finalizers added by a previous GC. Fixes #20503
  • Fix the marshal7.cs test, longs can be aligned to 4 bytes on 32 bit linux, and the runtime no longer aligns structure sizes to 8 bytes. Fixes #20788
  • Fix the popping of LMF frames during unwinding. Fixes #20616
  • Fix the marshalling of ByValTStr types which have a size specified. Fixes #20674
  • Fix the decoding of MonoJitInfo. Fixes #16439
  • Make it possible to create views to magic zero size files such as /dev/zero. Fixes #19460
  • Free static bound delegate wrappers of dynamic methods. Fixes #19058
  • Don’t perform double accounting of offset for named memory segments. Fixes #20591
  • Avoid joining attached threads. Fixes #19343
  • Fix support for custom marshallers defined in other assemblies. Fixes #20020
  • Fix a jit assertion on a class which contains an empty struct as a static field. Fixes #20349
  • Applied patch from Kyle Edwards kyleedwardsny@gmail.com. Fix isinf () check with clang. Fixes #20244
  • Fix constrained type unwrap for enum types. Fixes #18371
  • Class Libraries:
  • Handle quoted filename value. Fixes #21960
  • Correctly handle partial chunk sizes. Fixes #20583
  • Tweak Dictionary initial capacity to be more conservative. Fixes #21375
  • Handle closed-over-null delegates created with IL when using InvokeDynamic. Fixes #21196
  • Fix a race in a Task test. Fixes #20921
  • Contract the values array when decoding an array with a negative number and a trailer that evals to zero. Fixes #20456
  • Fixes issue with expression columns and IsNull. Fixes #20925
  • Array qsort without head allocation. Fixes #20922
  • Enum::TryParse ignores leading whitespaces. Fixes #20870
  • Fix disposing of DelegatingHandler. Fixes #20818
  • Fix digest authentication (bug #18799)
  • Only recycle ServicePoints from the idle timer (fixes #19823)
  • Changed ConcurrentDictionary.Contains(KeyValuePair) to also compare value. Fixes #16990
  • Add System.ServiceModel.Security assembly. Fixes #20108
  • Removed NET_2_1 conditional blocks from FileInfo. Fixes #19862
  • C# Compiler:
  • Update codegen for boolean loads. Fixes #21685
  • Effective base class can include inherited types. Fixes #21390
  • Handle duplicate resume point registration. Fixes #21387
  • Arguments can be empty when reporting missing params argument. Fixes #21215
  • Flow analysis of moved arguments. Fixes #20983
  • Run new initializer await checks only in async context. Fixes #20614[system.data] Parse numeric expressions using invariant culture. Fixes #20582
  • Reachability analysis should ignore local variables declarations. Fixes #20603
  • Check for missing dependencies of container types. Fixes #20382
  • Resolve event expression when testing left side expression. Fixes #20493
  • Flow analysis of binary expressions not using logical operators. Fixes #20515
  • MSBuild:
  • Add 4.5.1 framework. Fixes #20827
  • Parsing conditions with property references. Fixes #20634
  • Implements property functions using constructor syntax. Fixes #12999
  • Mono Debugger:
  • Avoid clearning event requests if they reference an assembly which is unloaded. Instead, remove the assembly reference from the event request so it stays active. Fixes #9924.

New in version 3.6.0 (August 27th, 2014)

  • Highlights:
  • Runtime performance counters have been integrated into the profiler allowing the performance counter information to be surfaced to profiling tools and in particular Xamarin’s upcoming profiler.
  • The profiler now produces backtraces for statistical mode. The profiler’s tracing mode now works on ARM.
  • We now distribute nuget on mac.
  • Debugger:
  • The debugger now support line and column ranges. pdb2mdb supports it. Note: the rest of our toolchain still needs to be updated.
  • The debugger now supports changing the current line in the top frame.
  • Lots of bugfixes and performance improvements.
  • The debugger now support reading simple properties without calling their getter, this is done by having a lightweight IL interpreter for small pieces of code. This allows more properties to be inspected while the process is completely stopped and without having to temporarily resume execution of the target to execute the property code.
  • Added buffered response mode to improve network efficiency on high latency links such as USB.
  • Garbage Collection:
  • The GC bridge got a lot of performance work. There are now two new modes that can significantly improve some workloads.
  • Class libraries:
  • Multiple http stack improvements: some leaks in the stack have been fixed, as well as solving some long-standing bugs involving asynchronous operations and proxies. We have introduced a more comprehensive test harness to ensure that those bugs do not surface again.
  • System.IO.Compression is now implemented
  • System.Security.Claims is now implemented. It resides in the System assembly (existed before in the Identity stack, but now we track the new home from the .NET 4.5 API).
  • Performance:
  • Reworked locking to drop a hot lock in method lookup.
  • Use fine grained locking instead of a big hot lock.
  • Better hashing of some runtime internal items to avoid some corner-case slowdowns with generics.
  • Profiler:
  • The profiler is now able to produces backtraces in statistical mode.
  • Added periodical flushing that should help interactive users. This means that the profiling will send data over the profiling even if the application is not currently sending data (this is there to support the upcoming new profiler UI).
  • It now collects and reports performance counter information. See mprof-report’s man page.
  • Misc:
  • Fixed the handling of the volatile. CIL prefix.
  • We now distribute IKVM’s ikdasm tool. This is a reliable disassembler that does not have the limitation of monodis of requiring a complete set of assemblies that are compatible to disassemble. This will disassemble even files that do not have their dependencies available.
  • Optimized EqualityComparer for more types.
  • Mono.Unix.Native.Syscall.getxattr() can now return Errno.ENOATTR on OS X.
  • Our msbuild implementation can now build Project K and Roslyn
  • Optimized EqualityComparer for more types.
  • Bug fixes:
  • C# Compiler:
  • [mcs] Flow analysis of nested binary expressions inside anonymous methods was missing on left/right reset. Fixes #18417
  • [mcs] Fix betterness logic for default vs params parameters. Fixes #19754
  • [mcs] Flow analysis of binary expressions not using logical operators. Fixes #20086
  • [mcs] Emit unmanaged version info from AssemblyFileVersion. Fixes #20057
  • [mcs] Fix expression tree conversion type for lifted enum equality comparisons. Fixes #19938
  • [mcs] Report error when named argument for param parameter is given but not all formal parameters are provided. Fixes #19878
  • [mcs] Unify reachable label lookup. Fixes #19887
  • [mcs] Don’t release field address copy before it’s used. Fixes #20040
  • [mcs] Fix error reporting propagation for loop statements. Fixes #20034
  • [mcs] Emit better code for null coalescing operator with nullable return type. Fixes #19702
  • [mcs] Add explicit array conversion involving type parameters. Fixes #18474
  • Other Bug fixes:
  • Add System.ServiceModel.Security assembly. Fixes #20108
  • [sdb] Avoid clearing event requests if they reference an assembly which is unloaded. Instead, remove the assembly reference from the event request so it stays active. Fixes #19924
  • Rename configure.in -> configure.ac. Based on PR #976
  • [System] Fix parsing of IPv6 addresses. Fixes #18574
  • [Http] Cleanup chained async operations. Fixes #19161
  • [corlib] Add Guid hex format parsing with whitespaces. Fixes #19915
  • [System.Net.Http] Parsing productinfo like headers with missing version. Fixes #19881
  • [System] Throw IOE in more cases when dealing with an invalid Process object. Fixes #19864
  • [bcl] Fix Process.PrivateMemorySize64 on osx, we now return task_baic_info.resident_size. Fixes #19738
  • Clean up the usage of FILETIME structures, avoid accessing them as gint64 since that would lead to alignment problems. Fixes #19739
  • [sdb] Avoid stack overflows when a boxed vtype recursively references itself using fields. Fixes #18914
  • [profiler] Filter more event types in mprof-report based on time. Fixes #11904
  • [profiler] In mprof-report fix handling of the time filter when starting from 0. Fixes #11904
  • [http] Convert string output data using BOM header when available. Fixes #19667
  • [system.net.http] Fix encoding of Content-MD5. Based on patch by nberardi. Fixes #19644
  • [sdb] Avoid placing implicit sequence points at offsets where the IL stack is empty when using symbol file based sequence points. Fixes #13640
  • [eglib] Remove test-glib code, we don’t have to maintain compatibility with glib any more. Fixes #19638
  • [corlib] Rethrow user not initialization exception when lazy initialization throws. Fixes #19564
  • [mcs] Don’t report interface implementation errors for optional implementations. Fixes #18030
  • [mcs] Include more unicode categories in parsing identifier part character. Fixes #18229
  • [mcs] Emit null constant value for default parameters of generic types to indicate not missing value. Fixes #19033
  • [mcs] Do type parameter conversion involving type parameters using dependency rules. Fixes #18473
  • [mcs] Emit all method like members in same order as they appear in source code. Fixes #19509
  • [mcs] Convert extended underlying enum constants to their underlying type. Fixes #18866
  • [mcs] Don’t apply reference type is optimization for dynamic expressions. Fixes #19423
  • [mcs] Inflate anonymymous method with correct type arguments when async this requires hoisting in parent type. Fixes #19176
  • [mcs] Fix using type relationship check for type parameters. Fixes #18639
  • [mcs] Caching of type argument types should not happen under error conditions. Fixes #18282
  • [linq] Use hashtable lookup instead of linear scan for groupby keys. Fixes #18673
  • [mcs] Private member can still have base members when in nested types. Fixes #19378
  • [mcs] Make unused event warning reporting consistent to csc. Fixes #19095
  • [mcs] Add parent storey reference only when this is not captured directly. Fixes #19077
  • [mcs] Fix recursive resolving of crefs. Fixes #18511
  • [mcs] Adding unit test for #18511
  • [mcs] Emit field initializer with expression tree in all user constructors. Fixes #18308
  • [dlr] Emit correct code for convert of nullable types. Fixes #19500
  • Runtime:
  • [runtime] Fix decoding of jagged arrays in custom attributes. Fixes #19825
  • [runtime] Avoid calling mono_thread_current () in sgen_thread_detach (), since it can construct objects. Fixes #19755
  • [runtime] Avoid passing commands to lldb using the python api, it doesn’t seem to work well in script files. Fixes #19732
  • [runtime] Fix Process.TotalProcessorTime becoming negative. Fixes #19739
  • [runtime] Clean up an #ifdef block
  • [jit] Make generic ctor calls made out of gsharedvt methods indirect, since they cannot be patched. Fixes #18634
  • [jit] Fix rethrowing of exceptions in thumb mode. Fixes #18448
  • [jit] Fix the lookup of the AOT version of Interlocked.Exchange in full-aot mode. Fixes [#19070](https://bugzilla.xamarin.com/show_bug.cgi?id=19070)
  • [jit] Fix an unreachable code part in mini_emit_memset (). Fixes #19083
  • [llvm] Fix a few problems with longs on 32 bit platforms. Fixes #18925
  • [runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Fixes #18880
  • [interpreter] Disable fast call invocation using methodinfo delegates due to aot limitation. Fixes #18688
  • [runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Fixes #18880
  • [sgen] Restore hazard pointers in suspend signal handler. Fixes #15695
  • Core Libraries:
  • [corlib] Fix extra await context switch when custom SynchronizationContext does not change. Fixes #17878
  • [corlib] Add SortVersion. Fixes #18770
  • [corlib] Make invariant NumberFormatter thread static too as it has internal static state. Fixes #18599
  • [corlib] Filter out any right-to-left sign characters. Fixes #18522
  • [corlib] Fix localized resource loading bug. Fixes #14987
  • [corlib] Optimize EqualityComparer for common value types. Fixes #18400
  • [system] Don’t terminate response reading on bad cookie value. Fixes #18868
  • DataRowView indexer should not break on “completed” added rows (any rows other than the IsNew one). Fixes #18898 (Novell #595899)
  • [corlib] Defer TypeInfo instantiation logic in DefinedTypes. Fixes #19082
  • [Mono.Security] Send all the certificates (except the root) from an SSL/TLS ‘Server certificate’ message (7.4.2 in RFC2246). Fixes #16974
  • [System.Core] Don’t auto increment when trimming hashset. Fixes #18687
  • [system.net.http] Close service-point slot on explicit dispose. Fixes #18848
  • [Fix] System.Runtime.Caching.MemoryCache doesn’t honor SlidingExpiration. Fixes #18213
  • [System.Xml.Linq] Fix XNamespace.GetName locking to not be racy. Fixes #18564
  • [System.Net.Http] Incomplete byte ranges parsing. Fixes #18494
  • [System.ServiceModel.Web] Fix JsonQueryStringConverter.ConvertValueToString to work when running on any culture. Fixes #18437
  • System.Runtime.Caching.MemoryCache doesn’t order expirable items correctly. Fixes #18235
  • ConcurrentQueue.TryPeek() is not thread safe. Fixes [#18182](https://bugzilla.xamarin.com/show_bug.cgi?id=18182)
  • System/PCL: Implement HttpWebRequest.SupportsCookieContainer, WebRequest.CreateHttp. Fixes #18378
  • [interpreter] Implement simple quote expression. Fixes #18248
  • mdbrebase: use File.Move instead of FileInfo.MoveTo. Fixes #18361
  • Add unit test for Novell bug #497562
  • System.Runtime.MemoryCache.GetValues() throws LockRecursionException with expired items - GetValues() calls MemoryCacheContainer.GetEntry() which now gets an EnterUpgradeableReadLock needed by ExpireIfNeeded() - Added a test case. Fixes #18245
  • [Sys.Data] Fix Novell Bug #519648
  • [Sys.Data] Add unit tests for Novell bug #519648
  • [System.XML] Fix handling of space in XSL value-of elements. Fixes #18113
  • [System.XML] Fix XSL node-set bug. Fixes #18114
  • [System.XML] Fix handling of global variables in XSLs. Fixes #18118
  • [System.XML] Do not reset document schema when reading an element. Fixes #9541
  • Windows.Forms:
  • Fix setter of TableLayoutPanel.LayoutSettings throws unwanted exception. Fixes Novell #497562
  • [MWF] Fix opacity of form. Fixes #19856
  • [MWF] Fix ComboBox list to not display offscreen. Fixes #15462
  • [MWF] Fix Screen.FromRectangle. Fixes #8271
  • [MWF] Implement multi-display support on Linux. Fixes #325669
  • [MWF] Clear currentCell before disposing. Fixes #19567
  • [MWF] Unit test for DataGridView bug. Fixes #19567
  • [MWF] Don’t try to remove non-child control. Fixes #19818
  • [MWF] Add unit test for #19818
  • [MWF] Fix AutoSize behavior of FlowLayoutPanel. Fixes #2912
  • [MWF] Fix crash from null control in ContainerControl. Fixes #10537
  • [MWF] Fix TableLayoutPanel layout bug. Fixes #8907
  • [MWF] Fix clipping of last line of dropdown. Fixes #2462
  • [MWF] Release capture when clicking LinkLabel. Fixes #2787
  • [MWF] Fix text position on buttons. Fixes #463149
  • [MWF] Fix crash when setting Row.Height. Fixes #2394
  • [MWF] Unit test for Row.Height/MinimumHeight bug. Fixes #2394
  • [MWF] Fix size of text area on message box. Fixes #2090
  • [MWF] Fix hang if clipboard source application closes down. Fixes #674098
  • [Printing] Improve reported printer settings. Fixes #602934
  • [Printing] Add unit test for Novell bug #602934

New in version 3.2.6 (February 10th, 2014)

  • Bug fixes:
  • Add System.Runtime.InteropServices.WindowsRuntime APIs and PCL Facade
  • Fix problem in MSBuild handling of "Returns" in . This affects multiple Microsoft.Bcl.Build NuGet packages
  • Implement task batching in MSBuild. Fixes BXC #16403
  • Add /Libraries to llvm search path on OSX, this makes --llvm work in more cases

New in version 3.0.1 Beta (November 14th, 2012)

  • C# Async compiler
  • Unified C# compiler for all profiles
  • 4.5 Async API Profile
  • Integrated new Microsoft's Open Sourced stacks:
  • ASP.NET MVC 4
  • ASP.NET WebPages
  • Entity Framework
  • Razor
  • System.Json (replaces our own)
  • New High performance Garbage Collector (SGen - with many performance and scalability improvements)
  • Metric ton of runtime and class library improvements.

New in version 2.10.8 / 3.0 Beta (October 23rd, 2012)

  • Mono now has a complete C# 5.0 compiler with asynchronous programming support
  • Evaluation can now Compile Types
  • Instance API
  • C# Interactive Shell
  • 4.5 Profile
  • New Microsoft Open Source Stacks
  • Garbage Collector
  • Runtime Optimizations
  • ASP.NET
  • CodeContracts
  • Mono.Data.Sqlite
  • C5 Library

New in version 2.10.8 (January 9th, 2012)

  • This version updates the Task Parallel Library.
  • SQLiteConnection can now set the threading mode.
  • There is an improved debugger protocol.
  • Basic support has been added for MSBuild 4.0.
  • NuGet now runs on Mono.
  • Phalanger 3.0 now runs with Mono.
  • Support for some Azure libraries.
  • Support for bundling profilers in a static binary.
  • The profiler can now log its data to any file descriptor.
  • SGen now has native support for object systems that implement ToggleRefs.
  • Mobile Profile now contains System.IO.MemoryMappedFiles.
  • PerformanceCounters for JIT statistics.
  • Android CPU count. HashSet can now be serialized.