Mono 4.4.0 Release Notes

Release date: 08 Jun 2016

Highlights

In Depth

Class Libraries

Our build system has been reconfigured to become a 4.x setup, as opposed to 4.5 only and it’s now tracking .NET 4.6.1 APIs.

Targeting earlier .NET profiles happens via so-called reference assemblies, which we introduced in Mono 4.0.

To make it more clear that these are just used for compilation and not during runtime (they contain only metadata, no actual method IL), we renamed the profile folders in <prefix>/lib/mono/.

The folder structure on disk when installing Mono now looks like this:

<prefix>/lib/mono/
  ├── 2.0-api
  ├── 3.5-api
  ├── 4.0-api
  ├── 4.5-api
  ├── 4.5
  ...

Note: The 4.5 folder contains the actual assemblies that are used during runtime. We’re considering these the latest assemblies from now on, i.e. right now they’re implementing .NET 4.6.1. Unfortunately, we couldn’t rename this folder as too many apps and libraries hardcoded checks for this path.

WCF

WebHttpBinding must use http scheme in case when SecurityMode == WebHttpSecurityMode.TransportCredentialOnly

Runtime

Embedding API

The embedding API now has the following additions:

  • mini_parse_debug_option allows embedders to set debug options programatically, without going through the MONO_DEBUG environment variable.

Bitcode

It is now possible to configure the runtime to generate LLVM bitcode when passing the --with-bitcode option to configure. This mode of operation avoids certain low-level optimizations that require assembly code to be used and instead limits the runtime to use constructs that can be expressed entirely in bitcode mode. This is designed to support scenarios where you want to use LLVM to drive the entire compilation process.

Unmanaged Thin Locks

This avoids allocation of new MonoThreadsSync structures for the typical cases of shallow nesting of uncontended locks. The necessary information (owner, nest and status bits) is embedded in the synchronisation field of a MonoObject. The lock is inflated when the nest overflows or when there is contention on the lock.

This greatly improves performance (over 10 times) for the case of locking a lock only a few times, due to the inflation avoidance. It also improves performance up to 25% for the case of locking a thin lock. A decrease in performance (up to 3 times slower) can happen for the case of repetitive nesting of a lock, due to the need of a CAS at each entry/exit.

libmono now defaults to SGen

The libmono library now defaults to using Mono with SGen, previously, it defaulted to Boehm.

FullAOT: Generic Value Type Sharing improvements

More code is now shared with Value Type sharing and we no longer generate shared wrappers for method signatures as those are not needed.

Garbage Collector

This release contains a new mode of operation for Mono’s SGen garbage collector as well as many performance optimizations,and memory usage and throughput optimizations

Cooperative Mode

Mono has historically used garbage collectors that can run at any time, that is, when a garbage collection is triggered, the GC system stops all threads preemptively and performs a garbage collection.

This is a behavior that we inherited from Boehm’s GC which was great in the early days of Mono, as it allowed us to get a working garbage collector in no time, but also made the garbage collector harder to debug.

We have introduced a new cooperative configuration to our garbage collector that makes it easier to debug garbage collector related problems and reduces the operating system specific requirements to have a functioning garbage collector.

This mode can be enabled by setting the MONO_ENABLE_COOP environment variable.

Implement Thread Priority Setting

Implement a SetPriority/GetPriority facility for real-time threads: if mono is executed using the SCHED_RR policy, we will map POSIX priorities to .NET priorities. Under this policy a thread running under this policy which uses the SetPriority API will have its priority remapped and a call to pthread_setschedparam() made to change its priority.

For a sample program that shows how to run a Mono application without requiring all root privileges other than the CAP_SYS_NICE capability which enables priority manipulation see the thread-priority page

LLVM Only Mode

It is now possible to use the Mono runtime in LLVM-only mode. This mode avoids the use of any assembly optimized code, or the mixed mode of Mono+LLVM. This is used to generate standard LLVM bitcode.

This comes at the expense of some performance optimizations that are not possible to express with stock LLVM.

Concurrent GC

We continue to improve the concurrent capabilities of the garbage collector, among those we enabled cementing for it, and tuned various parameters of nursery collection and improved the diagnostic capabilities of the concurrent GC.

GC Handles

We have made the implementation of GC handles lock-free. The previous implementation would take a lock every time a GC handle was accessed (e.g., with WeakReference.Target or WeakReference.IsAlive). Removing this locking improves the performance of these operations by orders of magnitude—particularly on OS X, where locking is costly.

MSBuild Preview for OS X

Our OS X package now includes a preview release of the now open sourced MSBuild. The preview build is based off a fork in Mono (xplat-p1 branch).

Command line usage is same as xbuild and supports the same set of command line arguments. This works with regular .NET projects, Xamarin.Android, Xamarin.iOS, Xamarin.Forms etc in our limited testing. Bugs for any issues that you run into can be filed at Bugzilla using the Component - MSBuild.

Note: This version of msbuild runs into a bug when used with certain F# projects (see Bug #42356). Some build tools like albacore try detecting msbuild before xbuild so you may end up inadvertently using msbuild and run into this bug.

64-bit Mono for OS X

We now provide universal (32/64-bit) binaries in our OS X package. 32-bit is still the default Mono executable on the terminal; For 64-bit use mono64 or mono --arch=64.

Profiler

We are now annotating our GC roots, so the profiler can get better visibility into the nature of objects that keep objects alive.

Threadpool

We no longer use the sparse array for the threadpool, as for many thread it would slow down some operations.

Debugger

The soft debugger now allows nested invocations to take place.

PowerPC

The PowerPC backend has been updated to support big endian systems.

Process API

Refactored the Process API (FIXME: Marek, what was the source of this?)

C# Compiler

Null operator (?.) has been implemented for dynamic expressions.

experimental flag

The language version future has been renamed to experimental.

IKVM Updated

We have updated IKVM to support 4GB output files.

Portable Class Libraries

Introduced support for the PCL v3 contracts

Platforms

Adds support for WatchOS, armv7k and new Android M.

Named events and semaphores

The support for sharing named events/semaphores etc. between processes (MONO_ENABLE_SHM) has been removed. This feature was very complicated to implement on POSIX system and the implementation was very brittle and a constant source of bugs/problems. A possible replacement is to use the similar POSIX functionality in the Mono.Posix assembly.

Reflection

Major upgrade to Reflection APIs, it implements many features that we never used in the past, but that are required to run Roslyn (FIXME: add more details).

IL Assembler

Adds support for {auto} and legacy library. Those were added as no-ops to enable assembling the CoreCLR IL test suite.

Microsoft Source Code Adoption

System

  • Adopted WebUtility class
  • Adopted AuthenticatedStream class and family.
  • Adopted AddressFamily
  • Adopted IOControlCode
  • Adopted IPPacketInformation
  • Adopted LingerOption
  • Adopted MulticastOption
  • Adopted ProtocolFamily
  • Adopted ProtocolType
  • Adopted SelectMode
  • Adopted SocketErrors
  • Adopted SocketException
  • Adopted SocketFlags
  • Adopted SocketInformation
  • Adopted SocketInformationOptions
  • Adopted SocketErrors
  • Adopted SocketFlags
  • Adopted SocketInformation
  • Adopted SocketInformationOptions
  • Adopted SocketShutdown
  • Adopted SocketType
  • Adopted TransmitFileFlags

System.Web

FIXME: pull the list

Tools

csharp

The interactive C# shell now implements code completion by showing a popup on the screen instead of using the Bash-style results.

Code completion is also triggered by the “.” character, which is convenient in many cases, in addition to the existing TAB.

Code completion in csharp

mdoc

Improved the rendering of Platform enumerations for platforms like iOS where we are interested in when an API was first introduced, not all the platforms that also support it.

Improved the handling of generic methods.

mdoc - New options

New -api-style parameter and -multiassembly parameters can be used to update documentation in scenarios where we want to maintain a single XML API, but target slightly different source assemblies (like we have to do for Xamarin.iOS’s classic and unified, or iOS, tvOS and WatchOS).

The new multiassembly option lets you run mdoc update on assemblies that contain the same types. This can come into play when you have a set of assemblies that run on different platforms, with a slightly differing API surface area on each platform (for example: tvOS, watchOS, iOS); in th`is case you can maintain all of the documentation in a single set of XML documents.

With this option enabled, an AssemblyInfo node will be added for every assembly that a type is found in, in addition to every member. While this may seem verbose, it’s really the only way to capture the information about what assemblies a given type or member can be found in.

mkbundle

Now supports the --quiet flag to prevent diagnostics messages from being printed out.

xbuild

The xbuild command now defaults to XBuild 14.0 instead of 12.0. This means .csproj project files that use ToolsVersion=”14.0” (such as those created by Visual Studio 2015) or that target .NET 4.6 now build without warnings.

Roslyn support: It now copies the Portable PDB files generated by the Roslyn compiler to the output directory.

babysitter

This new script replaces GNU timeout and is intended to be used by automated builds of Mono on Jenkins or other continuous build systems. In addition, it:

  • Logs machine readable output about each test suite (as line-delimited json)
  • If the test suite uses NUnit, can detect if a test case failed or crashed (terminated mono in mid-test), and retry unsuccessful tests (up to a limit).

Preview Releases

4.3.2 (alpha, Feb 19, 2016)

Bug Fixes

  • #964 - Implementation of system.net.networkinformation.ping Class
  • #2033 - UnicastAddress.IPv4Mask throws NotImplementedException on Mono 2.10 running on open-embedded Linux
  • #4230 - DataContractJsonSerializer mishandles deserialization of null arrays
  • #4938 - SignedXml reporting Malformed reference object where referenced attribute name is lowercase id, rather than Id
  • #10205 - System.InvalidOperationException in FileSystemWatcher
  • #10268 - Linker issue with horizontallistview project in release mode
  • #12681 - Task.Wait() blocks forever, and I don’t know why.
  • #13538 - Extraneous lines in Application Output for Debug.WriteLine
  • #13909 - RouteTable.Routes.Clear() doesn’t really clear
  • #15153 - System.ServiceModel.NetTcpBinding properties are not pre-initialized while they are in .Net causing interoperability problems
  • #19379 - iPhoneOSGameView deadlocks Apple’s Instruments is used
  • #19391 - [Preserve(AllMembers=true)] not working when another attribute, [DataContract] is after it.
  • #20186 - Another AOT bug
  • #23617 - Can’t build in Release mode: Error executing task GenerateJavaStubs: Could not load assembly ‘Xamarin.Android.Support.v4
  • #24958 - TimeZoneInfo.Local.Id and TimeZoneInfo.Local.DisplayName return “Local”
  • #25086 - Xamarin-product private bug
  • #27303 - NullReferenceException with ARMv7
  • #27620 - Xamarin-product private bug
  • #28693 - IOException: kqueue() FileSystemWatcher has reached the maximum nunmber of files to watch.
  • #29864 - public Uri(Uri baseUri, Uri relativeUri) strips . from path
  • #30018 - Use “Dns.GetHostEntry” or “Dns.GetHostByName”,sometime throw error “Cannot handle address family xxxxx”
  • #30023 - Using default constructor in watch window does not work
  • #30360 - Error in handling of /etc/localtime file to retrieve time zone on Linux
  • #30479 - Sgen counter for promoted not been reset across minor collections
  • #30561 - Setting HttpContent in System.Net.Http does not set ContentLength header.
  • #30594 - * Assertion at sgen-alloc.c:558, condition ‘tlab_next_addr_offset != -1’ not met
  • #31172 - Uri parsing exceptions when username or password has space in it
  • #31432 - TimeZoneNotFoundException
  • #31451 - mono_trace_set_printerr_handler calls g_set_print_handler instead of g_set_printerr_handler
  • #31557 - Sockets with ReuseAddress does not seem to be working as expected
  • #31784 - Xamarin-product private bug
  • #31829 - Xamarin-product private bug
  • #31830 - Xamarin-product private bug
  • #31875 - Android build fails
  • #31877 - SendChunked - “Method must be implemented”
  • #31900 - char.ToUpperInvariant fails to convert some characters to upper case and returns different values than in .NET
  • #31921 - Xamarin-product private bug
  • #31932 - Regression: Stack Overflow with native P/Invoke Callback
  • #31933 - Mono C# compiler incorrectly emits CS1705 Assembly X references assembly Y version=4.3 which is higher than imported assembly Y version=4.0 for some assemblies
  • #31948 - Mono C# compiler incorrectly emits CS0647 for attributes on method parameters
  • #31996 - AOT compiler fails if path to project has a comma
  • #32020 - Don’t default to –with-tls=pthread on Solaris/x86
  • #32054 - Internal compiler error using Null Coalescing Operator on System.Nullable
  • #32060 - Internal compiler error
  • #32130 - Parenthesis around elvis operators do not resolve to nullable
  • #32135 - C# 6 string interpolation and lambdas miscompilation
  • #32137 - System.Text.Encoding.UTF8.EncodingName not the returning human-readable description of the current encoding
  • #32171 - Xamarin-product private bug
  • #32179 - Consistent crash in mini-arm.c when running FSharp on Raspberry Pi 2
  • #32451 - Incorrect compiler error CS0117 for class with event and obsolete attribute which uses a field defined in another file
  • #32456 - Expression-bodied properties cause issues in conjunction with XML comments
  • #32487 - CS0016 Could not write to file Argument is out of range
  • #32499 - Xamarin-product private bug
  • #32539 - Process.ProcessName value fetched using Process.GetProcesses () is trimmed to 15 characters
  • #32561 - Could not load file or assembly Microsoft.Build.Utilities
  • #32579 - System.Diagnostics.Process.MainModule.FileName does not return full path of the executable and returns 15 chars trimmed value which is same as Process.ProcessName
  • #32591 - AssemblyName .ctor doesn’t accept quoted PublicKeyToken in the assembly name string
  • #32609 - PropertyInfo.CanWrite behavior difference from MS.NET
  • #32685 - NRE in ServicePoint.CheckAvaliableForRecycling
  • #32712 - Incorrect compile error CS4016 when for async function that returns Task<Task>
  • #32722 - Xamarin-product private bug
  • #32725 - Creating a new System.IO.Compression.ZipArchive fails on mono with SharpCompress.Common.ArchiveException
  • #32732 - Xamarin-product private bug
  • #32815 - PropertyInfo.Module throws System.NotImplementedException
  • #32832 - C#6 string interpolation with dictionary initializer fails to compile
  • #32894 - Using-alias-directives throws NullReferenceException (Mono.CSharp)
  • #32905 - System.IO.IOException : Write fault on path … during ProcessTest.DisposeWithDisposedStreams
  • #32907 - Accessing fields of Random object from IL code leads to mono crash.
  • #32918 - StackTrace() missing original exception - ExceptionDispatchInfo
  • #32931 - NullReferenceException in KeyValuePair.get_Key when using generic method and Linq
  • #32947 - App just hangs on iOS9 device with iOS9 SDK
  • #32955 - Random crash at aot-runtime.c:3144
  • #33064 - Xamarin-product private bug
  • #33066 - Watch evaluations different in XS than VS
  • #33080 - JIT error only on ARMV7
  • #33142 - new float() without assignment raises CS0201 error
  • #33324 - Casting List to IList causes argument exception on device build in Add method.
  • #33341 - Xamarin-product private bug
  • #33370 - Xamarin-product private bug
  • #33400 - Setting Language to zh-Hant on iOS does not set UICulture to zh-TW or zh-Hant
  • #33471 - onoTests.System.TimeZoneInfoTest+ConvertTimeTests.ConvertFromToLocal fails when machine is in UTC
  • #33487 - ‘CS1591’ is not a valid warning number (CS1904)
  • #33527 - “Error CS0584: Internal compiler error: The method or operation is not implemented.” - caused by using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory
  • #33550 - Portable PDB doesn’t to work when Assembly.Load(byte[], byte[]) called
  • #33551 - System.Net.SmtpClient uses an invalid HELO name
  • #33553 - System.IO.Compression.ZipArchive produces bad archive files
  • #33558 - Xamarin-product private bug
  • #33573 - Function call in fixed get called 3 times.
  • #33591 - AOT compilation fails with condition ‘field->type->attrs & FIELD_ATTRIBUTE_HAS_DEFAULT’ not met
  • #33600 - Auto properties broken in Mono 4.2.0
  • #33669 - mcs emits CS1061 while csc does not (compiling class with generic virtual method and constraints)
  • #33723 - Null propagation operator produces incorrect IL
  • #33754 - Invalid IL Code when using elvis operator to call extension struct methods
  • #33797 - Xamarin-product private bug
  • #33809 - Exception with SignalR 2.2 and Mono 4.2.0
  • #33851 - Xamarin-product private bug
  • #33952 - Debugger.Break() causes app to crash if Debugger is not attached,
  • #34044 - HttpClient: any custom Host header is not used in requests
  • #34047 - System.Globalization.CultureInfo.GetCultureInfo(“es”) returns incorrect NumberFormatInfo.NumberGroupSeparator
  • #34133 - Xamarin-product private bug
  • #34147 - Serious AOT bug
  • #34168 - Xamarin-product private bug
  • #34334 - System.NotImplementedException: The requested feature is not implemented. at Microsoft.Scripting.Interpreter.EqualInstruction.Create (System.Type type) [0x001ab] in Microsoft.Dynamic/Interpreter/Instructions/EqualInstruction.cs:162
  • #34371 - Mono Git Master has amd64 build issue with MSVC.
  • #34382 - Marshal.AllocHGlobal out of memory exception with 64-bit ptr
  • #34409 - XML document generation
  • #34413 - Xamarin-product private bug
  • #34498 - Xamarin-product private bug
  • #34604 - Compiler Crash in Mono.CSharp.CallEmitter.EmitPredefined with NRE
  • #34675 - Xamarin-product private bug
  • #34724 - Xamarin-product private bug
  • #34750 - Debugger crash very often - debugger-agent.c:2587, condition ‘res’ not met
  • #34753 - Mono C# compiler incorrectly outputs CS0019 with reference equality to (null)
  • #34898 - Doesn’t compile dynamic on nested templates whereas visual studio does ?
  • #34916 - GZipStream fails on iOS
  • #34926 - AOT issue with await Task<bool> on Visual Studio 2015
  • #35044 - Xamarin-product private bug
  • #35087 - Incorrect CS1587 warning for comment on C#6 auto-property initializer
  • #35102 - IronJS is broken on master
  • #35171 - Xamarin-product private bug
  • #35178 - Xamarin-product private bug
  • #35236 - Error CS0200 when attempting to override auto-implemented property.
  • #35269 - CS0208 which appears or disappears based on filename ordering on command-line.
  • #35310 - Roslyn Crashes to a bug in equality comparer
  • #35375 - Runtime crash in F# Interactive for F# 4.0
  • #35401 - mcs generates incorrect code for CoreCLR try-finally03.cs and try-finally-struct03.cs test cases
  • #35410 - Unexpected symbol ‘sbyte’ error when casting sbyte to predefined type (e.g. Int32) instead of C# keyword
  • #35414 - Xamarin-product private bug
  • #35447 - Android Debugger Crashes on watch condition accessing “Data”
  • #35535 - CS0425 Consider using an explicit interface implementation instead error on XS only
  • #35545 - Mono cannot marshal a parameter that is a function pointer which takes a function pointer as a parameter
  • #35604 - [csharp] Bad using statements break all future REPL evaluations
  • #35674 - Silent discarding of code on syntax error in anonymous delegate
  • #35828 - Thread.CurrentThread doesn’t return correct object in appdomain
  • #35844 - 276824dd28c4b1 breaks Nexus5 on TestCloud
  • #35855 - Attempting to JIT compile method ‘(wrapper unknown) System.Collections.ObjectModel.ObservableCollection1<tryfsharpforms.DoubleDoubleDataPoint>[]:Get (int)’ while running with –aot-only.
  • #35857 - [Mono 4.2] NullReferenceException in SqlDataReader.GetValues()
  • #35876 - Incorrect return of DateTime.ToUniversalTime method for DateTime.MaxValue.
  • #35980 - CSharpCodeCompiler.CompileXYZ false positive error when warning is ‘X hides inherited member’
  • #36000 - Dictionary with IEqualityComparer is leaking in iOS 9.2.1.51 / Mono 4.2.1
  • #36003 - Invalid DateTime format for Finnish and DateTime parser not supporting same separator for date and time
  • #36052 - Using stackalloc zeros out the size variable when passed to another function
  • #36095 - Uri is longer than the maximum 32766 characters
  • #36100 - DataContractSerializer broke in XI 9.2.1.51 STABLE
  • #36125 - Xamarin-product private bug
  • #36128 - Native interop: LPArray output parameter becomes invalid after call
  • #36161 - NPE with JSON.NET
  • #36183 - Since upgrading to Xamarin Android 6 get error error MSB3733: Input file “obj\Android\Debug\android\AndroidManifest.xml” cannot be opened
  • #36247 - MT3001 Invalid octal number when not using LLVM
  • #36256 - Memory leak related to KDTree.FromData<int>(points, distance)
  • #36257 - Runtime crashes when debugging .ppdb(when requesting arguments)
  • #36263 - Xamarin-product private bug
  • #36292 - Assignment operator (+=, ++, etc.) on generic items crashes with System.InvalidProgramException: Invalid IL code
  • #36339 - Stepping is not working for .ppdb if /optimize+ is used
  • #36370 - AOT: Can’t insert into Dictionary<UInt32Enum, object>
  • #36383 - async / await - Custom awaiter crashing on device
  • #36384 - Mono does not recognise overloaded method with “params object[]”
  • #36388 - Application settings produce extra XML headers during saving
  • #36425 - Erroneous CS0266 error
  • #36436 - XslCompiledTransform causes hang during execution
  • #36443 - counter warning printed when two threads terminate with exceptions simultaneously
  • #36560 - Unhandled exceptions outside the main execution context are ignored
  • #36569 - Xamarin-product private bug
  • #36589 - “Compiler crashed with code 1” when awaiting in interpolated string
  • #36596 - Potential HttpClient Ntlm memory leak
  • #36723 - Xamarin-product private bug
  • #36724 - Error when inserting SessionID into Uri on Linux
  • #36829 - XmlSerializer does not support subclasses when serializing sequences of items
  • #36839 - mcs emits wrong code for char pointer arithmetic
  • #36852 - Xamarin-product private bug
  • #37035 - Creating service host with singleton fails
  • #37079 - Xamarin-product private bug
  • #37080 - Compiler not evaluating elvis operator ?. correctly
  • #37116 - [iOS] Application.Current.Properties does not persist on iOS with Forms
  • #37171 - DataContractSerializer does not handle ISerializable at all
  • #37232 - Inconsistent accessibility not detected in partial classes in XS on Mac
  • #37246 - Xamarin-product private bug
  • #37273 - Exceptions caught in incorrect catch blocks on LLVM builds
  • #37305 - Xamarin-product private bug
  • #37313 - SIGABRT on System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor
  • #37412 - Attempting to JIT compile method PCLCrypto.DeriveBytes:GetBytes crash
  • #37436 - Invocation of Func<> based delegates fails on v4.2.1.124 on OSX & Linux: Delegate is never actually invoked by runtime
  • #37547 - Exception in unhandled exception handler not catched after Thread.Abort
  • #37582 - Xamarin-product private bug
  • #37681 - Fails to parse negative integers with Hebrew region set
  • #37695 - Delegate references an overridden method in derived class misbehaves when marshalled as a parameter to native C function.
  • #37732 - Xamarin-product private bug
  • #37824 - C# 6: “?.” - RuntimeBinderException: Cannot perform member binding on ‘null’ value
  • #37886 - mcs 4.2.2 generates bad IL when string-interpolating a dynamic object
  • #38012 - Using Task’s under memory pressure leads to unexpected crashes inside the TPL on iOS
  • #38064 - DataContractJsonSerializer does not work under the “supported” 4.5 profile
  • #38145 - Xamarin-product private bug
  • #38161 - instability/crash when using DateTime under cpu load
  • #38222 - Xamarin-product private bug
  • #38250 - Stack Corruption in mono involving tailcalls (where code is fine on Windows)
  • #38331 - No longer able to run unit test project from command line via ‘mono nunit-console.exe’
  • #38379 - Byte enums fail to compare correctly on 64 bit iOS devices when using the LLVM compiler
  • #38382 - Xamarin-product private bug
  • #38392 - Xamarin-product private bug
  • #38408 - Error disposing of Filestream when leaving using statement
  • #38525 - kill -QUIT produces a very broken stacktrace
  • #38599 - Regression: SynchronizationContext.Current returns wrong value in delegate run by SynchronizationContext.Send.
  • #38600 - mkbundle Doesn’t support assemblies with spaces in their names.
  • #38638 - Getting build error “Error initializing task XmlPeek: Not registered task XmlPeek”.
  • #38712 - Mono 4.3 Cryptography.ProtectedData fails to decrypt data from Mono 4.2
  • #38818 - linked apps with Java.Interop.dll crash on device
  • #38825 - mono_image_open() does not check header anymore
  • #38933 - CryptographicException from ProtectedData in multi-threaded execution
  • #38992 - error CS1009: Unrecognized escape sequence ‘_’ in $@ String
  • #39153 - return wrong value if async/await used in finally block
  • #39172 - Xamarin-product private bug
  • #39266 - Xamarin-product private bug
  • #39305 - Xamarin-product private bug
  • #39420 - Xamarin-product private bug
  • #39455 - Nameof operator doesn’t handle sub-expressions
  • #39459 - Corrupted async result when returning new struct directly
  • #39569 - Validation of ETag by HttpHeaders.Add is too strict
  • #39574 - Compilattion Error CS0842 thrown on Expression Body getter property with explicit StructLayout
  • #39644 - * Assertion at image.c:512, condition ‘image->heap_guid.size >= 16’ not met
  • #39715 - ppdb support causes crash at shutdown
  • #40060 - System.TypeSpec.Parse cannot parse generics + anonymous type name
  • #40088 - Call in lamda of static method with dynamic parameter fails in constructor argument
  • #40108 - Xamarin-product private bug
  • #40144 - checking for __sync_bool_compare_and_swap… no
  • #40462 - Xamarin-product private bug
  • #40899 - Xamarin-product private bug
  • #41052 - fsharp build from source fails
  • #41128 - Xamarin-product private bug
  • #41264 - Xamarin-product private bug

Contributors

We want to thanks all the contributors that helped make this release.

Aaron Bockover, Adam Burgess, Aleksey Kliger, Alexander Köplinger, Alexander Kyte, Alexis Christoforides, Alex Rønne Petersen, alex-skiffin, Andi McClure, Andrés G. Aragoneses, Andrey Akinshin, Angelo Compagnucci, Ankit Jain, ArsenShnurkov, Arturo Espinosa, ash-lshift, Atsushi Eno, Bernhard Urban, Bill Seurer, bogdanov, BogdanovKirill, BrennanConroy, Brent McCarthy, Bruce-Robert Fenn Pocock, Burak Tamtürk, Chris Hamons, cmp, Craig S. Bosma, Daniel Becker, Dave Dunkin, David Karlaš, David Lechner, David Straw, Dean Ellis, delme-imgtec, Dmitry Kalyanov, Dylan Borg, Eberhard Beilharz, Erik Larkö, ES, Etienne CHAMPETIER, f00f, Frederik Carlier, Gankov Andrey, github@mrblade.de, guerrysemones, iain holmes, Ivan Maidanski, Ivo Smits, James Venning, Jan Thonemann, João Matos, Joel Martinez, Jonathan Gagnon, Jonathan Pryor, Jon Purdy, Jo Shields, Juergen Hoetzel, kasthack, Kimura Youichi, Konrad M. Kruczynski, Larry O’Brien, Lennart Sorensen, Lucas, Ludovic Henry, Lukasz, Marc-Andre Ferland, Marcin Cieslak, Marcos Henrich, Marek Habersack, Marek Safar, Mark Beaton, Mark Lintner, Mark Mikofski, Mark Probst, Martin Baulig, Martin Booth, Martin Potter, Mathieu Malaterre, Matt Zinkevicius, meum, Michael Hutchinson, Miguel de Icaza, Mikhail Filippov, mlancione, Neale Ferguson, Neil Mayhew, Radek Doulik, Rafael Cruz, Richard Tollerton, Richard Webb, Rodrigo Kumpera, Rodrigo Moya, Rolf Bjarne Kvinge, Sandy Armstrong, sawachika-kenji, sdridi, Sebastian Mayr, Sebastien Pouliot, Simon Hartmann, smirtw, Stefan Sedich, Steffen Kieß, stukselbax, Thomas Jepp, Timotheus Pokorra, Tom Philpot, Toxa, triton, Utsav Shah, Vincent Povirk, Virgile Bello, Vlad Brezae, Vladimir Kargov, Zoltan Varga