Mono 5.8.0 Release Notes

Release date: 01 Feb 2018

Release History

  • 5.8.0.127 - Stable Release (26 February 2018)
  • 5.8.0.108 - Stable Release (1 February 2018)
  • 5.8.0.108 - Alpha Release (23 January 2018)
  • 5.8.0.103 - Preview Release (10 January 2018)

Highlights

In Depth

Runtime

WebAssembly

This release includes our preliminary port of Mono to WebAssembly. It should be possible to build both the runtime and class libraries targeting it.

Interpreter

Parts of the work to revamp the interpreter landed in this release, check out the blog post to learn more about our plans in that area.

Profiler

Added a new quiet mode to the profiler where a minimal set of events are enabled by default and all high volume events must be explicitly enabled. This gives better control on the profiler and should make it usable for long profiling sessions.

Added a preview version of the Mono.Profiler.Log.dll which provides an API to the profiler. It is still unstable as we’re working to define the feature set.

Verifier

The runtime verifier now supports C# 7.0 byref returns.

Modes for the SGen GC

Our sgen garbage collector now has support for so called “modes”. They allow telling the GC more about the workload you’re running so that it can optimize its behavior, e.g. if you care more about high throughput than low pause times. This is much simpler than figuring out the correct values for other, more low-level GC knobs.

Check out the mode parameter documentation for the MONO_GC_PARAMS environment variable in the man page.

Other changes

Improved compatibily with alternative languages that depend on implicit widening of locals.

Class Libraries

We’re continuing on our plan to share more source code with CoreFX and replaced several more classes in this release.

Tools

csi

You are now able to use Roslyn’s csi (C# interactive) REPL tool from the command line.

It is similar to the csharp tool we had in Mono for a long time.

Roslyn / csc

Roslyn was updated to the 2.3.2 release.

mcs

mcs now has better support for C# 7 syntax.

MSBuild

msbuild was updated to a newer upstream version that among other things includes a performance improvement when building on macOS.

mkbundle

mkbundle had a few issues when running on macOS, those are fixed. It now also provides better error messages when something goes wrong.

ilasm

ilasm gained support for the AggressiveInlining keyword.

Bug Fixes

  • Bugzilla #4786 - After failed call to SqlConnection.Open (due to invalid password), subsequent invalid password attempts result in wrong exception
  • Bugzilla #5798 - Thread abort can lead to locks not being released
  • Bugzilla #5804 - Thread.ResetAbort can prevent appdomain unloading
  • Bugzilla #6339 - Headers not being populated in SoapExtension
  • Bugzilla #10074 - Error while updating status of command: MonoDevelop.Ide.Commands.ViewCommands.LayoutList
  • Bugzilla #11696 - Missing MethodImpl has a duplicate
  • Bugzilla #12157 - Missing: Init state for this differs depending on path
  • Bugzilla #17325 - RealProxy returns MarshalByRefObject for an Interface instead of the real interface type
  • Bugzilla #25755 - HttpClient.Timeout does not throw ArgumentOutOfRangeException when setting Timeout property to 0
  • Bugzilla #36634 - IpcChannelTest.Bug609381 hangs on Linux
  • Bugzilla #41279 - Wrong syntax used for nested types in MethodAccessException (and similar)
  • Bugzilla #43172 - Failure when alerting threads waiting on a socket that closes
  • Bugzilla #43563 - Crash when struct Foo contains static field of type Foo[][]
  • Bugzilla #44255 - Inconsistent results in the serialization of TimeZoneInfo.
  • Bugzilla #44266 - Unable to change variable values whilst debugging
  • Bugzilla #52157 - SocketTest.ConnectedProperty test fails in FullAOT Linux runs
  • Bugzilla #52621 - Typo in exception message in PKCS12.cs
  • Bugzilla #55603 - Follow-up to bug 52845: Satellite assemblies not loaded by app when using “Bundle assemblies into native code” even though they are now successfully mkbundled
  • Bugzilla #55697 - .NET 2.0 style web services fail to build under msbuild in Release but work with xbuild
  • Bugzilla #56111 - Hitting assertion after enabling AOT+LLVM on x86 devices in tramp-x86.c:124
  • Bugzilla #56242 - TypeTest.GetGenericMethodDefinitionOverInflatedMethodOnGTD throws NRE on Android in Release mode
  • Bugzilla #56452 - Problem Stack too big
  • Bugzilla #56653 - Zygote crashes
  • Bugzilla #56684 - (mono-2.0-sgen.dll) in mono.exe: 0xC0000005: Access violation reading location 0x04FA3D9A.
  • Bugzilla #56727 - Runtime crashes when disposing DeflateStream
  • Bugzilla #56814 - Xamarin.Mac.dll Memory Leak starting with 3.2.0.175 Release
  • Bugzilla #57002 - New bockbuild package is missing .dSYM directories
  • Bugzilla #57069 - WaitHandle.SignalAndWait is broke
  • Bugzilla #57222 - System.Reflection.AmbiguousMatchException for two fields with same name but different types
  • Bugzilla #57232 - Compiler error when using ternary operator and no whitespace
  • Bugzilla #57476 - AOT fails with large StructLayout size on Debug+ARMv7
  • Bugzilla #57488 - Debugger crashes when inspecting variable in a unit test
  • Bugzilla #57496 - [Slovenian CultureInfo + others] .Parse throws exception when parsing negative values
  • Bugzilla #57505 - Missing error CS0165 in presence of commented line
  • Bugzilla #57528 - [THIS WEEK] Nested streams using SslStream cause ObjectDisposedException when disposed
  • Bugzilla #57629 - [io-layer] File.Delete () throws System.UnauthorizedAccessException on non-existing files on a read-only path
  • Bugzilla #57691 - InternalsVisibleTo doesn’t work with 2048-bit SNK files
  • Bugzilla #57744 - ReflectionTypeLoadException.LoaderExceptions has null exceptions
  • Bugzilla #57771 - F#.NET Core 2.0 projects do not compile
  • Bugzilla #57796 - Compiler Crash instead of CS1621
  • Bugzilla #57850 - Mono assertion when ResolveEventHandler returns a reflection-only assembly
  • Bugzilla #57851 - Assertion if using ResolveEventHandler to find custom attributes
  • Bugzilla #57887 - Console.Error.WriteLine in System.Net.NetworkInformation
  • Bugzilla #57918 - System.Net.Sockets.EndSend returns incorrect value
  • Bugzilla #57930 - Building netstandard 2.0 project throws DllNotFoundException: hostfxr during msbuild
  • Bugzilla #57936 - Race conditions of mempool.c
  • Bugzilla #57959 - SIGSEGV in roslyn with corrupted stack
  • Bugzilla #58100 - mono_w32socket_convert_error: no translation into winsock error for (6) “Device not configured”
  • Bugzilla #58114 - [llvm] csc (Rolsyn) produce fault clauses that the llvm backend does not support
  • Bugzilla #58168 - pedump incorrectly reports mscorlib as invalid
  • Bugzilla #58291 - Mono.CSharp Evaluator does not compile enums and throws an exception
  • Bugzilla #58317 - Leaking threads: SGen worker and Finalizer
  • Bugzilla #58344 - SIMD crash using System.Numerics.Vector
  • Bugzilla #58361 - EnumBuilder can no longer be used to generate IL code
  • Bugzilla #58379 - Mono jit gives different results that .net for simple il
  • Bugzilla #58411 - System.Security.Cryptography.CryptographicException: Store root doesn’t exist
  • Bugzilla #58421 - sre-save.c asserts in fixup_method () if TypeBuilder token is used across assemblies
  • Bugzilla #58423 - Race condition of metadata.c (mono_metadata_get_canonical_generic_inst)
  • Bugzilla #58454 - Cannot resolve method Subscription`1 Subscribe[TSelection](System.Func`2[TState,TSelection], System.Action`2[TSelection,TState]) because the declaring type of the method handle FSI_0002+Store`1[TState] is generic. Explicitly provide the declaring type to
  • Bugzilla #58612 - When 2 breakpoints are hit at “same time” 2nd thread frames count==0
  • Bugzilla #58621 - CS1703: An assembly `gactestlib’ with the same identity has already been imported. Consider removing one of the references
  • Bugzilla #58637 - Heap overflow when using GetAssemblyName
  • Bugzilla #58738 - System.IO.MonoIO.Read - Native Crash when device file is gone
  • Bugzilla #58770 - * Assertion at ..\mono\utils\mono-threads.c:707, condition `info’ not met
  • Bugzilla #58782 - Exception stack traces are deleted when reaching the native-to-managed wrapper in a reverse invoke
  • Bugzilla #58793 - Fix pedump to use normal runtime init sequence
  • Bugzilla #58809 - Return result of Type.IsAssignableFrom with the generic parameters differs from MS.NET one
  • Bugzilla #58829 - Application Output Window being flooded with “[Mono] worker parking, [Mono] worker unparking” messages when debugging agasint Android Emulator.
  • Bugzilla #58877 - MonoTests.System.Threading.Tasks.TaskTests.Delay_Simple fails randomly after upgrade to Xcode 8.3
  • Bugzilla #58901 - Breaking ABI change on 32 bits with xcode 8.3 or newer
  • Bugzilla #58911 - performance degradation with linq expressions
  • Bugzilla #58965 - csi fails with “type Object is defined in an assembly that is not referenced”
  • Bugzilla #59039 - bug-18026.exe test times out on armel/armhf
  • Bugzilla #59154 - runtime can’t load secondary-dependent library from newly unpacked temp directory
  • Bugzilla #59180 - verifier does not handle TYPEDBYREF properties
  • Bugzilla #59235 - [mono-2017-06] android.runtime.JavaProxyThrowable: System.ObjectDisposedException: Cannot access a disposed object.
  • Bugzilla #59239 - [mono2017-06]FileTest.SymLinkLoop failed on tvOS device
  • Bugzilla #59281 - System.Threading.AbandonedMutexException: The wait completed due to an abandoned mutex.
  • Bugzilla #59334 - Expression: Can’t catch non-exception objects (mono wraps them with RuntimeWrappedException)
  • Bugzilla #59364 - Assertion at dynamic-image.c:209, condition `prev == MONO_HANDLE_RAW (obj)’ not met
  • Bugzilla #59430 - api-diff not outputing out params correctly
  • Bugzilla #59436 - MT3001 error
  • Bugzilla #59664 - Type.GetType(“”, true) throws ArgumentException on Mono but TypeLoadException on .NET
  • Bugzilla #59824 - Casting an array of enums is inconsistent with .NET Framework behavior
  • Bugzilla #59832 - [iOS]MT3001 error: Could not AOT the assembly error while building iOS/mobile samples
  • Bugzilla #59909 - WebInvokeAttributeTest.RejectTwoParametersWhenNotWrapped() fails on Android
  • Bugzilla #59916 - get_current_locale_name fails under the load with String conversion error: Illegal byte sequence encounted in the input
  • Bugzilla #59953 - [llvm][bitcode] test_0_float_return_spill failed: got 1, expected 0
  • Bugzilla #60233 - Assertion in dynamic-image.c after 792b5367cd3a6ffa1a192c4d2d7ace3509cbb646
  • Bugzilla #60238 - Mono assertion hit when using csharp repl
  • Bugzilla #60245 - FieldInfo.GetValue fails on ContextBoundObject
  • Bugzilla #60317 - Stuck WebRequest
  • Bugzilla #60340 - Csc msbuild task fails to find csc.exe
  • Bugzilla #60480 - [mono-2017-10] ZipArchiveTests in System.iO Compression tests fail on device
  • Bugzilla #60539 - mini-codegen.c:1265, condition `reginfo [sreg].born_in > 0’ not met
  • Bugzilla #60545 - Multiple argument generic with contravariant interface as an argument causes MissingMethodException.
  • Bugzilla #60634 - Assertion failure ‘align > 0’ happening as of d15-5
  • Bugzilla #60771 - Attempting to JIT compile method ‘System.Runtime.CompilerServices.Unsafe:Add (byte&,int)’ while running in aot-only mode
  • Bugzilla #61002 - Runtime exception: Cannot access a disposed object. Object name: ‘MobileAuthenticatedStream’.
  • GitHub #6169 - Thread objects are being leaked
  • GitHub #6339 - System.TypeLoadException is thrown when run .net standard library with Mono
  • GitHub #6383 - System.Diagnostics.ProcessTest.Start1_FileName_NotFound failing

Contributors

Aleksey Kliger, Alex Rønne Petersen, Alexander Kyte, Alexander Köplinger, Alexis Christoforides, Andi McClure, Ankit Jain, Armin Hasitzka, Bernhard Urban, Chris Hamons, Cody Russell, David Karlaš, Eberhard Beilharz, Jason Imison, Jo Shields, Johan Lorensson, Jon Purdy, Jonathan Chambers, Jonathan Pryor, Katelyn Gadd, Ludovic Henry, Marek Habersack, Marek Safar, Marius Ungureanu, Martin Baulig, Miguel de Icaza, Niklas Therning, Rodrigo Kumpera, Rodrigo Moya, Toni Spets, Uri Simchoni, Vlad Brezae, Vladimir Kargov, Vladimir Kazakov, Zoltan Varga