Mono for Windows Changelog

What's new in Mono for Windows 6.12.0.200 Preview

Jul 12, 2023
  • Fix for Mono.Security.dll security issue in AuthenticodeDeformatter (CVE-2023-35373)
  • Only applies if you use the chktrust tool or the AuthenticodeDeformatter in your code
  • Update bundled NuGet to version 6.6.1
  • Fix a couple issues in the assembly loader

New in Mono for Windows 6.12.0.182 Preview (Oct 14, 2022)

  • Fix for NuGet security issue https://github.com/NuGet/Home/issues/11883
  • Various bugfixes

New in Mono for Windows 6.12.0.122 Preview (Feb 23, 2021)

  • This is a security release which addresses CVE-2021-24112.

New in Mono for Windows 6.12.0.107 (Dec 12, 2020)

  • Highlights:
  • Various bugfixes
  • Resolved Issues:
  • 10643 [System.Windows.Forms] Combobox SelectedIndexChanged when mouse move
  • 10651 Missing memory barrier with some atomic operations
  • 12022 Form closes although its DialogResult is manually set to None
  • 15418 nuget: ThreadAbortException in SchedulerThread
  • 15612 [sdb] Runtime crash when accessing invalid address under debugging
  • 16243 LLVM: bound checks are not eliminated for simple cases
  • 16623 Hebrew and other non-Gregorian calendars are broken
  • 16763 Bump F# to 5.0
  • 16969 [coop][interp] two failing tests with checked-build=gc
  • 17869 Assertion failure with default interface method
  • 17881 .NET 4.5 console app bundled with mono 6.4.0 cannot be signed, or crashes when run
  • 17980 The UseColumnTextForLinkValue field of DataGridViewLinkColumn does not work
  • 18009 patch configure.ac to build on FreeBSD/PowerPC64
  • 18019 WinForms ContextMenu gets stuck open if you middle-click
  • 18020 WinForms RadioButton auto-check still occurs when AutoCheck = false
  • 18030 mono-io-layer-error (-1) exception on Android with Mono6.4 and AdGuard used
  • 18061 [interpreter] Conversions.ToX(NaN) are expected to throw OverflowException
  • 18064 PowerPC linux build is broken
  • 18106 “No compatible code running” after repeated breakpoint in Android.OS.AsyncTask.RunInBackground() On android sometimes there is no valid_info but the ctx is valid and the debug can continue. (#18463)
  • 18120 Roslyn fails with interpreter
  • 18127 bug: mini_get_shared_gparam get wrong MonoImage?
  • 18191 Mono crashes on attemp to evaluate ‘ref’ returning method with debugger
  • 18202 Failure to build and run testsuite under muslc
  • 18213 Some unit tests (e.g. mscorlib) are too big to run in every configuration and needs to be split
  • 18323 Error MT2101: Can’t resolve the reference ‘System.Security.Cryptography.Pkcs.SignedCms’
  • 18339 Mono crashes when loading a video file from Subtitle edit
  • 18364 Incorrect Reflection & TypedReference behavior in AOT mode.
  • 18370 ThreadLocal not using the JIT fast path for TLS access
  • 18417 LLVM JIT omits frame pointer even if MONO_DEBUG=disable_omit_fp is set
  • 18418 Thread.VolatileRead(ref Object) causes assertion failure
  • 18506 [WinForms] Invisible ComboBox controls can still pop up their lists if a ContextMenu is displayed
  • 18524 Missing Tatar CultureInfo tt and tt-RU
  • 18530 Mono Interpreter Losses some Command Line Arguments to Microbenchmarks
  • 18554 [autotools] Weak -mminimal-toc testing causes fallthrough
  • 18560 [2019-12] [iOS] [armv7] undefined symbol ___multi3 on Release (LLVM) Bump external/llvm-project to 2ca761dc8b83a75ad950f468fb68e764e61d9cfa (#20365)
  • 18572 Performance regression since Switch to CharUnicodeInfo from corefx
  • 18584 [wasm][debugger] DebugProxy Faults on Refresh w/ JS Breakpoints
  • 18612 [ios][32bits] Assertion at /Users/builder/jenkins/workspace/archive-mono/2019-12/ios/release/mono/mini/aot-runtime.c:5237, condition `plt_entry’ not met
  • 18646 [wasm] Blazor - CSB iOS 13.3 “Maximum call stack size exceeded” error is still happening.
  • 18675 Failure to build with AOT disabled
  • 18794 [coop] assertion when socket_transport_send called from the crash reporter
  • 18826 codesigned mkbundled executable never ends with xmonkeysloveplay
  • 18827 bug-10127.exe runtime test hangs on Windows C++
  • 18917 Explicit interface property ignored when there is a default implementation
  • 19005 Console finalized before any objects writing to it have finished
  • 19009 Crash in mono_create_specific_trampoline on iOS 64-bit/32-bit + tvOS
  • 19136 [merp] Unnecessary call to msync in mono_state_free_mem
  • 19377 Request: please make mono_type_get_name_full a public symbol
  • 19389 [iOS] libmonosgen-2.0.a is leaking symbols
  • 19393 [sdks] runtime doesn’t link with Xcode 11.4 due to weak import symbol ___darwin_check_fd_set_overflow
  • 19451 WatchOS: HttpClient.PostAsync throws “System.NotSupportedException: This method contains IL not supported when compiled to bitcode”
  • 19492 Debugger crash when inspecting element
  • 19784 Running llvm/build.mk in a WSL environment will segfault
  • 19860 mac/iOS: SIGSEGV will hang the process, not terminate it
  • 20107 Sigsegv in libmacho.dylib getsectbynamefromheader_64
  • 20138 Segmentation fault when AOTing customer application
  • 20275 Xamarin.Android Designer Crashes with mono/mono/2020-02@66e2b840
  • 20490 [Bug] The app crash with native exception when changing visibility of Grid
  • 20533 Unknown opcode float_conv_to_i when building Xamarin.iOS project with FSharp.Core 5.0.0 dll
  • 8709 ProfilerTests.MonitorEventsAreRecorded and ProfilerTests.HeapshotDataIsValid are flaky
  • 8806 gdb warns about our llvm6.0 fullaot dwarf data (linux) Emit DWARF debug_abbrev offset for compile units as a label instead of 0 (#19794)
  • 9726 DataGridViewImageColumn ImageLayout property zoom doesn’t work
  • Contributors:
  • Abrevet-dev, Adrian, Aleksey Kliger (λgeek), Alexander Köplinger, Alexis Christoforides, Alex Soto, Alex Thibodeau, Ankit Jain, Bernhard Urban-Forster, Calvin Buckley, Cody Russell, Di Wu, EgorBo, Egor Bogatov, Evgenii Stepanov, Fan Yang, felixdoerre, imhameed, Jay Krell, Jérôme Laban, Johan Lorensson, Jonathan Chambers, Jonathan Nagy, Jonathan Peppers, Jo Shields, Karl, Kenneth Pouncey, Larry Ewing, Maher Jendoubi, Marek Safar, Marius Ungureanu, Martin Baulig, Matt Sylvia, Maxim Lipnin, mdh1418, Nathan Ricci, Nikita Voronchev, Nikolay Sivov, Phil Jaenke, Pranav K, Radek Doulik, Ryan Lucia, Sam Patel, Steffen Kieß, Steve Pfister, Thays Grazia, Vincent Povirk, Vlad Brezae, Zoltan Varga

New in Mono for Windows 6.10.0.56 Preview (Jan 24, 2020)

  • WebAssembly:
  • We continue to work on making our WebAssembly support better. Various sets of issues have been resolved in this release and general performance and feature work is happening as well.
  • Community improvements for AIX/PASE and Haiku:
  • The ports for these systems received a bunch of improvements from community contributor Calvin Buckley (@NattyNarwhal).
  • CoreFX integration:
  • We continued to replace some of our classes with the implementation from CoreFX to improve performance and compatibility with .NET.

New in Mono for Windows 6.10.0.54 Preview (Jan 22, 2020)

  • In Depth:
  • Runtime:
  • WebAssembly:
  • We continue to work on making our WebAssembly support better. Various sets of issues have been resolved in this release and general performance and feature work is happening as well.
  • Community improvements for AIX/PASE and Haiku:
  • The ports for these systems received a bunch of improvements from community contributor Calvin Buckley (@NattyNarwhal).
  • Class Libraries:
  • CoreFX integration:
  • We continued to replace some of our classes with the implementation from CoreFX to improve performance and compatibility with .NET.

New in Mono for Windows 6.8.0.80 Preview (Dec 19, 2019)

  • Resolved Issues:
  • 7377 [Mono.Debugger.Soft] Connections are not properly closed
  • 10641 New arm64_32 architecture (watchOS 5) [arm64_32] make “Debug Mode” work on Watch series 4 with –interpreter
  • 12421 Task calls SynchronizationContext.Post on cancelling
  • 12586 DataContractSerializer is not available
  • 12917 [Blazor] IL Linker not working correctly with IQueryable extensions
  • 14080 condition ‘ji’ not met, with ‘dynamic’ and multithreading
  • 14725 mono 5.20 hangs when called from native thread
  • 14772 Null Pointer Exception after debugger pauses and then continues
  • 15261 [iOS][Tests] There are a number of System.Numeric tests that fail on iOS 32b devices
  • 15262 [iOS][Tests] A number of linq tests fail on iOS 32b devices
  • 15263 [iOS][Tests] A number of tests from Microsoft.CSharp fail on iOS 32b devices.
  • 15307 [iOS][Tests] Several corelib tests crash on iOS32b devices.
  • 15308 [netcore] Make OverlappedTests.PackNegTest Pass
  • 15310 [netcore] Make OverlappedTests.UnPackTest Pass
  • 15646 MERP indefinitely hangs on application quit
  • 15687 [debugger] Update client thread frames after SetIP.
  • 15805 Mono.Net.Security.MonoTlsStream: Crash when stream appears to have already been disposed
  • 15931 1024 hard limit of open file descriptors
  • 15992 Mono crashes during precompiling dll in fullaot mode
  • 15994 Coverity: derefenrecing null in profiler (CID: 1307043) Skip degenerate qsort: num < 2, size == 0, base == 0
  • 15999 [mini] run regression tests with fullaot+llvm
  • 16010 typeof(object).GetMember(“”) does not return an empty array
  • 16024 Native crash in ves_icall_System_Net_Sockets_Socket_Connect_internal
  • 16032 IOException: Sharing violation on path …
  • 16046 [netcore] AOT with unresolved dependencies hits asserts
  • 16122 VS 16.2.0 regression: CopyToAsync from DeflateStream to GzipStream throws NotImplementedException
  • 16172 Interpreter stack size is too large
  • 16192 Embedded Mono hangs when using native threads
  • 16308 Change netcore package to be using release builds
  • 16310 LLVM: ““.AsSpan()[0] doesn’t throw IndexOutOfRangeException
  • 16319 [wasm] Timers do not fire when run inside WebWorkers.
  • 16369 Relocations in .text on arm
  • 16380 [netcore] Regession with AOTed System.Private.CoreLib
  • 16381 [llvm] Assertion: should not be reached at mini-llvm.c:7104
  • 16395 [Mobile] DateTime.Now returns incorrect local time for one hour after entering DST in 39 locales.
  • 16411 JitTests.Float fails on iOS devices in release mode on 2019-08
  • 16415 Timezone data not handled correctly on FreeBSD
  • 16460 System.IO.Path.GetFullPath(“\.pipepipename”): different results on Mono and .NET
  • 16486 FileSystemEventArgs.FullPath throws ArgumentNullException
  • 16605 make distclean fails after build w/ embedded zlib
  • 16616 [netcore] Vector.CopyTo w/ LLVM emits wrong exception
  • 16626 [WinForms] ControlBox property didn`t hide Close button and icon
  • 16689 [merp] missing data in crashing reporting json native frames
  • 16701 C# REPL Unusable on Mono 6 / Ubuntu 19
  • 16709 Disposing the FileSystemWatcher does not close associated file descriptors
  • 16712 SIGSEGV in mono_class_setup_vtable_general
  • 16742 Date.Time parse issue (year 1948) Avoid creating un-representable DateTime for transition point
  • 16759 Stream.ReadAsync continues on different thread
  • 16803 mono_gc_finalize_notify spinning after process exit
  • 16808 LLVM failed for String.GetHashCode
  • 16819 [coop][interp] mono_threads_enter_gc_safe_region Cannot transition thread 0x1952b000 from STATE_BLOCKING with DO_BLOCKING
  • 16824 Crash when debugging iOS application that throws on DispatchQueue
  • 16864 [arm64_32] fix remaining regression tests
  • 16876 [Wasm] Switch to PNSE FileWatcher & Exclude Tests
  • 16879 [Wasm] Determine if System.Net.Http.UnitTests Failures are Relevant
  • 16918 XmlSerializer Deserializing Property with same name as its enum type no longer works
  • 16943 LLVM: recursive calls have overhead in JIT mode
  • 16950 Starting in Mono 6.0 (2019-02), NotImplementedException prevents using StreamWriter with GZipStream for encodings that use a preamble
  • 16974 File.GetCreationTimeUtc() returns the time last modified, not time created
  • 17004 [merp] crash reports have Darwin kernel version in OSVersion field
  • 17017 Out of bounds unhandled exception
  • 17038 [wasm][xunit tests] RemoteExecutorTests.RemoteInvokeWritesToFile fails
  • 17040 [wasm][xunit tests] System.Net.Security.Tests.SslStreamAlpnTests - MissingMethodException: Default constructor not found
  • 17083 Regression: when debugger encounters a not-unhandled exception, it stops and shows “Dns.cs file not found” (Dns being the BCL class used)
  • 17084 Marshalling managed exception contains cut off stacktraces
  • 17133 SystemNative_CopyFile() call to fchmod() introduced in Mono 6.0 is not compatible with the external storage location on some Android OS versions and devices
  • 17139 mono_aot_register_module conflicting definitions
  • 17151 DriveInfo return empty space for system volume on MacOS 10.15 Catalina
  • 17180 [merp] mono_summarize_unmanaged_stack tries to take a lock while calling decode_exception_debug_info
  • 17278 System.BadImageFormatException when reflecting on BCL shipped with Mono
  • 17334 mono_magic_trampoline being called more than expected
  • 17335 Investigate heavy stack from System_Threading_Interlocked_Exchange_T_REF_T_REF__T_REF
  • 17419 [merp] generate a crash report if process is killed with SIGTERM
  • 17549 Debugging ‘async Task Name()' method makes app crash
  • 17569 Await within method with return type Task makes debugging fail
  • 17665 AOT + System.Reflection.Emit + ConstructorInfo doesn’t work as expected
  • 17687 [Regression] Profiler’s calls log SIGABRTs when using GDI+ loader
  • 17718 Delegate does not invoke target virtually
  • 17737 Q: is using loader lock for domain seq_points access correct? (mono runtime) [runtime] Fix locking in mono_get_seq_points ().
  • 17790 [merp] SendMicrosoftTelemetry icall doesn’t do any MERP logging when inducing a Managed Crash
  • 17833 threadpool hang due to unlimited hill climbing
  • 17878 Deadlock in GC during bridge callback from native thread on Android
  • 17924 Mtouch argument interpreter crashes EntityFrameworkCore 3.0 iOS app
  • 17926 [Bug] Segmentation Fault receiving message on WatchOS with debugger attached
  • 17931 Native linking fails for armv7s
  • 18011 [embedding] Chaining Mach exceptions to Mono signals using utility threads

New in Mono for Windows 6.6.0.157 Preview (Nov 26, 2019)

  • Runtime:
  • Improved reliability of the Mono Crash Reporter:
  • When Mono crashes it tries to dump a stack trace and other useful info to give developers a way to look into the issue. The crash reporter is now more reliable in certain edge cases.
  • WebAssembly:
  • We continue to work on making our WebAssembly support better. Various sets of issues have been resolved in this release and general performance and feature work is happening as well.
  • Community improvements for AIX/PASE and Haiku:
  • The ports for these systems received a bunch of improvements from community contributor Calvin Buckley (@NattyNarwhal).
  • Class Libraries:
  • CoreFX integration:
  • We continued to replace some of our classes with the implementation from CoreFX to improve performance and compatibility with .NET.
  • Tools:
  • .NET 4.8 reference assemblies:
  • We added reference assemblies for the .NET Framework 4.8 profile. This allows you to build libraries that target .NET 4.8 with MSBuild.
  • Resolved Issues:
  • #7377 [Mono.Debugger.Soft] Connections are not properly closed
  • #8747 FileSystemWatcher calls event after it is Disposed
  • #9621 64 bit cross compilers targeting 32 bit platforms
  • #9664 DateTime.Now or Timezone information do not transition out of DST for all time zones
  • #9706 Dead code eliminator has infinite loop
  • #10641 New arm64_32 architecture (watchOS 5)
  • #10645 WebException is thrown when reading from WebException.Response.GetResponse() stream
  • #10748 Mono.Posix: Syscall.chown has incorrect signature
  • #10848 IsAssignableFrom issue with non-generic interface array
  • #12141 Too many supportedRuntime tags in exe.config file cause problems on Windows
  • #12421 Task calls SynchronizationContext.Post on cancelling
  • #13311 [sdb] Failure to suspend
  • #13408 [sdb] SetIP requires a resume/suspend to update client thread frames
  • #13412 Bump netstandard.dll assembly version to 2.1
  • #13445 Fork regression in Mojave due to MAP_JIT
  • #13804 [MacSDK] pkg-config is 32-bit only
  • #13813 sertion at mono-threads.c:1031, condition `info’ not met
  • #13891 MonoAssembly/MonoImage multi-domain (and ALC) correctness
  • #13923 [DIM] [CoreCLR Test] boring not working
  • #13945 TransactionScope ignores specified IsolationLevel and causes Serializable transactions to be used
  • #14080 condition ‘ji’ not met, with ‘dynamic’ and multithreading
  • #14170 “Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)” after debugger pauses and then continues on nested exception
  • #14181 Pango modules.cache contains jenkins builder path
  • #14214 HttpClient.SendAsync() with > 2 GB response body.
  • #14215 Suggestion: switch to 7z native format instead of ZIP for Mono archives
  • #14243 [Wasm] Assertion at mini-llvm.c:2106, condition clause->flags == MONO_EXCEPTION_CLAUSE_NONE || clause->flags == MONO_EXCEPTION_CLAUSE_FINALLY || clause->flags == MON#O_EXCEPTION_CLAUSE_FAULT not met
  • #14377 Document/fix functions currently not doing GC safe enter/exit around blocking OS API calls.
  • #14495 Use of reabstraction of default interface methods causes System.TypeLoadException: VTable setup of type failed
  • #14555 [runtime] Pointers are not Objects
  • #14724 eglib g_shell_parse_argv() treats in ‘ quote differently from glib
  • #14729 interpreter tests fail on iOS and tvOS for mscorlib tests
  • #14787 Epic: CoreFX tests execution on MonoVM
  • #14792 [sdks][ios] Perform the appropriate cast of objc_msgSend and friends
  • #14793 Mono-Native not working on MacOS Catalina
  • #14809 Cannot box IsByRefLike type 'System.ReadOnlySpan'1' in Forms designer tests with 6.0
  • #14830 [netcore]Implement AssemblyLoadContext.InternalLoad
  • #14839 [xamarin] TimeZoneInfo.Local always returns “Local” name
  • #14841 opt: Unknown command line argument ‘-place-safepoints’ in XI 2019-06 integration
  • #14847 [interp] fix test failures of xtest-System.Runtime.Tests
  • #14864 [corlib] Mark PropertyInfo [Serializable]
  • #14871 [wasm] System.Text.Json struct serialization fails (but works on CoreCLR)
  • #14872 System.Runtime.CompilerServices.UnsafeTests.ReadWriteDoublePointer test failure on devices in Xamarin.iOS
  • #14917 [netcore] Make System.Linq.Expressions.Tests.BindTests.GlobalField Pass
  • #14940 [Wasm] WebAssembly.Net.Http.HttpClient fails under AOT
  • #14945 [netcore] Make System.Linq.Expressions.Tests.ConvertCheckedTests.ConvertCheckedDoubleToULongTest Pass
  • #14946 [netcore] Make System.Linq.Expressions.Tests.ConvertCheckedTests.ConvertCheckedDoubleToNullableULongTest Pass
  • #14948 [netcore] Make System.Linq.Expressions.Tests.ConvertCheckedTests.ConvertCheckedNullableDoubleToULongTest Pass
  • #14957 [bockbuild] Non-git sources (like Nuget) don’t have their cache invalidated properly
  • #14959 [netcore] Make System.SpanTests.SpanTests.MemoryMarshal_GenericStaticReturningSpan Pass
  • #14971 File.Move no longer moves dangling symlinks properly on macOS systems
  • #14972 Xamarin.iOS: System.ExecutionEngineException: Attempting to JIT compile method ‘(wrapper delegate-begin-invoke) System.IAsyncResult System.Func`2<ExecutionEngineExceptionTest.AppDelegate, bo#ol>:begin_invoke_IAsyncResult__this___T_AsyncCallback_object (ExecutionEngineExceptionTest.AppDelegate,System.AsyncCallback,object)’
  • #14975 Mono profiler crashes when running IDE leak tests for VSMac
  • #15023 [netcore] Make System.Reflection.Tests.GetTypeTests.GetType_EmptyString Pass
  • #15048 [aot] Duplicate .fnstart Directive Compiler Error
  • #15058 [2019-06][iOS] Several tests on iOS fail on a 32b device
  • #15080 [netcore] Make System.Reflection.Tests.TypeInfoTests.IsAssignableFrom Pass
  • #15182 [netcore] Make System.Diagnostics.Tests.StackTraceTests.Ctor_Exception_SkipFrames Pass
  • #15188 [netcore] Make System.Diagnostics.Tests.StackTraceTests.Ctor_Exception_SkipFrames_FNeedFileInfo Pass
  • #15189 [netcore] System.Drawing.Drawing2D.Tests.ColorBlendTests.Ctor_LargeCount_ThrowsOutOfMemoryException
  • #15247 ves_icall_TypeBuilder_create_runtime_class_raw USED 132 handles
  • #15261 [iOS][Tests] There are a number of System.Numeric tests that fail on iOS 32b devices
  • #15262 [iOS][Tests] A number of linq tests fail on iOS 32b devices
  • #15263 [iOS][Tests] A number of tests from Microsoft.CSharp fail on iOS 32b devices.
  • #15265 [watchOS][Tests] The System_xunit-test.dll for watchOS includes tests that should be ignored
  • #15268 [debugger] Add intrinsic for creating a byte array
  • #15307 [iOS][Tests] Several corelib tests crash on iOS32b devices.
  • #15324 [netcore] Make System.Reflection.Emit.Tests.DynamicMethodctor1.ByRefReturnType_DoesNotThrow Pass
  • #15328 [MacOS][Tests] Several tests fail due to a System.IO exception
  • #15329 [MacOS Modern][Tests] System.IO.AnonymousPipe tests are included when they are not supported.
  • #15330 Runtime deadlock
  • #15336 [netcore] Make System.Reflection.Tests.IdentityTests.ParameterEquality2 Pass
  • #15337 [netcore] Make System.Reflection.Tests.TypeTests_GetMember.TestCaseInsensitive1 Pass
  • #15338 [netcore] Make System.Reflection.Tests.TypeTests_StructLayoutAttribute.Test_ExplicitAutoEightFortyTwo Pass
  • #15341 [netcore] Make System.Reflection.Tests.TypeTests_HiddenEvents.GetEventHidesEventsBySimpleNameCompare Pass
  • #15342 [netcore] Make System.Reflection.Tests.TypeInfoDeclaredNestedTypeTests.* Pass
  • #15343 [netcore] Make System.Reflection.Tests.TypeTests_PrefixingOnlyAllowedOnGetMember.TestGetMemberAll Pass
  • #15345 [netcore] Make System.Reflection.Tests.TypeTests_HiddenMethods.GetMethodDoesNotHideHiddenMethods Pass
  • #15346 [netcore] Make System.Reflection.Tests.TypeTests_HiddenProperties.GetPropertyHidesPropertiesByNameAndSigAndCallingConventionCompare Pass
  • #15347 [netcore] Make System.Reflection.Tests.AssemblyTests.CrossAssemblyTypeRefToNestedType Pass
  • #15348 [netcore] Make System.Reflection.Tests.TypeTests_HiddenFields.GetFieldDoesNotHideHiddenFields Pass
  • #15351 [netcore] Make System.Reflection.Tests.TypeTests_HiddenTestingOrder.HideDetectionHappensAfterPrivateInBaseClassChecks Pass
  • #15365 [wasm][framework] Review framework linker descriptions
  • #15441 “pos undeclared” compilation error
  • #15446 [wasm][debugger] display variable in scope
  • #15503 Fix zlib linkage on mingw/msvc builds.
  • #15541 Interpreter doesn’t preserve last error on P/Invoke in MinGW builds
  • #15551 [wasm] generic constraint failure
  • #15556 [sdb] Invocation issue with fixed buffers
  • #15596 [netcore] JitHelpers.EnumEquals and EnumCompareTo are not implemented for Interpreter
  • #15646 MERP indefinitely hangs on application quit
  • #15691 Clear last error for SetLastError=true P/Invoke
  • #15692 Catching IndexOutOfRange doesn’t provide message
  • #15734 [wasm][sdk] Failed package if ENABLE_WASM_THREADS is not active
  • #15740 The wcf don’t allow PUT, DELETE or OPTIONS.
  • #15751 Memory leak in mono 6.0.0.313 for delegates with target that are passed to native code
  • #15760 TypeLoadException thrown for recursive type that .NET allows
  • #15781 MERP Crash Test Can Never Fail
  • #15794 conv.r.un with float argument causes segfault
  • #15825 DeflateStream leaks native memory if not explicitly disposed
  • #15853 Marshal.Release(IntPtr.Zero) throws ArgumentException on Mono, ArgumentNullException on CLR
  • #15878 Crash in mono_coop_mutex_lock while running VS for Mac
  • #15887 [regression] File.GetLastWriteTime fails with specific (GMT+8) timezone
  • #15931 1024 hard limit of open file descriptors
  • #15990 possible floating point regression on ppc
  • #15999 [mini] run regression tests with fullaot+llvm
  • #16010 typeof(object).GetMember(“”) does not return an empty array
  • #16024 Native crash in ves_icall_System_Net_Sockets_Socket_Connect_internal
  • #16032 IOException: Sharing violation on path …
  • #16369 Relocations in .text on arm
  • #16395 [Mobile] DateTime.Now returns incorrect local time for one hour after entering DST in 39 locales.
  • #16411 JitTests.Float fails on iOS devices in release mode on 2019-08
  • #16486 FileSystemEventArgs.FullPath throws ArgumentNullException
  • #16570 Crash on GetParameters() with UnmanagedType.LPArray in dynamic assembly
  • #16689 [merp] missing data in crashing reporting json native frames
  • #16709 Disposing the FileSystemWatcher does not close associated file descriptors
  • #16712 SIGSEGV in mono_class_setup_vtable_general
  • #16759 Stream.ReadAsync continues on different thread
  • #16803 mono_gc_finalize_notify spinning after process exit
  • #16824 Crash when debugging iOS application that throws on DispatchQueue
  • #16864 [arm64_32] fix remaining regression tests
  • #16918 XmlSerializer Deserializing Property with same name as its enum type no longer works
  • #16974 File.GetCreationTimeUtc() returns the time last modified, not time created
  • #17004 [merp] crash reports have Darwin kernel version in OSVersion field
  • #17083 Regression: when debugger encounters a not-unhandled exception, it stops and shows “Dns.cs file not found” (Dns being the BCL class used)
  • #17151 DriveInfo return empty space for system volume on MacOS 10.15 Catalina
  • #17180 [merp] mono_summarize_unmanaged_stack tries to take a lock while calling decode_exception_debug_info

New in Mono for Windows 5.20.1.0 (Apr 2, 2019)

  • Resolved Issues:
  • #10000 - Type.IsSubclassOf Performance Regression
  • #10031 - unhandled-exception-2.exe crashes crash reporting
  • #10035 - BinaryReaderTest.ReadBytesException and BinaryReaderTest.ReadCharsException fail on FullAOT+LLVM after hybrid suspend change
  • #10070 - recent string loading changes break big endian with mojibake
  • #10143 - Process.GetProcessesByName Memory Leak, Not Disposing Filtered Process Objects
  • #10144 - Generic with “unmanaged” constraint crashes runtime
  • #10227 - ProductHeaderValue parser throws exception for empty values
  • #10243 - opt and llc missing from mono 2018-08 pkg
  • #10244 - [wasm] Make test.js use generated driver and bindings.
  • #10303 - Latest mono on macOS broke Xamarin Studio 5 compatibility: Marshal.SizeOf reports type 0x01 not handled
  • #10309 - Mono issuing SIGSEGV running C# Semantic Tests
  • #10412 - Native crash when debugging with exception watchpoint
  • #10441 - FullAOT LLVM Linux x64 one flaky failure.
  • #10446 - [ WASM ]Build fail host error
  • #10448 - [iOS] CalendarTest.Hijri and CalendarTest.UmAlQura fail
  • #10467 - mono_thread_info_exit ignores exit_code and just passes 0 on.
  • #10483 - iOS cannot save Entity models with Nullable Guid (Guid?) property types (among others) using EF Core 2.1.2.
  • #10488 - HttpWebRequest throws an uncatchable task exception when processing requests simultaneously with timeout specified
  • #10506 - Update CI build scripts to not hardcode -j4
  • #10549 - Wrong characters in decimal number representation on s390x
  • #10598 - Many scary “Your mono runtime and class libraries are out of sync” mono warnings when building for device
  • #10603 - [wasm] Stop using mmap for loading assemblies
  • #10620 - [wasm] Rename sdks WebAssembly framework libraries
  • #10682 - [wasm] Build fails - ninja can not be found.
  • #10735 - mono64[80780:1186894] error: * Assertion: should not be reached at debugger-agent.c:6619
  • #10802 - mono_jit_init on macOS 10.14 has graphics corruption due to mprotect invocation
  • #10834 - Error loading generic override of in parameter
  • #10863 - Possible GC hang while building msbuild with mono/2018-08 and mono/master
  • #11123 - Type.IsSubclassOf throws TypeLoadException
  • #11138 - Hybrid suspend: mono_add_internal_call is broken
  • #11146 - Unhandled exception at the end of MonoDevelop.UnitTesting.Tests test run
  • #11202 - Mac installer does not always clear out old files
  • #11214 - SDK ‘Microsoft.NET.Sdk.Razor’ not found
  • #11303 - ParameterInfo.[Raw]DefaultValue returns Missing.Value for non-null default values of DateTime? and decimal? parameters
  • #11317 - Unexpected behaviour of DateTime.ToString with Korean language on iOS/Android
  • #11378 - [WASM AOT] Method returning a ValueType is not returning its value as a value
  • #11441 - HttpClient requests not cancelled in Dispose()
  • #11478 - [XA] [2018-10] Failure in PropertyInfoTests.GetValue_Invalid
  • #11479 - Loading assembly generated using tlbimp.exe give error in mono runtime
  • #11489 - IronPython 2.7.9 strange issue on mono 5.16
  • #11613 - AOT crash: error: * Assertion: should not be reached at ../../../../../mono/mini/mini-arm64-gsharedvt.c:119
  • #11874 - watchOS: mini test failure in release mode: JitTests.Aot : System.Reflection.TargetInvocationException
  • #11956 - os-event-unix.c:82 assert(event) failure
  • #11965 - [iOS/32bit/device] mscorlib test failures: DoubleFormatterTest.TestFormatStringsN# and DoubleTest.LongLongValueRoundtrip
  • #12069 - MethodInfo.ReturnParameter.IsDefined(type) throws IndexOutOfRangeException
  • #12130 - [watchOS] MT3001: Could not AOT the assembly mscorlib.dll
  • #12235 - Crash while profiling roslyn compiler server
  • #12344 - FastCopy may silently fail to do anything
  • #12362 - Problem with DefaultValueAttribute and Color values
  • #12421 - Task calls SynchronizationContext.Post on cancelling
  • #12461 - ReflectionModelServices.IsExportFactoryImportDefinition should not throw
  • #12724 - xtro-sharpie.exe crashes with “Cannot transition thread 0x10c3ef5c0 from STATE_BLOCKING with DO_BLOCKING”
  • #12747 - System.Reflection.Emit.ParameterBuilder.SetCustomAttribute() throws undocumented ArgumentOutOfRangeException
  • #12831 - [iOS] Generic sharing with long float arguments list
  • #12881 - MonoDevelop SDB regressions
  • #6352 - Bug in TextRenderer.DrawText on Linux
  • #7087 - Calling TcpListener.Create(int port) on multiple threads can fail
  • #8225 - Mono mkbundle output executable throws: “Error mapping file: No error”
  • #8486 - struct with 3 bytes not marshaled correctly with LLVM on watchOS
  • #8575 - GetCustomAttributes on a type from an assembly in the LoadFile context fails
  • #8689 - Memory leak in HttpWebRequest / HttpWebResponse when using a WebProxy
  • #8766 - Starting process with empty ProcessStartInfo.Environment incorrectly inherits all variables
  • #8848 - Error when debugging
  • #9028 - Mono to SQL Server using integrated security no longer works on iOS
  • #9089 - WaitHandle.WaitAny returns invalid result
  • #9418 - SslStream.AuthenticateAsClient throws wrong exception types
  • #9532 - Mono.Unix.Native.Syscall.sys_strerror_r SEGFAULT on musl libc
  • #9566 - flaky runtime.finalizer-exception.exe (Assertion at unwind.c:640, condition `cfa_reg != -1’ not met)
  • #9581 - Update macOS minimal version
  • #9839 - Behaviour difference between Mono and CoreCLR
  • #9870 - iOS: 32-bit device unit test failure: [FAIL] FSharpTest.SprintfTest : Expected: True
  • #9935 - tests/src/baseservices/threading/readerwriterlockslim/upgrader.cs CoreCLR acceptance-test fails
  • #9941 - WASM: Use BrowserHttpMessageHandler when available
  • #9943 - System.Reflection.Assembly.LoadFile should throw ArgumentException for relative path name
  • #9947 - AOT images compiled with safepoints should be usable with MONO_THREADS_SUSPEND=preemptive
  • #9951 - cross build regressed wrt System.Native and “shm_open that works well enough with mmap”
  • #9973 - Update framework facades list used by loader
  • Bugzilla 43447 - SynchronizedCollection.Add throws an ArgumentOutOfRangeException

New in Mono for Windows 5.20.0.228 Preview (Feb 27, 2019)

  • Resolved Issues:
  • #10000 - Type.IsSubclassOf Performance Regression
  • #10031 - unhandled-exception-2.exe crashes crash reporting
  • #10035 - BinaryReaderTest.ReadBytesException and BinaryReaderTest.ReadCharsException fail on FullAOT+LLVM after hybrid suspend change
  • #10070 - recent string loading changes break big endian with mojibake
  • #10143 - Process.GetProcessesByName Memory Leak, Not Disposing Filtered Process Objects
  • #10144 - Generic with “unmanaged” constraint crashes runtime
  • #10227 - ProductHeaderValue parser throws exception for empty values
  • #10243 - opt and llc missing from mono 2018-08 pkg
  • #10244 - [wasm] Make test.js use generated driver and bindings.
  • #10303 - Latest mono on macOS broke Xamarin Studio 5 compatibility: Marshal.SizeOf reports type 0x01 not handled
  • #10309 - Mono issuing SIGSEGV running C# Semantic Tests
  • #10412 - Native crash when debugging with exception watchpoint
  • #10441 - FullAOT LLVM Linux x64 one flaky failure.
  • #10446 - [ WASM ]Build fail host error
  • #10467 - mono_thread_info_exit ignores exit_code and just passes 0 on.
  • types (among others) using EF Core 2.1.2.
  • #10488 - HttpWebRequest throws an uncatchable task exception when processing requests simultaneously with timeout specified
  • #10506 - Update CI build scripts to not hardcode -j4
  • #10549 - Wrong characters in decimal number representation on s390x
  • #10598 - Many scary “Your mono runtime and class libraries are out of sync” mono warnings when building for device
  • #10603 - [wasm] Stop using mmap for loading assemblies
  • #10620 - [wasm] Rename sdks WebAssembly framework libraries
  • #10682 - [wasm] Build fails - ninja can not be found.
  • #10735 - mono64[80780:1186894] error: * Assertion: should not be reached at debugger-agent.c:6619
  • #10802 - mono_jit_init on macOS 10.14 has graphics corruption due to mprotect invocation
  • #10834 - Error loading generic override of in parameter
  • #10863 - Possible GC hang while building msbuild with mono/2018-08 and mono/master
  • #11123 - Type.IsSubclassOf throws TypeLoadException
  • #11138 - Hybrid suspend: mono_add_internal_call is broken
  • #11146 - Unhandled exception at the end of MonoDevelop.UnitTesting.Tests test run
  • #11202 - Mac installer does not always clear out old files
  • #11214 - SDK ‘Microsoft.NET.Sdk.Razor’ not found
  • #11303 - ParameterInfo.[Raw]DefaultValue returns Missing.Value for non-null default values of DateTime? and decimal? parameters
  • #11378 - [WASM AOT] Method returning a ValueType is not returning its value as a value
  • #11441 - HttpClient requests not cancelled in Dispose()
  • #11478 - [XA] [2018-10] Failure in PropertyInfoTests.GetValue_Invalid
  • #11479 - Loading assembly generated using tlbimp.exe give error in mono runtime
  • #11489 - IronPython 2.7.9 strange issue on mono 5.16
  • #11613 - AOT crash: error: * Assertion: should not be reached at ../../../../../mono/mini/mini-arm64-gsharedvt.c:119
  • #11874 - watchOS: mini test failure in release mode: JitTests.Aot : System.Reflection.TargetInvocationException
  • #11956 - os-event-unix.c:82 assert(event) failure
  • DoubleFormatterTest.TestFormatStringsN# and DoubleTest.LongLongValueRoundtrip
  • #12069 - MethodInfo.ReturnParameter.IsDefined(type) throws IndexOutOfRangeException
  • #12130 - [watchOS] MT3001: Could not AOT the assembly mscorlib.dll
  • #12235 - Crash while profiling roslyn compiler server
  • #12344 - FastCopy may silently fail to do anything
  • #12362 - Problem with DefaultValueAttribute and Color values
  • #12421 - Task calls SynchronizationContext.Post on cancelling
  • #12461 - ReflectionModelServices.IsExportFactoryImportDefinition should not throw
  • #12724 - xtro-sharpie.exe crashes with “Cannot transition thread 0x10c3ef5c0 from STATE_BLOCKING with DO_BLOCKING”
  • #12747 - System.Reflection.Emit.ParameterBuilder.SetCustomAttribute() throws undocumented ArgumentOutOfRangeException
  • #12881 - MonoDevelop SDB regressions
  • #6352 - Bug in TextRenderer.DrawText on Linux
  • #7087 - Calling TcpListener.Create(int port) on multiple threads can fail
  • #8225 - Mono mkbundle output executable throws: “Error mapping file: No error”
  • #8486 - struct with 3 bytes not marshaled correctly with LLVM on watchOS
  • #8575 - GetCustomAttributes on a type from an assembly in the LoadFile context fails
  • #8689 - Memory leak in HttpWebRequest / HttpWebResponse when using a WebProxy
  • #8766 - Starting process with empty ProcessStartInfo.Environment incorrectly inherits all variables
  • #8848 - Error when debugging
  • #9089 - WaitHandle.WaitAny returns invalid result
  • #9418 - SslStream.AuthenticateAsClient throws wrong exception types
  • #9532 - Mono.Unix.Native.Syscall.sys_strerror_r SEGFAULT on musl libc
  • #9566 - flaky runtime.finalizer-exception.exe (Assertion at unwind.c:640, condition `cfa_reg != -1’ not met)
  • #9581 - Update macOS minimal version
  • #9839 - Behaviour difference between Mono and CoreCLR
  • #9935 - tests/src/baseservices/threading/readerwriterlockslim/upgrader.cs CoreCLR acceptance-test fails
  • #9941 - WASM: Use BrowserHttpMessageHandler when available
  • #9943 - System.Reflection.Assembly.LoadFile should throw ArgumentException for relative path name
  • #9947 - AOT images compiled with safepoints should be usable with MONO_THREADS_SUSPEND=preemptive
  • #9951 - cross build regressed wrt System.Native and “shm_open that works well enough with mmap”
  • #9973 - Update framework facades list used by loader
  • Bugzilla 43447 - SynchronizedCollection.Add throws an ArgumentOutOfRangeException

New in Mono for Windows 5.20.0.200 Preview (Feb 10, 2019)

  • Class Libraries:
  • System.Data
  • The support for SSPI (Security Support Provider Interface) in System.Data assembly has been added. This allows users to connect to SQL servers using SSPI on macOS and Linux. On macOS, no additional dependencies are required whereas on Linux additional package (krb5) needs to be installed.

New in Mono for Windows 5.18.0.225 (Jan 5, 2019)

  • Resolved Issues:
  • #6352 - Bug in TextRenderer.DrawText on Linux
  • #7087 - Calling TcpListener.Create(int port) on multiple threads can fail
  • #8575 - GetCustomAttributes on a type from an assembly in the LoadFile context fails
  • #8689 - Memory leak in HttpWebRequest / HttpWebResponse when using a WebProxy
  • #8766 - Starting process with empty ProcessStartInfo.Environment incorrectly inherits all variables
  • #8848 - Error when debugging
  • #9028 - Mono to SQL Server using integrated security no longer works on iOS
  • #9089 - WaitHandle.WaitAny returns invalid result
  • #9532 - Mono.Unix.Native.Syscall.sys_strerror_r SEGFAULT on musl libc
  • #9566 - flaky runtime.finalizer-exception.exe (Assertion at unwind.c:640, condition `cfa_reg != -1’ not met)
  • #9581 - Update macOS minimal version
  • #9839 - Behaviour difference between Mono and CoreCLR
  • #9870 - iOS: 32-bit device unit test failure: [FAIL] FSharpTest.SprintfTest : Expected: True
  • #9935 - tests/src/baseservices/threading/readerwriterlockslim/upgrader.cs CoreCLR acceptance-test fails
  • #9941 - WASM: Use BrowserHttpMessageHandler when available
  • #9943 - System.Reflection.Assembly.LoadFile should throw ArgumentException for relative path name
  • #9947 - AOT images compiled with safepoints should be usable with MONO_THREADS_SUSPEND=preemptive
  • #9973 - Update framework facades list used by loader
  • #10000 - Type.IsSubclassOf Performance Regression
  • #10031 - unhandled-exception-2.exe crashes crash reporting
  • #10035 - BinaryReaderTest.ReadBytesException and BinaryReaderTest.ReadCharsException fail on FullAOT+LLVM after hybrid suspend change
  • #10070 - recent string loading changes break big endian with mojibake
  • #10143 - Process.GetProcessesByName Memory Leak, Not Disposing Filtered Process Objects
  • #10144 - Generic with “unmanaged” constraint crashes runtime
  • #10227 - ProductHeaderValue parser throws exception for empty values
  • #10243 - opt and llc missing from mono 2018-08 pkg
  • #10244 - [wasm] Make test.js use generated driver and bindings.
  • #10303 - Latest mono on macOS broke Xamarin Studio 5 compatibility: Marshal.SizeOf reports type 0x01 not handled
  • #10309 - Mono issuing SIGSEGV running C# Semantic Tests
  • #10412 - Native crash when debugging with exception watchpoint
  • #10441 - FullAOT LLVM Linux x64 one flaky failure.
  • #10446 - [ WASM ]Build fail host error
  • #10448 - [iOS] CalendarTest.Hijri and CalendarTest.UmAlQura fail
  • #10467 - mono_thread_info_exit ignores exit_code and just passes 0 on.
  • #10483 - iOS cannot save Entity models with Nullable Guid (Guid?) property types (among others) using EF Core 2.1.2.
  • #10488 - HttpWebRequest throws an uncatchable task exception when processing requests simultaneously with timeout specified
  • #10506 - Update CI build scripts to not hardcode -j4
  • #10549 - Wrong characters in decimal number representation on s390x
  • #10598 - Many scary “Your mono runtime and class libraries are out of sync” mono warnings when building for device
  • #10603 - [wasm] Stop using mmap for loading assemblies
  • #10620 - [wasm] Rename sdks WebAssembly framework libraries
  • #10682 - [wasm] Build fails - ninja can not be found.
  • #10802 - mono_jit_init on macOS 10.14 has graphics corruption due to mprotect invocation
  • #10863 - Possible GC hang while building msbuild with mono/2018-08 and mono/master
  • #11123 - Type.IsSubclassOf throws TypeLoadException
  • #11138 - Hybrid suspend: mono_add_internal_call is broken
  • #11146 - Unhandled exception at the end of MonoDevelop.UnitTesting.Tests test run
  • #11202 - Mac installer does not always clear out old files
  • #11214 - SDK ‘Microsoft.NET.Sdk.Razor’ not found
  • #11303 - ParameterInfo.[Raw]DefaultValue returns Missing.Value for non-null default values of DateTime? and decimal? parameters
  • #11378 - [WASM AOT] Method returning a ValueType is not returning its value as a value
  • #11441 - HttpClient requests not cancelled in Dispose()
  • #11478 - [XA] [2018-10] Failure in PropertyInfoTests.GetValue_Invalid
  • #11479 - Loading assembly generated using tlbimp.exe give error in mono runtime
  • #11613 - AOT crash: error: * Assertion: should not be reached at ../../../../../mono/mini/mini-arm64-gsharedvt.c:119
  • #11874 - watchOS: mini test failure in release mode: JitTests.Aot : System.Reflection.TargetInvocationException
  • Bugzilla 43447 - SynchronizedCollection.Add throws an ArgumentOutOfRangeException

New in Mono for Windows 5.16.0.179 (Oct 9, 2018)

  • Highlights:
  • Hybrid suspend
  • Client Certificate Support
  • C# 7.3 support
  • Resolved Issues:
  • #10000 - Type.IsSubclassOf Performance Regression
  • #10143 - Process.GetProcessesByName Memory Leak, Not Disposing Filtered Process Objects
  • #10309 - Mono issuing SIGSEGV running C# Semantic Tests
  • #10483 - iOS cannot save Entity models with Nullable Guid (Guid?) property types (among others) using EF Core 2.1.2.
  • #6173 - Periodic heapshot mode calculates time difference incorrectly
  • #6466 - System.Diagnostics.ProcessTest.Start1_FileName_NotFound failing on newer Ubuntu
  • #6647 - Jagged arrays cannot be cast to IList<>
  • #6834 - Frequent timing out of the ‘monitor-abort’ tests on CI
  • #6936 - Mono runtime doesn’t check modreqs for overriding methods
  • #7058 - [interp] pinvoke.exe is flaky
  • #7137 - Step in crashes debugger
  • #7247 - CoreFX System.Text namespace
  • #7260 - StackTrace.GetFrames() does not return frames from captured traces
  • #7305 - Stack overflow when hosting a WCF service when contract interface inherits other interfaces
  • #7356 - Memory leak in HttpWebRequest / HttpWebResponse
  • #7402 - [interp] fix System.Threading.ThreadTest.Test_Interrupt
  • #7525 - Profiler exception clause reporting is broken
  • #7610 - Add System.Memory facade
  • #7649 - Exception stacktrace is null when task delegate is created from local function
  • #7655 - Memory leak in file operations in mono 5.10
  • #7683 - Assertion at /Users/builder/data/lanes/5808/1c6f300e/source/xamarin-macios/external/mono/mono/profiler/log.c:546, condition `mono_lls_insert (&log_profiler.profiler_thread_list, hp, &thread->node) && “Why can’t we insert the thread in the LLS?”’ not met
  • #7685 - Assert ainfo->cinfo->stack_usage % MONO_ARCH_FRAME_ALIGNMENT == 0
  • #7716 - mono’s mscorlib.xml descriptor file seems incomplete for Xamarin.Mac
  • #7731 - MKBundle fails on Windows due to a folder check/missing folder
  • #7785 - Dead link (404) in a runtime execution engine exception
  • #7828 - Invalid instruction generated by regex runtime when using dapper
  • #7944 - CreateDelegate produces delegate wrapping incorrect method
  • #7947 - Missing forwarders from System.Runtime.Extensions
  • #8036 - Update API diff to ignore more attributes
  • #8074 - signing problems in preset fullaot build
  • #8089 - Add System.Drawing.Common facade for Xamarin profiles
  • #8112 - Wrong maximal instruction length of instruction tailcall_membase on ARM64
  • #8122 - CoreFX System.Xml.Linq
  • #8143 - CEE_STELEM for single token fails in wasm interp mode
  • #8149 - Assembly.LoadFile and Assembly.LoadFrom have same behavior
  • #8175 - Changing eglib doesn’t rebuild mono
  • #8177 - [wasm] master broken due to WASM-ERR: missing function: mono_debugger_agent_init
  • #8218 - SN fails when signing x64 assemblies
  • #8250 - assertion failure fullaot llvm System.Drawing.dll
  • #8267 - TimeZoneInfo.Local Id and DisplayName are always: Local
  • #8282 - [android] respect maximum length of a message when using __android_log_write ()
  • #8310 - FSharp build is broken due to new Path.GetFileName() overload
  • #8311 - bug-82022.exe fails in LLVM JIT
  • #8321 - Build break/test failures on FullAOT+LLVM configuration
  • #8329 - mono –interpreter got * Assertion at ..monominiinterpinterp.c:3557, condition `csig->call_convention == MONO_CALL_DEFAULT’ not met
  • #8340 - Issue with black text on console, possibly ncurses
  • #8356 - Hybrid suspend: backtrace in GC Unsafe mode considered harmful (on Linux)
  • #8372 - unload-appdomain-on-shutdown.exe flaky test
  • #8407 - TypeDescriptorTest.TestCreateDesigner and TestGetAttributes broken on FullAOT
  • #8409 - FullAOT test failures/crashes on arm64,armel or armhf
  • #8417 - Redirecting process output when Console.SetOut set gives strange output
  • #8422 - Ambiguous call Encoding.GetByteCount(char[], int, int) and Encoding.GetByteCount(string, int, int)
  • #8430 - Fails to compile without AOT (enable-minimal=profiler,debug,aot)
  • #8447 - ilasm can’t assemble vbbyrefstr parameters
  • #8469 - API/Project Files diff renderer stops at XML end comment –>
  • #8473 - ThreadPoolTests.PerformanceCounter_WorkItems fails occasionally
  • #8488 - Doesn’t compile with Clang on ARM64
  • #8572 - Build fails on Redhat 6.8 with GCC 4.4.7
  • #8575 - GetCustomAttributes on a type from an assembly in the LoadFile context fails
  • #8587 - configure.ac G_HAVE_ISO_VARARGS problems
  • #8597 - System.Reflection.Emit: ParameterBuilder.SetConstant(value) throws ArgumentException for nullable value typed parameters
  • #8623 - Complete the System.Memory types import
  • #8698 - csharp REPL can’t load pkg-config references interactively
  • #8701 - AOT failure if ref readonly with generics is used
  • #8712 - FileSystemWatcher only works for one instance
  • #8721 - System.Threading.Tasks.TaskFactoryTests.FromAsync_BeginCallback failing under XM with 2018-04
  • #8726 - Loading denied assemblies via Assembly.LoadFrom can cause issues, eg. for VSMac
  • #8759 - Build of Master fails with GCC 4.4.7
  • #8787 - ThreadPrincipalTests.PrincipalFlowsToAsyncTask failure on device
  • #8820 - [loader] Mono is too strict when checking for already loaded assemblies.
  • #8848 - Error when debugging
  • #8866 - jit profiler option crashes iOS apps
  • #8897 - “Microsoft.Managed.Core.targets” is missing from roslyn-binaries
  • #8915 - Using BinaryFormatter to deserialize an array in a struct in a parent class fails with unfriendly exception [reproducible test case i promise]
  • #8979 - configure script incorrectly assumes functions are available with some conditions
  • #9002 - ServiceControllerTest.cs is designed to fail.
  • #9023 - Two ValueType properties initialization inline fails in mono-wasm
  • #9031 - HttpWebRequest.EndGetRequestStream throws wrong exception on abort
  • #9033 - DynamicMethod creation fails with “method arguments are incompatible”
  • #9179 - CI build breakage for 2018-04, msbuild
  • #9234 - [System]: Renegotiation in AppleTls requires OS X 10.12+
  • #9277 - Cannot get the exit code from a non-child process on Unix (on Windows)
  • #9318 - watchOS: “fastcc” not supported with Xcode 10’s clang
  • #9753 - [loader] LoadFile from application base should load in default context
  • #9839 - Behaviour difference between Mono and CoreCLR
  • #9869 - iOS: mini test failure in release/llvm mode (JitTests.Math: Expected: 0 But was: 1)
  • #9870 - iOS: 32-bit device unit test failure: [FAIL] FSharpTest.SprintfTest : Expected: True
  • #9943 - System.Reflection.Assembly.LoadFile should throw ArgumentException for relative path name
  • #9996 - The type initializer for ‘System.Data.Entity.Core.Objects.ELinq.ExpressionConverter’ threw an exception. (regression in Mono 5.14)
  • Bugzilla 19436 - [eglib] GMarkup XML parser can’t handle hyphens underscores and periods in element names.
  • Bugzilla 23668 - System.Net.Http.Formatting should not contain Newtonsoft.Json
  • Bugzilla 26983 - Console properties might deadlock for background properties
  • Bugzilla 46917 - Incorrect validation checks in message formater
  • Bugzilla 60065 - Make exception marshaling work with system mono

New in Mono for Windows 5.16.0.160 Preview (Sep 17, 2018)

  • Type.IsSubclassOf Performance Regression
  • Process.GetProcessesByName Memory Leak, Not Disposing Filtered Process Objects
  • Mono issuing SIGSEGV running C# Semantic Tests
  • IOS cannot save Entity models with Nullable Guid (Guid?) property types (among others) using EF Core 2.1.2.
  • Periodic heapshot mode calculates time difference incorrectly
  • System.Diagnostics.ProcessTest.Start1_FileName_NotFound failing on newer Ubuntu
  • Jagged arrays cannot be cast to IList<>
  • Frequent timing out of the ‘monitor-abort’ tests on CI
  • Mono runtime doesn’t check modreqs for overriding methods
  • [interp] pinvoke.exe is flaky
  • Step in crashes debugger
  • CoreFX System.Text namespace
  • StackTrace.GetFrames() does not return frames from captured traces
  • Stack overflow when hosting a WCF service when contract interface inherits other interfaces
  • Memory leak in HttpWebRequest / HttpWebResponse
  • [interp] fix System.Threading.ThreadTest.Test_Interrupt
  • Profiler exception clause reporting is broken
  • Add System.Memory facade
  • Exception stacktrace is null when task delegate is created from local function
  • Memory leak in file operations in mono 5.10
  • Assertion at /Users/builder/data/lanes/5808/1c6f300e/source/xamarin-macios/external/mono/mono/profiler/log.c:546, condition `mono_lls_insert (&log_profiler.profiler_thread_list, hp, &thread->node) && “Why can’t we insert the thread in the LLS?”’ not met
  • Assert ainfo->cinfo->stack_usage % MONO_ARCH_FRAME_ALIGNMENT == 0
  • Mono’s mscorlib.xml descriptor file seems incomplete for Xamarin.Mac
  • MKBundle fails on Windows due to a folder check/missing folder
  • Dead link (404) in a runtime execution engine exception
  • Invalid instruction generated by regex runtime when using dapper
  • CreateDelegate produces delegate wrapping incorrect method
  • Missing forwarders from System.Runtime.Extensions
  • Update API diff to ignore more attributes
  • Signing problems in preset fullaot build
  • Add System.Drawing.Common facade for Xamarin profiles
  • Wrong maximal instruction length of instruction tailcall_membase on ARM64
  • CoreFX System.Xml.Linq
  • CEE_STELEM for single token fails in wasm interp mode
  • Assembly.LoadFile and Assembly.LoadFrom have same behavior
  • Changing eglib doesn’t rebuild mono
  • [wasm] master broken due to WASM-ERR: missing function: mono_debugger_agent_init
  • SN fails when signing x64 assemblies
  • Assertion failure fullaot llvm System.Drawing.dll
  • TimeZoneInfo.Local Id and DisplayName are always: Local
  • [android] respect maximum length of a message when using __android_log_write ()
  • FSharp build is broken due to new Path.GetFileName() overload
  • Bug-82022.exe fails in LLVM JIT
  • Build break/test failures on FullAOT+LLVM configuration
  • Mono –interpreter got * Assertion at ..monominiinterpinterp.c:3557, condition `csig->call_convention == MONO_CALL_DEFAULT’ not met
  • Issue with black text on console, possibly ncurses
  • Hybrid suspend: backtrace in GC Unsafe mode considered harmful (on Linux)
  • Unload-appdomain-on-shutdown.exe flaky test
  • TypeDescriptorTest.TestCreateDesigner and TestGetAttributes broken on FullAOT
  • FullAOT test failures/crashes on arm64,armel or armhf
  • Redirecting process output when Console.SetOut set gives strange output
  • Ambiguous call Encoding.GetByteCount(char[], int, int) and Encoding.GetByteCount(string, int, int)
  • Fails to compile without AOT (enable-minimal=profiler,debug,aot)
  • Ilasm can’t assemble vbbyrefstr parameters
  • API/Project Files diff renderer stops at XML end comment –>
  • ThreadPoolTests.PerformanceCounter_WorkItems fails occasionally
  • Doesn’t compile with Clang on ARM64
  • Build fails on Redhat 6.8 with GCC 4.4.7
  • GetCustomAttributes on a type from an assembly in the LoadFile context fails
  • Configure.ac G_HAVE_ISO_VARARGS problems
  • System.Reflection.Emit: ParameterBuilder.SetConstant(value) throws ArgumentException for nullable value typed parameters
  • Complete the System.Memory types import
  • Csharp REPL can’t load pkg-config references interactively
  • AOT failure if ref readonly with generics is used
  • FileSystemWatcher only works for one instance
  • System.Threading.Tasks.TaskFactoryTests.FromAsync_BeginCallback failing under XM with 2018-04
  • Loading denied assemblies via Assembly.LoadFrom can cause issues, eg. for VSMac
  • Build of Master fails with GCC 4.4.7
  • ThreadPrincipalTests.PrincipalFlowsToAsyncTask failure on device
  • [loader] Mono is too strict when checking for already loaded assemblies.
  • Error when debugging
  • Jit profiler option crashes iOS apps
  • “Microsoft.Managed.Core.targets” is missing from roslyn-binaries
  • Using BinaryFormatter to deserialize an array in a struct in a parent class fails with unfriendly exception [reproducible test case i promise]
  • Configure script incorrectly assumes functions are available with some conditions
  • ServiceControllerTest.cs is designed to fail.
  • Two ValueType properties initialization inline fails in mono-wasm
  • HttpWebRequest.EndGetRequestStream throws wrong exception on abort
  • DynamicMethod creation fails with “method arguments are incompatible”
  • CI build breakage for 2018-04, msbuild
  • [System]: Renegotiation in AppleTls requires OS X 10.12+
  • Cannot get the exit code from a non-child process on Unix (on Windows)
  • WatchOS: “fastcc” not supported with Xcode 10’s clang
  • [loader] LoadFile from application base should load in default context
  • Behaviour difference between Mono and CoreCLR
  • IOS: mini test failure in release/llvm mode (JitTests.Math: Expected: 0 But was: 1)
  • IOS: 32-bit device unit test failure: [FAIL] FSharpTest.SprintfTest : Expected: True
  • System.Reflection.Assembly.LoadFile should throw ArgumentException for relative path name
  • The type initializer for ‘System.Data.Entity.Core.Objects.ELinq.ExpressionConverter’ threw an exception. (regression in Mono 5.14)
  • [eglib] GMarkup XML parser can’t handle hyphens underscores and periods in element names.
  • System.Net.Http.Formatting should not contain Newtonsoft.Json
  • Console properties might deadlock for background properties
  • Incorrect validation checks in message formater
  • Make exception marshaling work with system mono

New in Mono for Windows 5.14.0.177 (Aug 8, 2018)

  • Better generic sharing:
  • Generic sharing has been improved to handle more cases where constrained calls for example when using generic interface constraints now works in AOT mode and does not require JIT fallback.
  • Memory optimization for handles:
  • Previously when a process required only a minimal number of handles fixed predefined size buffer was still allocated. This behaviour has been improved to allocate only necessary slots to reduce the amount of preallocated memory significantly in such situations.
  • LLVM Inlining improvements:
  • Base on more benchmarking results we tweaked LLVM inlining rules to be more aggressive because LLVM can do a better job by generating more optimized code. This can noticeably improve microbenchmark results for a relevant C# code.
  • GC Handling of very large objects:
  • Mono sgen GC didn’t scan properly very large objects due to a bug in our code. Usually, objects which are over 4GBs of memory could exhibit such behaviour which could potentially lead to random crashes for very large objects.
  • Class Libraries:
  • Filip Navara has contributed significant improvements to Mono’s System.Windows.Forms implementation. Many quirks but also serious issues blocking his WinForms application running on Linux were merged making the implementation even more compatible with .NET.
  • Tools:
  • C# compiler
  • The Mono C# compiler (mcs) C# 7.x support was extended to include support for following new language constructs.
  • digits separators:
  • binary literals
  • stackalloc span conversion
  • conditional ref expression
  • F# Compiler
  • The bundled F# compiler has been updated to version 4.1.33.
  • NuGet:
  • The bundled version of NuGet has been updated to 4.7.0. It supports repository signed packages. For detailed release notes check https://docs.microsoft.com/en-us/nuget/release-notes/nuget-4.7-rtm.
  • mkbundle:
  • A new --mono-api-struct-path option was introduced to allow customization of runtime functions used for the embedding. This alows easier modification for example during the start-up. The default template can be found at https://github.com/mono/mono/blob/master/mcs/tools/mkbundle/bundle-mono-api.inc.
  • Resolved Issues:
  • #6178 - Log profiler should provide startup time in stream header from same source as event timestamps
  • #6186 - Code coverage instrumentation logic should deal with inlining the same way as enter/leave instrumentation
  • #6187 - mkbundle Linux - program doesn’t run on system unless mono-core is installed
  • #6211 - Rare shutdown crash in profiler stress tests
  • #6266 - ArrayTypeMismatchException when using array of generic ICollection or IList
  • #6357 - Keepass crashes when editing an entry notes field in a specific way
  • #6579 - Type.GetInterface fails to find implemented interface when ignoreCase: true is used
  • #6666 - Invalid cast is not checked for nullable types
  • #6752 - System.TermInfoReader cannot handle new NCurses 6 TermInfo files
  • #6767 - Add missing APIs to System.Data
  • #6788 - nuget restore fails to parse valid json from nuget.org with mono/master
  • #6801 - Self-hosted HttpListener gets empty file collection and input stream for multipart PUT or POST requests
  • #6812 - MonoProfilerCoverageData::column is equal 0
  • #6848 - netstandard facade dlls have different public key tokens
  • #6940 - DNS lookup of IPv6-only hosts fails
  • #6948 - [XI]WatchOS apps fail to build with error “Undefined symbols for architecture armv7k” using XI with mono-2017-12 support
  • #6998 - Runtime assert in System.Runtime.Remoting
  • #6999 - test_0_time_drift - mono/tests failure
  • #7016 - Hybrid AOT is not working for some generic methods
  • #7085 - Hybrid AOT breaks setting thread UI culture
  • #7086 - Hybrid AOT throws invalid cast exception on dictionaries indexed with enum
  • #7093 - Regression in Array interface conversions
  • #7095 - Assertion at class-accessors.c:31, condition `mono_class_is_ginst (klass)’ not met
  • #7134 - NullReferenceException while processing concurrent requests with a WCF app
  • #7137 - Step in crashes debugger
  • #7145 - [XI] RuntimeFeatureTest.NoNewFeaturesAdded failure in mscorlib tests
  • #7184 - MSBuild always recompiles project if it has a resx with a windows path.
  • #7199 - finalizer-abort.exe
  • #7200 - Problem building on Arch linux
  • #7240 - dim-sharedgenerics.exe fails with LLVM
  • #7262 - .config with dllmap not working with app domains with shadow copying enabled
  • #7289 - Creating EnumMirror fails in a multi-domain context.
  • #7328 - suggest recursive self-calls do not create trampoline
  • #7338 - Finalizer crashes because of FileSystemWatcher Dispose exception in FileSystemWatcher_mobile.cs
  • #7356 - Memory leak in HttpWebRequest / HttpWebResponse
  • #7364 - watchOS/LLVM crashes at launch on device
  • #7378 - WeakAttribute causes all fields within a class to become weak
  • #7389 - System.CodeDom.Compiler.CodeDomConfigurationHandler throws on initialization
  • #7408 - No longer builds with CentOS 6 (GCC 4.4.7)
  • #7432 - gcsuppressfinalize.exe CoreCLR test started failing after upgrade to Debian 9
  • #7449 - PInvoke to function that takes a struct with an array of double gets incorrect results on Android
  • #7460 - w32handles require much memory when the minimum required is much lower
  • #7535 - [llvm/bitcode] Crash in mono_class_has_failure (class.c:10037)
  • #7536 - Missing Facades from net_4_x that are in 4.7.1.
  • #7537 - new object [int.MaxValue] crashes runtime instead of OOM
  • #7565 - Generic symbol names exported from libmono
  • #7568 - Intermittent failures on bug-80307.exe and other tests using FileSystemWatcher
  • #7610 - Add System.Memory facade
  • #7613 - mprof-report can’t read v13 file that Mono.Profiler.Log can
  • #7620 - DrawToBitmap in Control.cs does not work
  • #7624 - Strict loader still loads incorrect assembly
  • #7637 - iOS release build: “Could not AOT the assembly” -> “p - buf < buf_size not met”
  • #7655 - Memory leak in file operations in mono 5.10
  • #7657 - Method is inaccessible from method in nested classes with inheritance.
  • #7661 - Suppress the degraded allocation warning for the WebAssembly target
  • #7685 - Assert ainfo->cinfo->stack_usage % MONO_ARCH_FRAME_ALIGNMENT == 0
  • #7696 - LINQ bug (ConcatNIterator.ToArray()?)
  • #7729 - [mcs] fails to compile code with Tuple
  • #7786 - “mono/metadata/threads.c:3016, condition `internal’ not met” under certain conditions with the soft debugger attached
  • #7792 - Failure to AOT compile due to condition `load_opcode != OP_LOADV_MEMBASE’ not met
  • #7805 - F# build is broken due to new String.StartsWith overload
  • #7822 - Failing to serialize ConcurrentDictionary with BinaryFormatter
  • #7828 - Invalid instruction generated by regex runtime when using dapper
  • #7860 - illinkanalyzer isn’t whitelisted in the macOS package
  • #7864 - [wasm] Don’t fail when TaskCreationOptions.LongRunning is used
  • #7903 - Mono VS solution has wrong all projects in all profiles used
  • #7920 - build broken with –enable-minimal=soft_debug
  • #8089 - Add System.Drawing.Common facade for Xamarin profiles
  • #8143 - CEE_STELEM for single token fails in wasm interp mode
  • #8267 - TimeZoneInfo.Local Id and DisplayName are always: Local
  • #8310 - FSharp build is broken due to new Path.GetFileName() overload
  • #8311 - bug-82022.exe fails in LLVM JIT
  • #8409 - FullAOT test failures/crashes on arm64,armel or armhf
  • #8417 - Redirecting process output when Console.SetOut set gives strange output
  • #8698 - csharp REPL can’t load pkg-config references interactively
  • Bugzilla 10087 - Process exit can be blocked if the AppDomain.ProcessExit event hangs
  • Bugzilla 11771 - IsolatedStorageFile.GetFileNames() throws exception w/ nested dirs
  • Bugzilla 12850 - FtpWebRequest does not handle remote paths properly
  • Bugzilla 18941 - Calling Marshal.SizeOf() with an Empty struct using Sequential or Explicit returns 0
  • Bugzilla 19038 - Quitting XS caused MainStoryboard.Storyboard to convert to IB file
  • Bugzilla 19436 - [eglib] GMarkup XML parser can’t handle hyphens underscores and periods in element names.
  • Bugzilla 25224 - stack overflow after printfn something
  • Bugzilla 25444 - WCF method with UriTemplate annotation fails with InvalidOperationException
  • Bugzilla 33208 - System.Reflection.Module.ResolveMember() returning inconsistent results when querying dynamic assemblies
  • Bugzilla 46473 - Error: The object with ID N implements the IObjectReference interface for which all dependencies cannot be resolved. The likely cause is two instances of IObjectReference that have a mutual dependency on each other
  • Bugzilla 53272 - Unhandled Exception System.Collections.Generic.KeyNotFoundException in ikdasm
  • Bugzilla 58413 - Environment.Tickcount is changed when the date is changed in android
  • Bugzilla 59184 - MethodInfo.Invoke fails for generic methods with too many/too large arguments
  • Bugzilla 59400 - Wrong interface method is called (two interfaces, covariance)
  • Bugzilla 59779 - HttpClient, when using GZIP, hangs while sending multiple requests in parallel.
  • Bugzilla 60065 - Make exception marshaling work with system mono
  • Bugzilla 60088 - Assertion at ../../../../external/mono/mono/mini/debugger-agent.c:4765, condition `array->len == 1’ not met
  • Bugzilla 60843 - Type 0x15 not handled in custom attr value decoding

New in Mono for Windows 5.10.0.140 (Mar 2, 2018)

  • IN DEPTH:
  • Runtime:
  • Interpreter:
  • The interpreter is now compiled in by default into Mono, and you can use it by running mono --interpreter. Check out the recent interpreter blog post for more details about this work.
  • We are getting closer to get the interpreter working with JIT/AOT and on mobile:
  • exception handling and debugger support has been unified with JIT/AOT
  • we support more AppDomain and Remoting cases
  • It is not yet as feature complete as the JIT, so there will be some behavior differences or breakages; we are currently working on making our complete test suite pass.
  • Default Interface Methods:
  • The runtime now supports Default Interface Methods, we now only miss the C# compiler support.
  • Mono SDKs:
  • This is a new way of building Mono for some of the platforms that we support: Android, iOS and WebAssembly. The goal is to move most of the build logic into Mono so that we can more easily make changes and test those platforms as part of CI.
  • You can find some documentation at the README and Makefile build targets.
  • This is still a work-in-progress, we’ll make it easier to use with upcoming releases, and more documentation will also be added.
  • WebAssembly port:
  • This is the first release where the interpreter can reliably run most of the class libraries test suite. Multiple bugs affecting the Basic Class Libraries were fixed. The WebAssembly port is leveraging the work done around Mono SDKs to provide an improved developer experience to those working on mono. While there will be no official release at this point, the adventurous ones can try our code drops directly from CI.
  • Dedicated Coverage profiler:
  • The coverage profiler has been extracted from the log profiler, making it much more lightweight. It also removes the dependency on mprof-report to generate the XML report, and instead generates the report directly. You can find more documentation by looking at the COVERAGE PROFILER section of the mono-profilers man page.
  • Support for Android Unified Headers:
  • Android NDK unified headers required changes to the way Mono detects real-time signal definitions (SIGRTMIN/SIGRTMAX), as well as a number of workarounds for 64-bit API declarations on target platforms (< API 24) which do not have the correct declarations. A number of compatibility tweaks was also done to declarations of fgetpos, fsetpos, mmap, sendfile and statvfs calls. Mono builds targeting Android require that the __ANDROID_API__ macro is set to the target platform level (e.g. 21, 24 or O)
  • ARM Memory Barriers:
  • Explicitly encode memory barrier type on ARM64, instead of relying on undefined behaviour according to the ARMv8 ABI. This is to respect the ARM specification closer, reducing the risk of hardware-specific bugs.
  • AOT Size Reduction via Code Deduplication:
  • We now support deduplicating generics code across assemblies. For example, code for List<int> is now deduplicated for usage in the user code and System.dll.
  • CLASS LIBRARIES:
  • The recently announced .NET 4.7.1 is now supported and available as a specific target via MSBuild configuration.
  • The System.Data assembly was fully replaced with CoreFX implementation resolving many limitations and corner cases issue we had as well as implementing missing features and APIs.
  • Significant parts of System.Security assembly implementation were replaced with CoreFX implementation.
  • TOOLS:
  • C# compiler:
  • The Roslyn compiler (csc) has been updated to version 2.6.0 which includes all C# 7.2 features.
  • The Mono C# compiler (mcs) gained support for the following C# 7.x features:
  • default literal
  • non-trailing named arguments
  • discards
  • tuples implicit deconstruction
  • generalized async return types
  • stackalloc to Span assignment conversion
  • ref struct
  • readonly structs
  • F# compiler:
  • The F# compiler was updated to the latest 4.1 version.
  • The FSharp.Core.dll assembly is no longer installed into the GAC, solving many problems users faced when using NuGets.
  • MSBuild:
  • MSBuild was updated to the latest version available.
  • Mono’s list of incompatible NuGet assemblies was extended and updated which should help with NuGets which bundle the same assemblies as installed by Mono as those are now skipped.
  • BUG FIXES:
  • Bugzilla #19503 - Process.Start on OS X fails silently for missing file
  • Bugzilla #20562 - Seeming valid IL produces invalid result
  • Bugzilla #40699 - Console.ReadXXX does not echo input after TermInfoDriver is initialized
  • Bugzilla #45893 - I18N: EncoderFallbackBuffer.Fallback gets next character instead of the current one
  • Bugzilla #50189 - SGEN XMM scanning: Linux/Intel (32 + 64)
  • Bugzilla #50190 - SGEN FPU scanning: Darwin/ARM64
  • Bugzilla #52675 - HttpListener doesn’t work with SSL
  • Bugzilla #53296 - Latin1Encoding throws exception on Mono when it doesn’t on MS.NET
  • Bugzilla #56003 - URI returns wrong absolute path on OSX when File name is UTF-8
  • Bugzilla #56194 - SIGSEGV on System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray()
  • Bugzilla #56727 - Runtime crashes when disposing DeflateStream
  • Bugzilla #57892 - Static lib in the msi distrib doesn’t resolve all symbols
  • Bugzilla #57893 - mkbundle is not working on Windows
  • Bugzilla #57938 - Differences in behavior Type.Fullname in Mono and .NET Framework when Type is a generic type that is not a generic type definition but contains unresolved type parameters
  • Bugzilla #58400 - System.Uri broken with files
  • Bugzilla #58411 - System.Security.Cryptography.CryptographicException: Store root doesn’t exist
  • Bugzilla #59080 - Type information of underlying type for enums compiled by Mono.CSharp.dll seems to be incorrect
  • Bugzilla #59182 - Crash/SIGSEGV with interop callback with struct parameter from native to managed on Xamarin.Android on armv7
  • Bugzilla #59184 - MethodInfo.Invoke fails for generic methods with too many/too large arguments
  • Bugzilla #59393 - NullReferenceException when MonthCalendar clicked out of min/max date
  • Bugzilla #59608 - Attribute MethodImplOptions.AggressiveInlining causes method to always return NULL
  • Bugzilla #59664 - Type.GetType(“”, true) throws ArgumentException on Mono but TypeLoadException on .NET
  • Bugzilla #59832 - [iOS]MT3001 error: Could not AOT the assembly error while building iOS/mobile samples
  • Bugzilla #59881 - DllImport calls a wrong function if its function number greater than 65535
  • 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 #59956 - [llvm][bitcode] [FAIL] UniqueIdTest.Ctor_Id (System.Runtime.Serialization tests)
  • Bugzilla #60028 - Timer doesn’t throw ODE after Dispose()
  • Bugzilla #60029 - AsyncLocal inconsistency with .NET
  • Bugzilla #60175 - AOT mis-compiles when coverage is used
  • Bugzilla #60224 - Coverage profiler uses type names which don’t exist
  • Bugzilla #60233 - Assertion in dynamic-image.c after 792b5367cd3a6ffa1a192c4d2d7ace3509cbb646
  • Bugzilla #60238 - Mono assertion hit when using csharp repl
  • Bugzilla #60255 - Wrong exception in emulated opcodes
  • Bugzilla #60267 - Inconsistent symlink traversal results
  • Bugzilla #60288 - Large Array Initializer Causes TypeLoadException
  • Bugzilla #60298 - LayoutKind.Explicit, Size = 12 ignored with 64bit alignment
  • Bugzilla #60317 - Stuck WebRequest
  • Bugzilla #60422 - Native crash due to unhandled errno values when accessing files on networked filesystems
  • Bugzilla #60435 - The DataGridViewRow.CreateCellsInstance method is never invoked
  • 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 #60621 - XmlDocument.Load() throws WebException when DTD url is not reachable
  • Bugzilla #60634 - Assertion failure ‘align > 0’ happening as of d15-5
  • Bugzilla #60680 - C# 7 ref returns fail to compile
  • Bugzilla #60771 - Attempting to JIT compile method ‘System.Runtime.CompilerServices.Unsafe:Add (byte&,int)’ while running in aot-only mode
  • Bugzilla #60865 - * Assertion at mini-codegen.c:2264, condition `sp > 0’ not met
  • Bugzilla #61202 - Fatal error when adding aspect ratio constraint
  • GitHub #6169 - Thread objects are being leaked
  • GitHub #6187 - mkbundle Linux - program doesn’t run on system unless mono-core is installed
  • GitHub #6192 - System.Reflection.Emit: PropertyBuilder with generic type doesn’t add generic parameter
  • GitHub #6320 - [arm] unaligned access in ves_icall_System_ValueType_Equals
  • GitHub #6339 - System.TypeLoadException is thrown when run .net standard library with Mono
  • GitHub #6383 - System.Diagnostics.ProcessTest.Start1_FileName_NotFound failing
  • GitHub #6401 - Invalid array cast is supported
  • GitHub #6414 - sbyte comparison broken by optimization
  • GitHub #6490 - Reenable weak-fields.exe test
  • GitHub #6721 - Negate operation on uint.MaxValue gives wrong result on arm64
  • GitHub #6777 - Memory corruption in Mono 5.8.0.108.
  • GitHub #6848 - netstandard facade dlls have different public key tokens
  • GitHub #6848 - [XI]WatchOS apps fail to build with error “Undefined symbols for architecture armv7k” using XI with mono-2017-12 support
  • GitHub #7086 - Hybrid AOT throws invalid cast exception on dictionaries indexed with enum

New in Mono for Windows 5.4.1.0 (Nov 9, 2017)

  • #59281 - System.Threading.AbandonedMutexException: The wait completed due to an abandoned mutex
  • #59302 - Task in Mono 5.4.0.167 is throwing exception “Length cannot be less than zero”
  • #59364 - Assertion at dynamic-image.c:209, condition `prev == MONO_HANDLE_RAW (obj)’ not met
  • #59832 - [iOS]MT3001 error: Could not AOT the assembly error while building iOS/mobile samples
  • #60233 - Assertion in dynamic-image.c after 792b5367cd3a6ffa1a192c4d2d7ace3509cbb646

New in Mono for Windows 5.4.0.201 (Oct 17, 2017)

  • HIGHLIGHTS:
  • NuGet updated to 4.3.0
  • IN DEPTH:
  • Runtime:
  • JIT Job Control:
  • The Runtime now controls concurrent method compilation. It avoid multiple threads compiling the same method at the same time and limits the number of threads simultaneously compiling.
  • This shows up as performance issue with applications such as Roslyn that very quickly ramp up a lot of threads.
  • Array element store optimization:
  • Optimize array stores of non-final ref types.
  • Load scalability improvements:
  • Move a few hot data structures in the type loader to use lock free reads. This shown up a scalability botheneck with Roslyn and Visual Studio for Mac first project load.
  • ValueType write barrier optimization:
  • Optimize GC write barriers when value types are involved. This shown up as a performance issue with Roslyn.
  • Make jit method table resizing more scalable
  • The original table resizing code would count the size of the table on resize, this works fine for small programs but proved to be a problem with Visual Studio for Mac.
  • Reflection queries scalability improvements:
  • Reflection queries must be cached by the runtime as two identical queries must return the same objects. It now use a lock free data structure for reads. This shown up as a performance issue during Visual Studio for Mac first project load.
  • Intrisificy Marshal.PtrToStruct for blitable types
  • This avoid boxing and unboxing an intermediary object. This results in a 30x speedup on a microbenchmark.
  • Revamped unaligned memory access support:
  • As part of our work to support dotnet platform advances, proper unaligned access was missing from the mono runtime. This feature is used by the new Span type and now it works with ARM cpus.
  • Interpreter works in JIT restricted environments:
  • There are a few things in the interpreter that still require machine specific trampolines that are written in assembly or managed code. We used the JIT infrastructure so far for that, but now we added plumbing to the AOT compiler so they can be pre-generated, and thus the interpreter is usable on platforms where code generation is not allowed during execution. See the interp option in the man page.
  • Interpreter supports ARM and ARM64
  • We added support for those architectures and also test them on CI.
  • Class Libraries:
  • Integrated AppContextSwitch code from reference sources which allows all of its compat switches to be used.
  • Added reference assemblies for .NET Framework 4.7. This allows you to build libraries targetting .NET 4.7 using Mono’s msbuild.
  • Tools
  • We updated the NuGet command line tool (nuget) which is bundled with Mono to version 4.3.0.
  • We updated MSBuild to the latest 15.4 release.

New in Mono for Windows 5.2.0.224 Service Release 4 (Sep 21, 2017)

  • Highlights:
  • mono command defaults to 64bit
  • Experimental Default Interface Methods Support
  • Strong assembly names:
  • Mono will now optionally respect public keys and version numbers when loading strongly signed assemblies. If Mono is invoked with the --assembly-loader=strict option, then requests (whether via a static assembly reference, or using an assembly name using the reflection API) that include a public key token and version number will only load strong named assemblies with a matching token and name (respecting any bindings in relevant app config files).
  • To debug the assembly loading process, set the logging environment variables to trace level “info” or lower and trace filter to include “asm”. (See Logging runtime events.)
  • The current default behavior is the same as in previous Mono versions. It is explicitly available with the --assembly-loader=legacy option.
  • Experimental Default Interface Methods Support
  • We added experimental support for the current prototype. Check the C# specs
  • Class Libraries
  • System.Numerics.Vectors
  • Multiple fixes and new intrinsics added. The library is now considered ready for general usage.
  • .NET Standard 2.0 groundwork
  • We’ve done all the groundwork to support libraries that conform to .NET Standard 2.0. Loading and running a library compiled against the 2.0 standard should work fine, tooling support (i.e. creating a .NET Standard 2.0 library) is still in preview though.
  • You’ll need to install the .NET Core 2.0 SDK for tooling support as we use the MSBuild tasks which are installed as part of the .NET Core 2.0 SDK, similar to how Visual Studio/MSBuild on Windows does it.
  • Reference assemblies
  • The reference assemblies were updated to provide the .NET 4.7 API set.
  • Runtime
  • mono command defaults to 64bit
  • The mono command now runs as a 64bit application by default. You can use the --arch=32 option to run Mono as 32bit again.
  • Optimized Array Stores
  • Added a fast path for storing on array of reference values when the stored value is of the same type of the array element type.
  • Class Initialization Improvements
  • Do hold any runtime locks while running the class initializer. This improves startup scalability.
  • Reduced minor collection pause times
  • Made the runtime tables used to store reflection information generational, so the GC can avoid scanning them during minor collections. Those tables can become significantly large on workloads like Visual Studio for Mac.
  • Interpreter passes the majority of the JIT test suite
  • Major progress was made on the interpreter front. It can now run non-trivial programs.
  • Misc
  • Internal Documentation
  • We continue to publish internal docs for mono, making it more convenient to browse and search the Mono runtime internals and associated documentation.
  • Static Analysis
  • In order to holistically improve the correctness and stability of Mono, we have been investing effort in custom static analysis tooling, which will be deployed as part of our continuous build to rule out certain classes of bugs. Recently we have made progress on minimizing the amount of manual annotation work required to add new analyses, making it easier for us to verify more properties of our code.
  • Mangler V1
  • Managed methods can include a dizzying array of attributes beyond the actual method code. The mangler encodes the attributes which are necessary to create a unique name for each method. If two methods mangle to the same string, they are the same method. This can be thought of as a primary key for each method, and extends to methods which are mono wrappers. Internally, mono is using it to build a deduplicating pass to remove binary bloat associated with generics.
  • Safer Getenv
  • The functions g_getenv and g_setenv are neither threadsafe nor reentrant. Subsequent calls to g_getenv can cause previous strings returned from it to point to garbage memory. This was leading to issues with System.Configuration that could be seen with HttpClient. Now we lock around these calls and return duplicated memory. This is a serious API change to g_getenv. The string returned must now always be freed. We don’t expect many embedders to be using the version of eglib that is linked into mono for other functions. Those who do might want to check that this change does not introduce memory leaks.
  • Bug Fixes
  • •#580 - Type.Load loads strong type despite version mismatch
  • •#39444 - Action ReflectedType differs from Delegate ReflectedType for virutal methods
  • •#43805 - Output of DateTime.Now() differs on Mono for ambiguous time period
  • •#43988 - Stack overflow in System.Text.Encoding.Default
  • •#46661 - Runtime exception filters truncate exception stack traces on NSLog
  • •#46929 - Datetime error on Mono.data.Sqlite
  • •#47221 - Thread.Name can only be set once inside async callback
  • •#47599 - HttpClient Transfer-Encoding:chunked is not added to the header - not able to transfer large files
  • •#49721 - Assembly binder uses wrong strongly named assembly when same assembly with different version exists in local folder
  • •#50529 - crash in thread-native-exit.exe
  • •#51522 - Overload resolution fails for referenced assembly
  • •#51561 - Getting process name of process running under higher privilege user throws exception
  • •#51653 - mono_thread_info_wait_one_handle ignored alertable argument
  • •#52086 - Nullable structs with implicit operators generate invalid IL code when compiling with Mono
  • •#52294 - C# compiler reports an incorrect error in a lambda with generic constraints
  • •#52340 - Compiler crashes with FATAL UNHANDLED EXCEPTION (nullref)
  • •#52345 - Process has exited, so the requested information is not available
  • •#52429 - Shutdown hang then crash in Finalizer thread
  • •#52437 - Random NullReferenceExceptions in StringBuilder.ThreadSafeCopy
  • •#52448 - StreamContent apparently needs to rewind stream before sending it
  • •#52475 - MTOUCH: error MT3001: Could not AOT the assembly
  • •#52511 - configure script doen’t detect bad configuration
  • •#52549 - error: mono_w32socket_convert_error: no translation into winsock error for (41) "Protocol wrong type for socket"
  • •#52590 - Cannot compile for iOS, TypeBuilder exists in two places.
  • •#52599 - await in finally clause prevents disposal of enclosing using statement
  • •#52600 - Full AOT: Strange combination of structs, generics, and enums causes runtime failure
  • •#52743 - denied loading problems
  • •#52845 - [Cycle 9] Satellite assemblies not bundled when using "Bundle assemblies into native code" due to "unknown escape sequence" error from gcc during mkbundle step
  • •#52866 - F# sprintf AOT bug still exists
  • •#52899 - mprof-report missing filenames in coverage xml output when using portable pdbs
  • •#53066 - Can’t Build Project in Debug with "Could not AOT the assembly"
  • •#53131 - Calling MakeArray() on a type with a rank that is too big does not throw an exception.
  • •#53153 - Implement RuntimeHelpers::IsReferenceOrContainsReferences
  • •#53166 - Application crashes when setting a get-only property in constructor
  • •#53196 - List<>.Sort() using insertion sort does not sort all values when equality isn’t checked.
  • •#53202 - Number minus Enum gives wrong value
  • •#53231 - csc doesn’t unify same file passed multiple times when one path is relative
  • •#53278 - Two coreclr SIMD test failures (one regression from 4.8)
  • •#53334 - es-US Culture wrong number formatting
  • •#53684 - Crash when enumerating directory and selecting the first file
  • •#53689 - [Test] Certificate7 disabled due to SecCertificateCreateWithData does different things on 10.11 vs 10.12 with invalid certificates
  • •#53792 - CFNetworkHandler reports correct download when internet connection is lost during request
  • •#53843 - Mono deadlocks on shutdown while waiting for a process which has died
  • •#53890 - Regression: Native crash while running tests with xunit with mono 2017-02 branch, works with 4.8.0.520
  • •#54212 - Mono allows casts of non-zero bound array to zero bound array
  • •#54322 - await in catch-block inside a loop causes the same exception to be caught multiple times
  • •#54448 - Unable to revert to thread-local storage for CurrentThread.CultureInfo
  • •#54485 - Creating an open generic type with recurrent constraint fails
  • •#54991 - Cannot compile get => _text
  • •#55041 - Stripping mscorlib in simple example changes IntPtr (5) behavior?
  • •#55083 - coreclr test b353858.il fails after 6f33b62f39a273fccb78f71513cb5e0dfb987c70
  • •#55436 - System.Runtime refuses to load with strict naming
  • •#55577 - SIMD instructions with System.Numerics.Vectors do not work
  • •#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
  • •#55681 - System.Reflection.Emit.ModuleBuilder.build_metadata bug when running FAKE’s test suite
  • •#56081 - Returning a valuetype from an async method with an awaited parameter yields a Mono.CSharp.InternalErrorException: Await yields with non-empty stack
  • •#56240 - Performance Degradation When Using Expressions
  • •#56247 - Enumerable.OrderByDescending behaves differently on LLVM FullAOT
  • •#56275 - Unable to copy appname.dll from obj to bin because it is being used by another process
  • •#56493 - Windows MMAP doesn’t release file
  • •#56567 - Passing large struct into exception filter method crashes runtime with SIGSEGV
  • •#56611 - Regression: ArrayTypeMismatchException when running F# script
  • •#56694 - Assertion: should not be reached at d:jworkspacevreposmonomonosgensgen-scan-object.h:91
  • •#56821 - Static ctor of MarshalByRefObject runs in primary AppDomain
  • •#56824 - Runtime crash with VSMEF
  • •#57222 - System.Reflection.AmbiguousMatchException for two fields with same name but different types
  • •#57744 - ReflectionTypeLoadException.LoaderExceptions has null exceptions

New in Mono for Windows 5.2.0.104 - First Alpha Release (Jun 27, 2017)

  • Highlights:
  • Experimental Default Interface Methods Support
  • In Depth:
  • Strong assembly names. Mono will now optionally respect public keys and version numbers when loading strongly signed assemblies. If Mono is invoked with the --assembly-loader=strict option, then requests (whether via a static assembly reference, or using an assembly name using the reflection API) that include a public key token and version number will only load strong named assemblies with a matching token and name (respecting any bindings in relevant app config files).
  • To debug the assembly loading process, set the logging environment variables to trace level “info” or lower and trace filter to include “asm”. (See Logging runtime events.)
  • The current default behavior is the same as in previous Mono versions. It is explicitly available with the --assembly-loader=legacy option.
  • Experimental Default Interface Methods Support. We added experimental support for the current prototype. Check the C# specs
  • Class Libraries:
  • System.Numerics.Vectors. Multiple fixes and new intrinsics added. The library is now considered ready for general usage.
  • Runtime:
  • Optimized Array Stores. Added a fast path for storing on array of reference values when the stored value is of the same type of the array element type.
  • Class Initialization Improvements. Do hold any runtime locks while running the class initializer. This improves startup scalability.
  • Reduced minor collection pause times. Made the runtime tables used to store reflection information generational, so the GC can avoid scanning them during minor collections. Those tables can become significantly large on workloads like Visual Studio for Mac.
  • Interpreter passes the majority of the JIT test suite
  • Major progress was made on the interpreter front. It can now run non-trivial programs.
  • Misc:
  • Internal Documentation. We continue to publish internal docs for mono, making it more convenient to browse and search the Mono runtime internals and associated documentation.
  • Static Analysis:
  • In order to holistically improve the correctness and stability of Mono, we have been investing effort in custom static analysis tooling, which will be deployed as part of our continuous build to rule out certain classes of bugs. Recently we have made progress on minimizing the amount of manual annotation work required to add new analyses, making it easier for us to verify more properties of our code.
  • Mangler V1:
  • Managed methods can include a dizzying array of attributes beyond the actual method code. The mangler encodes the attributes which are necessary to create a unique name for each method. If two methods mangle to the same string, they are the same method. This can be thought of as a primary key for each method, and extends to methods which are mono wrappers. Internally, mono is using it to build a deduplicating pass to remove binary bloat associated with generics.
  • Safer Getenv:
  • The functions g_getenv and g_setenv are neither threadsafe nor reentrant. Subsequent calls to g_getenv can cause previous strings returned from it to point to garbage memory. This was leading to issues with System.Configuration that could be seen with HttpClient. Now we lock around these calls and return duplicated memory. This is a serious API change to g_getenv. The string returned must now always be freed. We don’t expect many embedders to be using the version of eglib that is linked into mono for other functions. Those who do might want to check that this change does not introduce memory leaks.
  • Bug Fixes:
  • /placeholder for automatically generated list of fixed bugzilla bugs/
  • 580: Type.Load loads strong type despite version mismatch (see Strong assembly names)
  • 49721: Assembly binder uses wrong strongly named assembly when same assembly with different version exists in local folder (see Strong assembly names)

New in Mono for Windows 5.0.1 (May 29, 2017)

  • Bug Fixes:
  • #56275 - Unable to copy appname.dll from obj to bin because it is being used by another process - Fixed by earlier disposal of filehandle in pdb2mdb code
  • #56240 - Performance Degradation When Using Expressions - Fixed by making RuntimeHelpers:SufficientExecutionStack () a noop on Android
  • #56177 - peverify fails on FSharp.Core.dll with mono_os_mutex_lock: pthread_mutex_lock failure - Fixed a crash in pedump code
  • #55858 - Microsoft.WebApplication.targets Missing from mono5
  • #56322 - Running nunit tests with domain isolation crashes Mono - Fixed by repairing a handle leak in coop gc
  • #55988 - Apps using Roslyn crash when trying to load Roslyn - Fixed by repairing an assembly loader issue which prevented use of System.ValueTuple
  • #56260 - “This stream does not support writing at System.IO.Compression.DeflateStream.BeginWrite” message
  • #55087 - “System.NotSupportedException: Stack walks are not supported on this platform - System.Reflection.MethodBase.GetCurrentMethod” message on Android

New in Mono for Windows 5.0.0.100 (May 12, 2017)

  • Highlights:
  • Shipping Roslyn C# compiler to enable C#7 support
  • Shipping msbuild and deprecating xbuild for better compatibility
  • Enabling concurrent SGen garbage collector to reduce time spent in GC
  • Introducing the AppleTLS stack on macOS for HTTPS connections
  • Continued Progress on .NET Class Library convergence
  • Updated libjpeg in macOS package
  • IN DEPTH:
  • C# COMPILER:
  • The Roslyn C# compiler is now available on Mono and it’s called csc. It’s the same compiler available on Windows / Visual Studio with full support for C# 7. Both msbuild and xbuild have been updated to call the csc compiler under the hood instead of mcs.
  • Replacing mcs with csc in user scripts should be straightforward but small issues can arise as command line arguments accepted by csc and features are not identical to mcs. For example, csc generates Portable PDB (.pdb) debug files instead of Mono’s MDB (.mdb) format. It also can’t do full signing on non-Windows platforms, use the /publicsign switch instead or use delay signing and sign the assembly with the sn tool after the build.
  • C# 7 adds a number of new features to the C# language:
  • out variables: ◦You can declare out values inline as arguments to the method where they are used.
  • Tuples ◦You can create lightweight, unnamed types that contain multiple public fields. Compilers and IDE tools understand the semantics of these types.
  • Pattern Matching ◦You can create branching logic based on arbitrary types and values of the members of those types.
  • ref locals and returns ◦Method arguments and local variables can be references to other storage.
  • Local Functions ◦You can nest functions inside other functions to limit their scope and visibility.
  • More expression-bodied members ◦The list of members that can be authored using expressions has grown.
  • throw Expressions ◦You can throw exceptions in code constructs that previously were not allowed because throw was a statement.
  • Generalized async return types ◦Methods declared with the async modifier can return other types in addition to Task and Task<T>.
  • Numeric literal syntax improvements ◦New tokens improve readability for numeric constants.
  • The new features in C# 7 can also be explored interactively as a Xamarin Workbook.
  • The Mono C# compiler is still available but it has not been updated to include C#7 features. The compiler is still maintained and all reported bugs have been fixed.
  • MSBUILD:
  • Over the past year we have been working to integrate the open-sourced msbuild build tool into Mono. It is now available as part of your Mono installation, and it is the same MSBuild that is used on .NET on Windows.
  • This resolves numerous incompatibilities we had in our previous xbuild implementation.
  • XBUILD:
  • Mono’s historical implementation of MSBuild called xbuild is now deprecated. We encourage everyone to switch to the msbuild command which is now available on Mono as well.
  • REFERENCE ASSEMBLIES:
  • The reference assemblies were updated to fully match the .NET 4.6.2 API set. This means that you no longer get compilation errors about missing classes/methods when building against one of the .NET profiles via msbuild/xbuild.
  • Note that at runtime certain APIs that Mono doesn’t (yet) implement will still throw an exception.
  • TOOLS:
  • The pdb2mdb tool was updated so it no longer crashes when run against an assembly that has a Portable PDB debug symbols available.
  • CSSHART:
  • The csharp REPL and scripting tool, which is based on the mcs compiler, now supports script-and-REPL-specific command line arguments, which are delimited by either the -s or -- arguments. These arguments are further made available in the Args global for easy processing in scripts.
  • It is now possible to write self-executing scripts with simple and unambiguous access to command line arguments:
  • #!/usr/bin/env csharp -s
  • Deprecation of Mono-bundled version of NUnit:
  • Mono used to ship with a forked copy of NUnit 2.4 that we used for testing Mono itself. For historical reasons it was never updated and is ancient at this point (it was released nearly 10 years ago!).
  • We moved to NUnitLite for testing Mono so we decided to deprecate the version we ship.
  • The nunit-console command will print a warning now. Compiling new projects against the NUnit DLLs from GAC will fail with an error message (existing test assemblies continue to work).
  • We recommend that you use a recent version of NUnit from NuGet or the project’s website instead.
  • CoreFX + Reference Source Adoption:
  • As we announced we are adopting a new strategy to share code with .NET. With this release we started this effort where the code is shared between .NET Core and Mono and not just the Reference Source release.
  • Windows:
  • The build system was fixed so it works without setting the git config --global core.autocrlf input setting which makes building Mono on Windows easier.
  • RUNTIME:
  • SIMD Acceleration support:
  • Generating SIMD accelerated native code for the classes in the Mono.Simd assembly is deprecated in this release, and it will be removed in +2 releases. Users should transition to using the Vector classes, which are part of the official .NET class libraries.
  • Environment Memory Management And System.Configuration:
  • As per the Unix specification, getenv may return a pointer into static memory. Future calls to getenv can overwrite the memory returned from previous calls to getenv. Mono kept many pointers into this memory while concurrently calling getenv on multiple threads. We now lock around the environment-changing functions and to duplicate all returned strings.
  • Unfortunately, Mono will use the environment to find which configuration file to read for System.Configuration. Configurations that were set might not have been used, as managed code was seeing nulls. This is how the bug surfaced, it is not hypothetical. Users who set a custom configuration file (via MONO_CFG_DIR) are encouraged to check that using previously-ignored configuration files does not lead to unexpected breakage.
  • Match semantics of rethrow instruction with .NET runtime:
  • Mono used to cut off the stack trace at the point where an exception is re-thrown, however, it should retain the stack trace if rethrow is used.
  • Experimental runtime interpreter:
  • We revived the interpreter back from the old days (aka. mint). It now supports generics, and was updated to match internal API changes. It is disabled by default and shouldn’t be used in production yet.
  • The interpreter will be an execution option to the current runtime.
  • Clean-ups around native crashes:
  • Native crashes now end up a single handler mono_handle_native_crash, that tries to provide as much information as possible. Also, SIGILL won’t get wrapped into a managed exception anymore but results into a native crash.
  • Internal Documentation:
  • We have enabled Doxygen for documentation of runtime internals. Going forward, this should help us onboard new contributors and make the codebase easier to navigate and understand.
  • Lazy array interfaces:
  • One curious aspect of C# is that arrays implement invariant interfaces as if they were covariant. This happens for IList<T>, ICollection<T> and IEnumerable<T> which means, for example, that string[] implements both IList<string> and IList<object>.
  • Mono traditionally implemented this by creating the runtime-side metadata for all of those interfaces and that came with an extraordinary memory cost of creating a lot of interfaces that never ended up being referenced by C# code.
  • With Mono 5.0 we now treat those interfaces as magic/special and use a different casting code-path. This allows them to be lazily implemented in arrays, which can save a lot of memory in LINQ-heavy workloads. As part of this work we refactored the casting code in the JIT to be simpler and more maintainable.
  • Memory usage:
  • Improvements in the runtime representation of the type system should yield a 5% memory saving in most workloads. It was achieved by using a more efficient representation for arrays and generic instances.
  • A linearizable property bag was added to replace the current mechanism of rare fields in runtime metadata. More rarely used fields were moved to use it as they now use significantly less memory when used.
  • SGen Improvements:
  • As of this release we are enabling concurrent SGen as the default mode on desktop platforms. This mode significantly reduces the time spent in major collections, by doing most of the work concurrently with the application. In order to use the old serial collector you can pass to the environment MONO_GC_PARAMS=major=marksweep.
  • A new parallel SGen mode has been added for majors. This mode uses multiple workers in order to finish a concurrent collection and it is currently experimental. If you are still experiencing large pauses with the concurrent collector, you can try out the parallel mode by passing MONO_GC_PARAMS=major=marksweep-conc-par.
  • SGen uses an optimized custom implementation of quicksort to improve the performance of some GC operations. Previously, it selected a poor choice of pivot, which could lead to worst-case time complexity in some circumstances. It has been rewritten with an improved pivot strategy.
  • This release includes some performance improvements in ephemeron processing, which also translate to shorter collections. Ephemerons are an internal structure used by the SGen to implement the semantics of ConditionalWeakTable. This also includes a fix for a long-standing leak when using and disposing of a lot of these structures.
  • Major block allocation and freeing was tweaked in order to reduce fragmentation of the virtual memory space.
  • SIMD Register Scanning:
  • Certain compiler optimizations can lead to object references being stored in SIMD registers, for example, during an optimized copy of an array of references. Previously, the runtime did not scan these registers, which could cause objects to be prematurely freed if the garbage collector happened to run while the only reference to an object resided in such a register. The runtime now correctly scans these registers for object references during garbage collection.
  • Static Analysis:
  • We are investing in static analysis of the runtime to verify our use of locks, signals, and global state. This should help reduce concurrency errors, improving correctness and stability. As a first step, we have already caught some locking errors in the garbage collector.
  • Symbolification:
  • The runtime crash stack traces now include information on managed stack traces to allow them to be symbolificated. Tooling was adjusted to handle the slightly different format.
  • Thread.Abort hardening:
  • The runtime was hardened to further its resilience in face of thread aborts. It now won’t abort in-flight class constructors. Thread abort is important for application using multiple AppDomains.
  • ThreadAbortException:
  • ThreadAbortException remains set during stack unwinding unless manually unset. While inside of a function call inside of a catch block for the exception, it was possible for us to see the set ThreadAbortException and behave as if the call inside of the catch block threw it. This has been fixed.
  • Unwinding on Android:
  • On a native crash on Android, the Mono runtime tried to dlopen libcorkscrew or libunwind (depending on what is available) in order to obtain a native stack trace. However, this approach was unreliable, as some devices don’t even ship said libraries. Furthermore, Android will restrict the dlopen syscall in an unfavorable way for this approach in a future version.
  • We changed our approach by trying to do less work: We now rely on a system process by Android aka. debuggerd to provide us a native stack trace. On some Android versions this requires us to set DUMPABLE.
  • Workaround for .NET Standard NuGets on desktop:
  • Some .NET Standard NuGets like System.IO.Compression resolve to assemblies that won’t work with Mono on Desktop. To handle this we implemented a series of workarounds:
  • Deny loading problematic assemblies. They will be handled as if they did not exist
  • Deny remapping to problematic assembly versions. The system version will be used instead.
  • Windows Support:
  • Mono can now run on Win64.
  • Bring PowerPC back to life
  • Mono can bootstrap on ppc64le.
  • Bug Fixes:
  • /placeholder for list of fixed bugzilla bugs/

New in Mono for Windows 4.8.0.495 (Feb 24, 2017)

  • HIGHLIGHTS:
  • API Additions for .NET Standard 2.0
  • Cross-compilation with MKBundle
  • TLS 1.2 support
  • IN DEPTH:
  • API additions for .NET Standard 2.0:
  • We added APIs to comply with .NET Standard 2.0, which is still a work in progress at the time of this writing. Note that in some cases an implementation is still missing and will throw at runtime.
  • Please check the .NET Standard repository on GitHub for more details about .NET Standard.
  • TLS 1.2 Support:
  • Mono now ships with TLS 1.2, powered by Google’s BoringSSL project.
  • To use it, you must set the environment variable MONO_TLS_PROVIDER to the value “btls”
  • This affects Mono when it is built from source code and is also the stack used on Xamarin.Android.
  • Xamarin.iOS, Xamarin.Mac and the Mono installed by the official Mac MDK installer use Apple’s TLS stack instead which uses Apple’s system certificate store to resolve the root certificates, so everything works out of the box.
  • On BoringSSL systems like Linux, you can populate the Mono certificate store from the system certificate store using the cert-sync tool. After that, run the btls-cert-sync tool to convert from the old Mono certificate store into the new one.
  • On Mac if you compiled and installed Mono from source (i.e. you don’t have access to the Apple TLS implementation), you can use mozroots to populate the Mono certificate stores with Mozilla’s certificates
  • Cross-compilation with MKBundle:
  • The MKBundle tool has been updated to easily support cross-compilation, instead of using a native compiler to compile a bundled executable, Mono has been altered to support payloads embedded in the executable.
  • To do this, use the new --simple command line option.
  • You can configure the resulting bundle with some command line options that you wish to pass to the runtime, for example, the following would disable inlining
  • The cross-compilation feature requires the Mono team to update the packages on the server and might not be working during the alpha period, but will be available at ship time.
  • We have also extended the tool to allow you to configure the environment variables that you wish your bundled executable uses at runtime (for example to set some Mono internal configuration options with --env), distribute native libraries with --library, specify additional character encodings with --i18n and specify a machine.config file with --config.
  • For an overview of all the new features, check the mkbundle(1) manual page.
  • Runtime Logging:
  • The new MONO_LOG_DEST environment variable can set to instruct the runtime where to write the tracing messages to. If this variable is not set, the default continues to be stdout, if the value is set to the special syslog value, the tracing will be sent to the syslog, on Windows it will be sent to the mono.log file.
  • The MONO_LOG_HEADER environment variable, if set, will include the id, timestampe and process id on the trace logs.
  • Concurrent SGen:
  • We now support a concurrent mode for the major collector. As opposed to the serial major collector, which suspends the world, does all the work and resumes it, the concurrent major uses two, significantly smaller pauses. These are the starting pause, which initialises the root set for a worker that runs concurrently with your application, followed by a finishing pause, once the concurrent worker is done, that ends the major collection. In order to use it you need to pass MONO_GC_PARAMS=major=marksweep-conc to the environment of the mono runtime.
  • This mode has been present for a few years now, but only over the recent releases (4.4 and 4.6) has it seen significant improvements. These improvements consist in improved memory usage with it, further reduction of the finishing pause and stability improvements. As of this release, this mode has been strongly tested on desktop platforms and we encourage its use there. Over the next releases we plan to adopt it as the default SGen mode.
  • WINDOWS:
  • Mono on Windows has vastly improved in this release as we make it a first class supported platform in Mono. We placed a significant amount of work on making Mono on Windows pass our test suites and add many new capabilities, like full static compilation (full AOT).
  • Mono’s port to Windows now includes the beginning of full static compilation, which will make it suitable to be embedded in UWP apps and is the foundation for more console support.
  • Bug Fixes:
  • Assertion when deleting global namespace inside method
  • [PATCH] pending_exception support is incomplete
  • Mono Compiler crashes when using a DelegateType as a method call
  • generics aot jit problem
  • Attempting to JIT compile methodusing Linq’s “Any” fails on the device
  • Unit test UI table cell extends beyond cell bounds for failed test
  • DataContractJsonSerializer deserialization fails with subclass of List as known type
  • ScrollEventArgs in Form_Scroll method has invalid values
  • DismissModalViewControllerAnimated() crashes on 5.2.9
  • MonoDevelop fails to start with no warning if Gtk# is not installed on windows
  • Mono allows to access not accessible method
  • DefaultNonPersistentConnectionLimit is to low
  • Usage of XElement with XmlAnyElementAttribute is not supported by XmlSerializer
  • WebException.Response is null when https request needs proxy authentication
  • Compiling class referencing corefx facade/contract assemblies raises error “Reference to type System.SByte claims it is defined assembly mscorlib,.. but couldn’t be found”
  • ZipArchive ctor throws InvalidDataException for WebConnectionStream
  • Compilation generates CS1701 warning
  • WebRequest::BeginGetRequestStream incorrectly sets IAsyncResult::CompletedSynchronously to always true
  • Mono crashes when marshalling fixed arrays
  • Debugger crash on break-all, step into sequence.
  • Dns.GetHostEntry no longer supports IPv6
  • Type System.ServiceModel.Security.Tokens.BinarySecretSecurityToken is missing in assembly System.IdentityModel
  • [System.IO.Compression] issues with ZipArchiveEntry streams
  • Xamarin.Android apps on the Samsung Galaxy S7 fails to start with the error System.ExecutionEngineException SIGILL
  • Mono can’t parse Date in DB wich is in format“2016-02-04 10:39:11Z”
  • [System.IO.Compression] ZipArchive can create an ZipArchiveEntry that has a modified time of DateTime.MinValue
  • DataViewTest2.DataView_ListChangedEventTest occasionally fails with llvm+sgen
  • System.TimeZoneInfo.IsDaylightSavingTime (DateTimeOffset dateTimeOffset) Not Implemented Exception
  • [WatchOS 2] Incorrect calling convention for P/Invokes taking structures
  • [aot] Build fails due to ‘Sgen STW requires a working mono-context’ error
  • mono_class_is_subclass_of return incorrect value by assuming mono_class_init has been called on parameters
  • SafeSocketHandle ObjectDisposedException ‘handle’ exception with linked CancellationTokenSource
  • DateTimeOffset.ToLocalTime() throwing erroneous error
  • DLR crashes when trying to convert a object to null.
  • [iOS]TimerTest failing randomly on devices,
  • HttpResponseMessage does not support multiple Links header entries
  • A Method That Accepts a FormattableString Object Is Not Called
  • Assertion when deleting global namespace inside method
  • [PATCH] pending_exception support is incomplete
  • Mono Compiler crashes when using a DelegateType as a method call
  • generics aot jit problem
  • Attempting to JIT compile methodusing Linq’s “Any” fails on the device
  • Unit test UI table cell extends beyond cell bounds for failed test
  • DataContractJsonSerializer deserialization fails with subclass of List as known type
  • ScrollEventArgs in Form_Scroll method has invalid values
  • DismissModalViewControllerAnimated() crashes on 5.2.9
  • MonoDevelop fails to start with no warning if Gtk# is not installed on windows
  • Mono allows to access not accessible method
  • DefaultNonPersistentConnectionLimit is to low
  • Usage of XElement with XmlAnyElementAttribute is not supported by XmlSerializer
  • WebException.Response is null when https request needs proxy authentication
  • Compiling class referencing corefx facade/contract assemblies raises error “Reference to type ‘System.SByte’ claims it is defined assembly ‘mscorlib,..’ but couldn’t be found”
  • ZipArchive ctor throws InvalidDataException for WebConnectionStream
  • Compilation generates CS1701 warning
  • WebRequest::BeginGetRequestStream incorrectly sets IAsyncResult::CompletedSynchronously to always true
  • Mono crashes when marshalling fixed arrays
  • Debugger crash on break-all, step into sequence.
  • Dns.GetHostEntry no longer supports IPv6
  • Type System.ServiceModel.Security.Tokens.BinarySecretSecurityToken is missing in assembly System.IdentityModel
  • [System.IO.Compression] issues with ZipArchiveEntry streams
  • Xamarin.Android apps on the Samsung Galaxy S7 fails to start with the error System.ExecutionEngineException SIGILL
  • Mono can’t parse Date in DB wich is in format“2016-02-04 10:39:11Z”
  • [System.IO.Compression] ZipArchive can create an ZipArchiveEntry that has a modified time of DateTime.MinValue
  • DataViewTest2.DataView_ListChangedEventTest occasionally fails with llvm+sgen
  • System.TimeZoneInfo.IsDaylightSavingTime (DateTimeOffset dateTimeOffset) Not Implemented Exception
  • [WatchOS 2] Incorrect calling convention for P/Invokes taking structures
  • [aot] Build fails due to ‘Sgen STW requires a working mono-context’ error
  • mono_class_is_subclass_of return incorrect value by assuming mono_class_init has been called on parameters
  • SafeSocketHandle ObjectDisposedException ‘handle’ exception with linked CancellationTokenSource
  • DateTimeOffset.ToLocalTime() throwing erroneous error
  • DLR crashes when trying to convert a object to null.
  • [iOS]TimerTest failing randomly on devices,
  • HttpResponseMessage does not support multiple Links header entries
  • A Method That Accepts a FormattableString Object Is Not Called
  • Compiler fails to recognize Indexer
  • Mono 4.4.0 crashes when using Socket.ConnectAsync to a unix domain socket if the path doesn’t exist
  • new DateTime().ToLocalTime() results in an exception
  • MonoTests.System.Threading.MonitorTest.Enter_Null crashes test runtime with assertion
  • Zip version needed to extract not correct in System.IO.Compression
  • [Cycle 7] “System.Net.WebExceptionErrorNameResolutionFailure” when attempting web requests with certain raw IP addresses
  • Reflection throws AmbiguousMatchException when calling GetProperty on a class that inherits from a generic base class.
  • NotSupportedException thrown from IPInterfaceProperties.UnicastAddresses
  • invoke.exe test asserts on bitcode
  • Bitcode “missing image did not probe corlib” exception thrown
  • CodeDom cannot call mcs because of invalid encoding configuration
  • error CS0121The call is ambiguous
  • (managed_alloc) FatalManaged allocator missing for (mkbundle) in Mono 4.4.X
  • sdb deadlocks all the time while XS debugs XS
  • error CS0529Inherited interface causes a cycle in the interface hierarchy.
  • [System.IO.Compression] Cannot create ZipArchive with duplicate entries with same name
  • Compiler crashed with code1, “Await yields with non-empty stack” from AssertEmptyStack ()
  • WCF client Expecting FaultException raising NotImplemented Exception instead When element is provided.
  • COOPgc unsafe mode when printing native backtrace causes crash if GC is triggered
  • System.IO.Compression.ZipArchive vs System.Xml.XmlReader
  • Build runs indefinitely and never finishes
  • WebClient.DownloadString returns 401 Unauthorized when using Basic authentication
  • String Interpolation available even when langversion < 6
  • Volatile fields don’t enforce acquire - release semantics like Volatile.Read() and Volatile.Write()
  • InternalError / Crash when using System.Net.Http and PCL library
  • Switch fall-through not rejected
  • wrong compiler error when using IEnumerable.Sum
  • coopcrash with watchos system tests
  • Can’t wait for more than 429496 ms (429s)
  • Unnecessary dependency checks
  • Deploying an iOS app to iPhone 6S crashes when a breakpoint is set
  • XmlSerializer does not deserialize UTC Time values on Xamarin.Android but works well on windows.
  • [Cycle 7] “System.Net.WebExceptionErrorNameResolutionFailure” on second web request to certain raw IP addresses with HttpClient
  • Encoding iso-8859-1 throws IndexOutOfRangeException for Unicode surrogate pairs
  • ZipArchive.Entries is not updated when ZipArchiveEntry is deleted
  • System.Uri cannot parse url with underscore at start
  • [watchOS] Cannot enter GC safe region if the thread is not attached
  • Keep CurrentCulture in async/await
  • Inconsistency in Compilation of Async Code Compared to MSFT Compilers
  • Runtime crash at reflection.c:mono_custom_attrs_construct_by_type while calling GetCustomAttributes for a proxy class
  • Thread aborts in the middle of .cctor and hell break loose
  • WCSessionReplyHandler crashes WatchKit app
  • “using static” dependent on compile order
  • pragma warning disable still shows warnings in “Errors” pad
  • TimeZoneInfo.ConvertTimeBySystemTimeZoneId ArgumentException
  • [Cycle 8] “Index was out of range. Must be non-negative and less than the size of the collection” in System.Collections.Generic.List1[T].set_Item() when attempting to compile certain C# code involving tasks, async/await, and try/catch/finally
  • Nuget resolves .netstandard <= 1.3 when Xamarin.IOS does not support it
  • Delegate caching can invoke unrelated implementation leading to strange results
  • mcs crashes when unable to resolve type inside lambda using the ‘as’ operator
  • peverify is broken again
  • System.Threading.ThreadHelper.ThreadStart_Context tries to allocate, crashes
  • FTP download issue with IPv6
  • NetworkCredential does not convert SecureString
  • gosharp-regexp benchmark triggers unwinding crash when profiling
  • Can use non-accessible member with nameof
  • Debugger crash with domain unloading and VSTU
  • Array doesn’t implement non-generic IEnumerable
  • Xamarin.Mac.Socket exception:An address incompatible with the requested protocol was used
  • HttpHeaders.TryAddWithoutValidation behaves differently from .NET
  • Attempting to JIT error in function with pointer arithmetic
  • Ide Shuts downSystem.ArgumentExceptionItem has already been added. Key in dictionary‘XamlG’ Key being added‘XamlG’
  • Connecting to SQL Server using IPv4 exception.
  • RemotingConfiguration.Configure() Throws RemotingException Because it Cannot Load ‘machine.config’
  • Type.GetType(“blah”,true,false) throws TypeLoadException without message
  • Incorrect code flow analysis with goto and out parameter causes CS0177
  • SqlCommand.ExecuteReaderAsync throws NotImplementedException
  • System.Diagnostics.StartProcess does not detect dotnetcore compiled assemblies as managed
  • HttpClientHandler.SendAsync should throw HttpRequestException for proxy auth failure
  • DeflateStream decompression is incomplete if reading byte-by-byte
  • Uri.IsWellFormedUriString returns incorrect result for relative uris beginning with slash
  • Seeing new AAPT0000 errors when building certain projects against master
  • Cannot add System.Reactive to watchOS Extension project
  • C# string interpolation line does not compile on OSX but does on MSBuild
  • Wrong scopes in .mdb in case of foreach loop
  • Marshaling a native NULL pointer to a managed array creates a new zero sized array
  • If the RSA will be used by multiple threads, it has a variety of exceptions.
  • Overload resolution fails in a case where methods use a named parameter in different positions
  • Type.GetType with throwOnError true doesn’t throw for a generic instance type with too few generic arguments
  • Uri.TryCreate throws exception
  • Run path_helper in OSX postinstall script to make Mono commands available in same shell session
  • Mono 4.4.1 OSX package doesn’t clean up old symlinks from /usr/local/bin

New in Mono for Windows 4.6.2.7 (Nov 14, 2016)

  • Bug Fixes:
  • “TrustFailure (The authentication or decryption has failed.) … Invalid certificate received from server.” with “Error code: 0x5” or “Error code: 0xffffffff800b010f” when attempting to access HTTPS servers on ports other than 443
  • SIGSEGV when running roslyn

New in Mono for Windows 4.6.1.5 (Oct 18, 2016)

  • Bug Fixes:
  • Array doesn’t implement non-generic IEnumerable

New in Mono for Windows 4.6.0.245 (Sep 17, 2016)

  • IN DEPTH:
  • POTENTIALLY - TLS:
  • We have added a new implementation of TLS that supports TLS up to version 1.2 (the old version only supported up to 1.0). This is a completely new implementation, and given that it is new, we do not currently default to it, but we hope to switch to it in the future.
  • We have an implementation switcher on both the SslStream and HttpListener classes. The default implementation of SslStream for now continues to be the old Mono TLS implementation, the one that supports SSL and up to TLS 1.0. But it is now possible to switch the implementation to either our new managed implementation or any implementation built on top of something else.
  • You can control this with the MONO_TLS_PROVIDER environment variable. The possible settings are as follows:
  • default - let Mono choose the best implementation available for the platform, currently this is hardcoded to the old implementation, but we will change this once we complete the audit of our TLS stack, and we might change this on a per-platform basis to use SslStream implementations that use some native library.
  • oldtls - Mono’s historical implementation, it only goes up to TLS 1.0.
  • newtls - Mono’s new managed implementation, it supports TLS 1.0 up to 1.2
  • Any full typename - You can specify a fully qualified .NET Type, this can be used to test alternative implementations without changing Mono’s runtime: MONO_TLS_PROVIDER="Mono.Security.Providers.NewTls.NewTlsProvider, Mono.Security.Providers.NewTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=84e3aee7225169c2
  • For custom implementations, the type should subclass the Mono.Security.Interface.MonoTlsProvider interface from the Mono.Security assembly and have a public parameterless constructor.
  • Mono symbolicate:
  • mono-symbolicate requires symbols to convert native and IL offsets into file names and line numbers. mono-symbolicate original version required its caller to provide a stack trace along with the symbols to be used. The task of mapping a stack trace to the correct symbols was delegated to the caller. Doing such mapping revealed to be a big usability problem as it was necessary to track the stack trace’s assemblies versions externally.
  • Stack trace format changes were introduced to let mono-symbolicate know the symbols of stack traces with: - IL offsets, as there was no way of knowing to which version of the managed assembly the IL refers to. - Native offsets, as multiple .msym are generated and it was not possible to directly link the stack trace to those symbols.
  • The problem of mapping a stack trace IL offsets to the correct managed assembly version was fixed by changing a stack frame such as: at StackTraceDumper.Main () [0x00000] in :0 into one as: at StackTraceDumper.Main () [0x00000] in :0 Where the hash looking part in between is the module version ID (MVID) of the assembly module the method belongs to.
  • The problem of mapping native offsets to the correct .msym version was done by replacing a stack frame such as: at StackTraceDumper.m__0 () in :0 by one as: at StackTraceDumper.m__0 () in :0 The new stack frame also displays the MVID but after the # it also displays what we named as AOTID, a unique identifier embedded into the AOT compiled assembly.
  • With the changes above it is possible to know from the stack frames only which symbols versions are to be used in order to symbolicate it.
  • A symbol directory was also introduced, its purpose is to store managed assemblies into subfolders MVID named and native assemblies into subfolders AOTID named.
  • mono-symbolicate is now able to retrieve the correct symbols versions from the stack trace, and to symbolicate using the symbols in the symbol directory.
  • The changes greatly improved mono-symbolicate usability and eliminated the versioning issues it had before.
  • For mono-symbolicate to work it requires a data structure called compact sequence point to be created and stored while compiling IL to native code. The purpose of compact sequence points is to map native offsets into IL offset so the runtime can display IL offsets instead of native ones.
  • The memory overhead of using compact sequence points is about 10% of the compiled native code size. The time spent compiling increased by 4%, this is usually not an issue, 2ms for whole mscorlib. With AOT compiled assemblies there is the option of storing compact sequence points externally into .msym files, with no overheads at runtime. Overall the overheads were considered a small price to pay for the huge benefit of being able to symbolicate any future stack trace as long as the symbols are properly stored.
  • Mono can still be ran without compact sequence points by doing: MONO_DEBUG=no-compact-seq-points mono Program.exe By doing so Mono runtime will not be able to output IL offsets instead of native ones in the stack traces and mono-symbolicate will not work.
  • Log Profiler v1.0:
  • This Mono release will feature version 1.0 of the log profiler. This is the most stable version of the profiler to date. While there are a few new features, the focus has been on hardening the profiler to run on all sorts of platforms (including Linux, OS X, Android, and iOS) without crashing or otherwise destabilizing the program being profiled.
  • New Features & Changes:
  • The profiler now has support for gathering coverage data. This data can be processed into XML by mprof-report.
  • The profiler will now provide a stack trace with GC handle creation/deletion events when possible, making it easier to track down where a GC handle came from.
  • The profiler now uses a real-time signal to do sampling when supported by the operating system. This leads to significantly better signal delivery rates (usually 99-100%).
  • The profiler now sets SA_RESTART for its profiling signal to work around buggy code in the wild that assumes that a system call can’t be interrupted by arbitrary signals.
  • The profiler now uses a separate thread for sample hit processing, thus ensuring that it will not interfere with performance counter sampling.
  • The profiler will now attempt to switch the internal sampling thread to real-time priority scheduling for more consistent sample signal delivery. This usually only works for root.
  • The profiler now uses a separate thread for flushing buffers to the output file, allowing it to flush buffers in more places.
  • The profiler now flushes all thread-local buffers periodically and during certain global GC events in the program. Therefore, all code in the profiler that manually flushed buffers unconditionally has been removed.
  • The command line argument for sampling frequency is now correctly interpreted s the frequency in Hz, rather than the interval between samples.
  • The default sampling frequency is now 100 Hz (down from 1 kHz).
  • perf support for Linux now works on ARM64.
  • perf support for Linux is now disabled by default as it was too unstable on older kernels. It can still be enabled by passing --enable-perf-events to configure if you know your kernel has working support.
  • Introduced synchronization point events in the format which can be seen as a sort of ‘memory barrier’. A reader can know with certainty that the profiling session will be in a consistent state at every synchronization point.
  • The profiler now emits events for object finalization.
  • The profiler now emits more metadata load/unload and name change events.
  • Cleaned up the log format to not use LEB128 for data types that don’t need it, and to not emit pointless data that was never used.
  • All events in the log format now carry a timestamp.
  • Stability Fixes:
  • Fixed on-demand heapshots often resulting in crashes due to being processed on the profiler’s helper thread.
  • Fixed a GC crash that could occur when sampling and a thread was stopped in the middle of a managed allocator.
  • Fixed a stack corruption that could occur in the old sample hit processing code. This code has been rewritten entirely.
  • Fixed a crash when sampling that was caused by incorrect snapshot iteration logic in Mono’s linked list set code.
  • Fixed a TLS crash that could occur on OS X and iOS when sampling, because sampling signals were being sent to threads before they had finished basic initialization in libc.
  • Fixed crashes on Linux when sampling caused by the ELF header traversal code. This code has been disabled as it didn’t provide information that was particularly useful for programmers writing managed code.
  • Fixed crashes on OS X when sampling caused by invoking the dynamic linker in the sampling callback (async-signal context).
  • Fixed the profiler’s helper thread to reject on-demand heapshot requests when the profiler is not in on-demand mode.
  • Fixed a crash that could happen on startup because Mono’s threading subsystem wasn’t initialized yet.
  • Fixed the internal profiler threads not detaching from the runtime on shutdown.
  • Fixed a number of potential buffer overflows when writing events.
  • Fixed a potential hazardous free crash when shutting down the profiler.
  • Fixed potential race conditions when doing the final sample dump on shutdown.
  • Bug Fixes:
  • Fixed many cases where events would be emitted in an incorrect order. This mainly affected sample hit and method JIT events, as well as GC allocation and move events.
  • Fixed some class load events that could be lost in the profiler’s writer thread.
  • Fixed the profiler missing a lot of metadata unload events because it was shut down too early.
  • Fixed internal profiler threads sometimes showing up in thread start/stop events.
  • Fixed heapshots and coverage recording incorrectly being subject to call depth restrictions.
  • Fixed certain code paths in the profiler not calling fflush on the output file.
  • Fixed a small memory leak in the profiler’s writer thread.
  • Fixed the profiler printing a misleading time went backwards debug message.
  • New default GC bridge processor on Android
  • The Android implementation makes use of a “bridge processor” which coordinates communication between the Mono and Java garbage collectors. There are three bridge processor implementations included, “old”, “new” and “tarjan”. In 4.6.0 the default has been changed from “new” to “tarjan”. This should result in performance improvements during GC for Android apps (or desktop apps using java.interop) that had not already selected the “tarjan” collector.
  • FullAOT: Generic Value Type Sharing on x86-64
  • The gsharedvt capability, which allows certain complex uses of generics to be used in FullAOT mode, is now available on the x86-64 ISA on Mac OS X and Linux-based platforms. This means gsharedvt is now available on all platforms where FullAOT itself is supported.
  • New disable_omit_fp option for JIT/AOT compiler
  • A new flag on the MONO_DEBUG environment variable (MONO_DEBUG="disable_omit_fp") disables an optimization used by the JIT and AOT compilers where the frame pointer is omitted from stack frames. This flag is likely to result in a small performance hit but can improve the ability of external debuggers to properly display function names, particularly when using AOT.
  • Changed search path order for custom profilers
  • When using a custom profiler library, the mono installation is now preferred over the assembly root or default library search path.
  • Atomics fixes for ARM64:
  • On ARM64, the code that Mono emitted for various atomic operations in the .NET Framework did not result in sufficient memory barriers. This could lead to all sorts of random bugs both in user and framework code. Mono suffered from a similar problem in the runtime C code due to bugs in the atomic intrinsics in GCC and Clang. All of these problems have been fixed, and Mono should be much more stable on ARM64 as a result.
  • BUG FIXES:
  • System.IO.File.GetAttributes now honors the “uchg” flag on OS X when determining file writability.
  • The debugger now steps and breaks correctly when stepping into, over or out of a function which recursively calls itself.
  • When using XML configuration files, a broader set of configuration section types is now available, including System.Configuration.DictionarySectionHandler.
  • Exceptions can now be serialized using SerializeObjectState.
  • Some issues with building on Windows have been addressed.

New in Mono for Windows 4.4.2 (Aug 3, 2016)

  • Bug Fixes (incomplete list):
  • #39100 - ‘library not loaded’ error when using embedded mono
  • #41264 - System “Socket” tests fails on devices with System.ObjectDisposedException
  • #41874 - Reflection throws AmbiguousMatchException when calling GetProperty on a class that inherits from a generic base class.
  • Improvements:
  • NuGet was updated to version 2.12.

New in Mono for Windows 4.4.1 (Jul 28, 2016)

  • Bug Fixes:
  • #41775 - Zip version needed to extract not correct in System.IO.Compression
  • #41782 - [Cycle 7] "System.Net.WebException: Error: NameResolutionFailure" when attempting web requests with certain raw IP addresses
  • #41874 - Reflection throws AmbiguousMatchException when calling GetProperty on a class that inherits from a generic base class.

New in Mono for Windows 4.4.0 (Jul 28, 2016)

  • 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 /lib/mono/.
  • 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.
  • 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).

New in Mono for Windows 4.4.0.142 RC 1 (Jun 9, 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 /lib/mono/.
  • The folder structure on disk when installing Mono now looks like this:
  • 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.
  • 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).

New in Mono for Windows 4.2.3 (Mar 8, 2016)

  • Highlights:
  • This is a small maintenance release with reliability and behavior improvements.
  • Class Libraries:
  • #36116 - [System.Web.Services] Unix paths fix
  • Runtime:
  • #37079 - [jit] Fix the support for gshared types in mini_emit_initobj ()
  • #37273 - [llvm] Disable support for nested clauses.
  • Garbage Collector:
  • #38012 - [sgen] Fix register scanning on ARM
  • Performance:
  • #37846 - [jit] Fix the reference type detection for Volatile:Read/Write ()

New in Mono for Windows 4.2.1 (Nov 17, 2015)

  • Highlights:
  • More adoption of Microsoft’s open source code
  • Support for PPDB debugging format
  • New threadpool implementation
  • Runtime optimizations
  • Extensive bug fixing
  • Runtime:
  • Portable PDB files
  • Mono’s runtime can now consume debug information encoded in the new Portable PDB file format.
  • The Portable PDB (Program Database, or PPDB) format describes an encoding of debugging information produced by compilers of Common Language Infrastructure (CLI) languages and consumed by debuggers and other tools. And most importantly, it is fully documented.
  • At the same time, newer versions of Microsoft’s Roslyn compilers are now able to produce PPDB files so it is now possible to use Roslyn compilers and have the Mono runtime use their debug information.
  • The PPDB format is under active development, while Mono currently implements support for the latest edition of the format, it is possible that the format might still change.
  • Layout Changes for Nested Structures:
  • Nested structs used to be aligned to sizeof (void *) so they looked blitable, but didn’t match their native layout.
  • This caused all sort of issues when doing interop.
  • We now align them following ABI rules, which should fix a lot of issues.
  • This is a breaking change to those already native interop and relying on the wrong layout calculations done by the runtime.
  • Delegate Internals Updated:
  • Change how delegates work internally from using a reverse linked-list to an array.
  • This will be faster and allow us to enable the fast vcall thunk for delegate invoke.
  • Static Compilation (FullAOT)
  • We now collapse enum to primitives and ref types to object and share based on that.
  • So for example a KVP will share the implementation code with KVP
  • Stacktraces on re-throws:
  • We have changed the stack trace behavior on rethrows.
  • This is a merge of https://github.com/mono/mono/pull/1668
  • Most commonly, an exception is thrown immediately after it is constructed and processed without being saved. It is possible to catch exceptions, save them to variables, and throw them again at a later time.
  • When this type of exception is caught in .NET, the StackTrace on the exception object refers to the location where the exception was last thrown from. In Mono, we were giving it the location that the exception was first thrown from. This fix makes Mono more closely behave like .NET.
  • ProcessInfo.Modules:
  • ProcessInfo.Module returns the list of loaded modules, we now are able to return the address of any of the assemblies loaded with mmap(), previously this functionality was not available.
  • Microsoft’s ThreadPool:
  • We have replaced Mono’s implementation of the ThreadPool with Microsoft’s implementation. It has many interesting properties in terms of how threads are started up and terminated, which was too aggressive previously.
  • The new code is also simpler to maintain.
  • Added ARM HFA support
  • The runtime now supports the HFA calling convention on ARM architectures.
  • SafeFileHandle
  • We have extended the use of SafeFileHandle in the stack, in addition to file handles, we now use it for socket handles.
  • Concurrent Sweep in the GC
  • The purpose of this is to reduce pause times of major collections by making sweep completely concurrent.
  • The first phase of sweeping is iterating through the block list, freeing blocks without live objects, and designating the others for lazy sweeping. This phase happened while the world was stopped. This makes it concurrent. The changes include the introduction of a very simple thread pool abstraction (currently supporting only a single thread) that unifies concurrent marking, jobs when scanning roots, and concurrent sweeping.
  • Read more details and charts
  • Dropped support for external Boehm libgc
  • The Mono runtime is no longer able to use an externally compiled Boehm libgc library.
  • Support for Direct internal calls:
  • The Mono runtime can now perform direct calls to internal calls from managed code, without requiring icall wrappers.
  • The Mono runtime no longer raises exceptions directly, but instead uses the mono_set_pending_exception which allows us to remove the overhead of calling an internal call. This improved performance is mostly visible with runtime intrinsics that are invoked by the generated managed code, and shows up in particular in micro benchmarks.
  • New thread suspend machinery:
  • We reworked suspend code to be based on a state machine and eliminate known races in the process.
  • Profiler:
  • This release contains major upgrades to the profiler infrastructure to support tools like the Xamarin Profiler whose UI required more information than we were previously providing, or to make it simpler and faster for the profiler to consume and process the data.
  • Microsoft Source Code Adoption:
  • This is the second release of Mono that replaces various components of Mono with code that was released by Microsoft under the MIT license in one of three places:
  • Microsoft’s ReferenceSource drop
  • Microsoft’s CoreFX
  • Microsoft’s CoreCLR
  • While Microsoft is working towards .NET Core: a redistributable and re-imagined version of .NET, the project remains a work in progress. Mono at this point continues to provide an API that tracks the .NET desktop/server version.
  • This means that most of the code that we have integrated comes from the ReferenceSource drop. In the future, we will deliver a “Mono Core” along the same lines of .NET Core to allow the use of the Mono runtime with the new library distribution system that is being developed with CoreFX.
  • In this release, we have either ported components that were either incomplete or buggy in Mono and were relatively easy to port to Mono. There is much more to be done in this area. If you are interested in tracking those efforts, check the project status.
  • Mono ships now with a subset of the referencesource that have been adjusted to work with Mono’s class libraries or have been updated to be cross platform.
  • Changes made to Microsoft’s reference source code are published under Mono’s github organization fork at http://github.com/mono/referencesource
  • System assembly:
  • The following components in the System assembly were replaced with Microsoft’s implementation, with some small changes to make the code portable to Unix:
  • System.CodeDom implementation
  • Parts of System.Diagnostics (excluding the components that are tied with the Mono runtime)
  • Small parts of System.Net.NetworkInformation
  • Parts of System.Net (HTTP Cookie handling)
  • mscorlib assembly:
  • Around 500 .NET types were replaced with the Microsoft implementation, with small changes made to make Microsoft’s code portable.
  • Some themes in this release include:
  • Replacing some of the key types in the System namespace
  • Continued our work to replace large chunks of the globalization stack in Mono with Microsoft’s implementation
  • Portable parts of System.IO
  • Large parts of System.Reflection, those that do not depend on Mono runtime internals.
  • Large parts of System.Resources
  • The portable parts of System.Runtime.InteropServices
  • The portable parts of System.Security.Cryptography
  • Most of System.Text
  • Most of System.Runtime.Serialization
  • The threadpool
  • Most of SafeHandles
  • LINQ:
  • The types from System.Linq in the System.Core assembly have now been completely replaced with Microsoft’s implementation.
  • System.Data assembly:
  • The cross-platform parts of System.Data have been replaced with Microsoft’s implementation of System.Data.
  • The System.Data.SqlClient API which implements the connectivity to SQL server continues to be Mono’s implementation, as Microsoft’s implementation is too tied up to Windows specific code.
  • While we had an implementation of System.Data.OleDb in the past, which depended on Gnome’s GDA library, it has not been operational in many years, so we have removed the implementation, and added in its place a Windows specific version from Microsoft (that means, we do not have a cross platform OleDb, but we did not have a working one to begin with).
  • System.Runtime.Serialization assembly:
  • Switched most of this assembly to the Reference Source code. We have made a few changes that allow this assembly to be used with systems that do not allow dynamic code generation (iOS, PlayStation and Xbox)
  • System.Xml and System.Xml.Linq assemblies:
  • We have replaced Mono’s System.XML implementation with Microsoft’s version.
  • For systems that do not allow dynamic code generation (iOS, PlayStation, Xbox), the XmlSerializer continues to be Mono’s old XmlSerializer.
  • Replaced Assemblies with Microsoft code:
  • The following assemblies are now mostly based on Microsoft’s ReferenceSource code, with small changes to make them cross platform, or otherwise be integrated into Mono’s build system:
  • System.Data.DataSetExtension
  • System.Runtime.DurableInstancing
  • SMDiagnostics
  • System.ServiceModel.Internals
  • System.Web.Services
  • Tools:
  • mono-symbolicate
  • New tool that is a tool that converts a stack trace with :0 into one with file names and line numbers.
  • MonoDoc:
  • The mdoc command has been updated to better match generic arguments when updating your existing documentation.
  • We no longer ship all of Lucene.Net, instead we only ship the parts that MonoDoc actually uses.
  • mkbundle:
  • Now takes a --dos2unix[=false] parameter which controls whether mkbundle should use the dos2unix command on the resulting output.
  • Mono Linker:
  • The Mono linker adds support for PCL type forwarders, making the linker PCL friendly.
  • The linker also now supports descriptor files embedded into assemblies being linked. This allows developers to embed linker description files that can instruct the linker how to link an assembly without requiring the end user to know about the internals of an assembly.
  • Adds support for linking security declarations.
  • It also fixes support for generics and linking and improves the linker performance.
  • mdbrebase:
  • The tool now has a silent mode
  • mono-api-html:
  • Now uses CSS for coloring API diffs, instead of old school HTML.
  • It now ignores non-important attribute differences
  • Properly colorize removed types (as red).
  • Print ‘NotSerialized’ field attribute change (as not breaking).
  • Ignore ‘HasSecurity’ and ‘PInvokeImpl’ method attribute differences.
  • Render property indexers (and detect name change in property indexer parameters).
  • Improve debug spew to print proper method/field attributes.
  • Renders generic parameter constraints
  • ilasm
  • Implement support for many undocumented features in ilasm
  • xbuild
  • Improves the Visual Basic compiler support (requires Roslyn based compiler, available separately).
  • Bug Fixes:
  • #32886 - Xamarin-product private bug
  • #33066 - Watch evaluations different in XS than VS
  • #32918 - StackTrace() missing original exception - ExceptionDispatchInfo
  • #32931 - Xamarin-product private bug
  • #33080 - Xamarin-product private bug
  • #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
  • #32539 - Process.ProcessName value fetched using Process.GetProcesses () is trimmed to 15 characters
  • #32947 - App just hangs on iOS9 device with iOS9 SDK
  • #32815 - PropertyInfo.Module throws System.NotImplementedException
  • #32832 - C#6 string interpolation with dictionary initializer fails to compile
  • #31877 - SendChunked - "Method must be implemented"
  • #32732 - Xamarin-product private bug
  • #32712 - Incorrect compile error CS4016 when for async function that returns Task
  • #32179 - Consistent crash in mini-arm.c when running FSharp on Raspberry Pi 2
  • #32685 - NRE in ServicePoint.CheckAvaliableForRecycling
  • #32561 - Could not load file or assembly Microsoft.Build.Utilities
  • #31830 - Xamarin-product private bug
  • #27864 - [iOS 8.2] SQLite.net queries fail in iOS 8.2 if they contain UNION or COLLATE
  • #32456 - Expression-bodied properties cause issues in conjunction with XML comments
  • #32060 - Internal compiler error
  • #31932 - Regression: Stack Overflow with native P/Invoke Callback
  • #32137 - System.Text.Encoding.UTF8.EncodingName not the returning human-readable description of the current encoding
  • #31948 - Mono C# compiler incorrectly emits CS0647 for attributes on method parameters
  • #32135 - C# 6 string interpolation and lambdas miscompilation
  • #32130 - Parenthesis around elvis operators do not resolve to nullable
  • #32054 - Internal compiler error using Null Coalescing Operator on System.Nullable
  • #10268 - Linker issue with horizontallistview project in release mode
  • #27620 - Xamarin-product private bug
  • #31921 - Xamarin-product private bug
  • #31451 - mono_trace_set_printerr_handler calls g_set_print_handler instead of g_set_printerr_handler
  • #31784 - Xamarin-product private bug
  • #31829 - Xamarin-product private bug
  • #30023 - Using default constructor in watch window does not work
  • #31635 - UnixMarshal.PtrToString fails with UTF32Encoding
  • #31582 - iOS -O=float32 fails for some operations on ARM7
  • #31199 - Seeing ‘Data unprotection failed.’ when attempting to run ‘mono NuGet.exe restore’
  • #30698 - Build fails when building for device using –aot-options=-O=float32 and performing a calculation on float or nfloat variables
  • #31396 - Stack overflow while mono loads roslyn CSharpSyntaxGenerator.exe
  • #30488 - [XI 8.10.1] "Error setting up QueryLanguage class vtable" during AOT of Rx-Linq assembly, related to the linker removing certain methods from the QueryLanguage class
  • #31507 - ObjectDisposedException when canceling postAsync
  • #30904 - Compiler crash with Mono 4.0.1 under Ubuntu 14.04
  • #31398 - Cultures zh-Hans and zh-CHS are equal when they should not be
  • #31336 - HttpClient adds comma in User-Agent
  • #31369 - CodeDom can’t compile code on El Capitan
  • #31289 - Xamarin-product private bug
  • #31231 - Crash with generics makeref
  • #30825 - Null string to mono_mmap_open_handle Regression between 4.1.0.1738 and 4.3.0.109
  • #30880 - IPv4Mask property produces a Not Implemented Exception
  • #31092 - compiler crashed with code: 1
  • #30973 - Incorrect CS0425 when generic base class implements non-generic interface method
  • #30851 - Incorrect (Swedish) date format since version 3.4.0
  • #30741 - MemoryMappedFiles from reference source is causing segfaults
  • #31020 - Order of interfaces in GetInterfaces() is random
  • #31060 - F# sprintf AOT bug happens still now.
  • #30604 - HttpClient times out when redirected on a Post request
  • #30869 - HttpClient authentication not working
  • #30897 - App crashes with Thai locale selected
  • #30448 - Cecil loads referenced assemblies from GAC specific to the running application, not the referencing library
  • #30868 - ObjectDisposedException in mono 4.0.1.28, but not mono 3.12.1
  • #21520 - mono build is broken because of test-conc-hashtable failing to link
  • #30360 - Error in handling of /etc/localtime file to retrieve time zone on Linux
  • #30679 - Error: Compiler crashed with code: 1.
  • #30617 - Stepping over foreach exits method
  • #29491 - Xamarin-product private bug
  • #30695 - Invalid syntax (using ?.) crashes smcs
  • #30587 - Xamarin-product private bug
  • #27103 - mono-service segfault reflection.c:7477
  • #30043 - Disposing a FileSystemWatcher object causes ArgumentOutOfRangeException
  • #30472 - Xamarin-product private bug
  • #29927 - Http Response doesn’t UnescapeDataString
  • #30551 - Potential race in do_rehash
  • #30529 - Xamarin-product private bug
  • #30469 - String interpolation with escaped bracket generates wrong result
  • #30478 - Inner finally block not called
  • #30502 - AssemblyName.CultureName implementation differs from .NET.
  • #30507 - Xamarin-product private bug
  • #29928 - Problems with encodings
  • #30204 - Xamarin-product private bug
  • #28187 - Calling System.Environment.Exit() leads to SIGABRT: Assertion at mini-exceptions.c:834, condition `domain’ not met
  • #29726 - NSTimer stops if tick handler processing takes long time but only in 32-bit ARMv7 code
  • #29906 - Static method TimeZoneInfo.GetSystemTimeZones() is not thread safe.
  • #30349 - Xamarin-product private bug
  • #30267 - Constant value ‘invalid decimal constant’ cannot be converted to a ‘double’
  • #28793 - SynchronizationContext.SetSynchronizationContext leaks back inappropriately into caller
  • #30060 - Xamarin-product private bug
  • #30276 - Xamarin-product private bug
  • #19697 - WCF SendTimeout not working in Xamarin
  • #23792 - SOAP response incorrectly truncated at chunk boundary on Android using httpClient to send SOAP over SSL
  • #30205 - Xamarin-product private bug
  • #30171 - BinaryReader.ReadChar() returns incorrect result on 8.10
  • #24968 - All characters are allowed as Unicode escape sequences within identifiers
  • #28398 - * Assertion: should not be reached at class.c:6405
  • #30099 - Xamarin-product private bug
  • #3811 - DataContractJsonSerializer deserialization fails with subclass of List as known type
  • #29970 - [MonoNativeFunctionWrapper] doesn’t work with methods that return structures on 32bit device
  • #29615 - Bug during linking
  • #1856 - Wrong stack trace when exception is re-thrown
  • #29538 - Xamarin-product private bug
  • #29667 - Mono v4.0 crashes after a while
  • #29808 - Xamarin-product private bug
  • #29823 - 4.0 Regression - SqlConnectionBuilder broken after migrating to System.Data reference source
  • #29276 - Use of possibly unassigned field for sub struct on out parameter
  • #29665 - [Regression] System.InvalidProgramException: Invalid IL code
  • #29459 - Could not load file or assembly ‘System.ServiceModel’ or one of its dependencies. The system cannot find the file specified.
  • #29506 - invalid IL generated for async method
  • #29691 - Compiler error for read-only auto-properties with certain names
  • #29177 - Mono-hosted OWIN server crashes under load.
  • #29078 - Commit f763a006329a4a04aac7ea7a4fa03cad18b20193 has broken application
  • #28918 - MTOUCH: error MT0000: Unexpected error - Please file a bug report at http://bugzilla.xamarin.com
  • #29211 - [XI 8.10] Enabling linker with Profile 7 PCL that uses System.IO.Compression causes "Could not load file or assembly ‘System.IO.Compression’" at runtime
  • #20048 - Socket ctor missing
  • #29183 - Array constructor fails to construct multi bound array
  • #25717 - Calling a created delegate for value type fails in Mono but works in Windows
  • #4148 - JavaScriptSerializer invalid json primitive
  • #28069 - Compiler Crash, async, not existing variable
  • #28692 - GetCustomAttributes seems to return attributes in a different order than in windows.
  • #28876 - Satellite assembly finder fails for memory-loaded assemblies with GetDirectoryName(): Invalid path
  • #28209 - Xamarin-product private bug
  • #29044 - "using static" not consulted for nested type
  • #29039 - CultureInfo.GetCultures(CultureTypes.SpecificCultures) returns broken ar-SA culture
  • #24647 - ExceptionDispatchInfo::Throw does not replace capture stack trace
  • #28976 - "using static" not consulted for libraries
  • #28747 - Xamarin-product private bug
  • #28823 - strange behaviour causing loaded classes to appear unloaded when referenced from class attributes and using nay kind of linking.
  • #28961 - AOT error when upgrading to Unified API
  • #28557 - Xamarin-product private bug
  • #28857 - Nursery-canaries and AOT causes assertion failure
  • #26362 - [Process] Exited event raised while process still running
  • #28369 - mono runtime crash "assertion ‘hash != NULL’ failed"
  • #28847 - Xamarin-product private bug
  • #17817 - Convert.ToUInt64 with base 10 does not check range
  • #28777 - GZipStream (DeflateStreamNative) native exception after Flush() with no buffer data: Internal error (no progress possible) Flush
  • #28837 - Problems determining overloading candidate
  • #28774 - mcs crashes with stack overflow when compiling class with Lazy and stackalloc byte[]
  • #28772 - New auto-implemented property error with the first C# 6.0 alpha update.
  • #28014 - Type is not serializable with a type-forwarded SerializableAttribute
  • #28022 - Mono C# compiler incorrectly emits error CS0053 when using protected internal members in a derived class that is nested inside another class
  • #28211 - Getting "error MT3001: Could not AOT the assembly" When Building for Device
  • #28617 - Linker-modified System.Net.Http.Primitives.dll causes ArgumentOutOfRangeException during mono-cil-strip
  • #28653 - Invalid CS0311 error for overloaded generic method with dynamic parameter
  • #28648 - Invalid CS0118 error when a custom namespace called "var" is declared and var used in code
  • #28645 - Invalid CS1908 error for dynamic parameter with DefaultParameterValue attribute
  • #24086 - Runtime test - TestDaylightSavingsTime fails against Asia/Amman for 2012 DateTimes
  • #28172 - 3.12.1.
  • #28651 - Invalid CS1501 error for overload with optional parameter in interface
  • #17615 - Unexpected parsing with Lithuanian culture
  • #28611 - Xamarin-product private bug
  • #28201 - Mono C# compiler incorrectly emits CS0229 when referencing from a DLL a property in an interface that hides a method from an interface that it is derived from.
  • #28196 - FlowAnalysis issue with out parameter and finally and delegate containing a return
  • #26109 - Xamarin-product private bug
  • #28435 - Xamarin-product private bug
  • #28296 - mcs incorrectly reports CS0188: The `this’ object cannot be used before all of its fields are assigned
  • #28213 - Xamarin Studio on OSX fails to compile where Visual Studio 2013 succeeds
  • #26936 - Xamarin-product private bug
  • #28292 - Internal compiler error when an interpolated string is too long
  • #28293 - Unexpected symbol error when two interpolated strings are used with the ternary operator
  • #28383 - Marshal.AllocCoTaskMem(0) incorrectly returns null
  • #27667 - Xamarin-product private bug
  • #28311 - Xamarin-product private bug
  • #28331 - Custom Attributes incompatability
  • #28290 - Marshal.AllocCoTaskMem does not throw OutOfMemoryException on alloc failure
  • #28235 - System.Type change to reference source broke IronPython
  • #27787 - Xamarin-product private bug
  • #28181 - * Assertion: should not be reached at debugger-agent.c:5957
  • #28184 - ParameterInfo.GetCustomAttributes returns null in some cases
  • #28098 - After running a mono process the shell no longer shows input chars
  • #19823 - InvalidOperationException in ServicePoint.RemoveConnectionGroup
  • #27725 - Missing day names in ar-EG culture
  • #18171 - [System.Xml.Linq, System.Runtime.Serialization] XElement implements IXmlSerializable, but lacks parameterless constructor, and has incorrect QName in KnownTypeCollection
  • #14856 - XmlDocument.Load() throws Exception if XmlResolver is set to null
  • #2917 - XslCompiledTransform.Load ignoring xsl:output properties
  • #27597 - csharp REPL on Windows doesn’t accept any input
  • #26363 - [Process] StartTime is unset for all Processes returned by Process.GetProcesses
  • #27982 - Inconsistent behavior in DynamicAttribute.Equals() method
  • #26858 - HttpListener’s scheme parser is case sensitive
  • #27737 - Xamarin-product private bug
  • #27565 - Xamarin-product private bug
  • #26989 - Xamarin-product private bug
  • #27147 - Xamarin-product private bug
  • #25254 - Xamarin-product private bug
  • #26998 - Issue with DataContractJsonSerializer - Deserialize type incorrect on iOS
  • #25559 - Memory leak in Microsoft.Win32.Registry.toKey()
  • #27697 - Debugger crash: error: * Assertion at ../../../../../mono/mono/mini/debugger-agent.c:2475, condition `tls’ not met
  • #27614 - Native interop: out LPArrays cause crash
  • #27707 - Xamarin-product private bug
  • #20764 - WebMessageFormatter crashes with void return type OperationContract
  • #27258 - Two build problems on s390x
  • #27533 - C#6 interpolated string raises Internal compiler error during parsingSystem during compilation
  • #27525 - C#6 interpolated string raises NotImplementedException: CloneTo during compilation
  • #27441 - Better compiler error message for unexpected symbol/unexpected character.
  • #27492 - Build error in reference sources for System.ComponentModel namespace
  • #27269 - Xamarin-product private bug
  • #19334 - BeginWrite failure at System.Net.Sockets.NetworkStream.BeginWrite
  • #27386 - HttpClient doesn’t honor BaseAddress with the Get*Async methods
  • #27338 - Xamarin-product private bug
  • #27352 - HttpRequestMessage: adding Accept header with multiple values fails
  • #16475 - Method not found: ‘System.Web.Routing.RouteCollection.get_AppendTrailingSlash’
  • #21810 - Method not implemented: ‘System.Web.HttpApplication.RegisterModule’
  • #35301 - Difference in behavior of Type.InvokeMember method

New in Mono for Windows 4.0.3 (Aug 14, 2015)

  • Improvements:
  • Various stability improvements
  • Bug Fixes
  • Some LLVM artifacts are being written to the base project dir rather than obj/$Config/
  • System.IO.Package.LoadRelationships throws null reference for some NuGet packages with PCLs generated on Windows
  • ObjectDisposedException in mono 4.0.1.28, but not mono 3.12.1
  • iOS -O=float32 fails for some operations on ARM7
  • Disposing a FileSystemWatcher object causes ArgumentOutOfRangeException
  • F# sprintf AOT bug happens still now

New in Mono for Windows 4.0.2 (Jul 2, 2015)

  • Improvements:
  • XBuild fixes (MonoDevelop no longer fails to build if Gtk#3 is installed)
  • Bug Fixes:
  • Moq related Nunit tests fail with RemoteException (Unix transport error) since Mono 4.0
  • Bump Mono NuGet to 2.8.5
  • XAttribute.ToString() outputs wrong result if attribute contains namespace

New in Mono for Windows 4.0.1 (Jul 2, 2015)

  • Improvements:
  • Fixed DateTime parsing of Xml strings.
  • Fixed intrinsic signature checks to take into account the ‘this’ parameter
  • Redesigned profiler buffer flushing and method reporting to provide correctly ordered events to consumers.
  • Use the same dwarfhw register mapping on x86 for both LLVM and jitted code, the one used by LLVM is the official version.
  • Fix decimal comparison by using signed char comparison of signs; Fix size of jmp instruction sequence
  • Correctly disable seq points in wrappers on android.
  • Improve Visual Basic build support
  • Fix the initialization of the pid array in ves_icall_System_Diagnostics_Process_GetProcesses_internal ().
  • Avoid calling task_for_pid on osx 10.5+ and ios.
  • Improve error checking when setting up class vtable.
  • Bug Fixes:
  • Allow abstract base classes in lists
  • Fix freeing invalid memory in CreateProcess () if the executable was not found.
  • Transition from step over to step into when control leaves managed code.
  • Disable deadce in the liveness2 pass as well when compiling for sdb.
  • Mark SecurityDeclarations
  • First specific culture returned by enumerator was not fully initialized.
  • Check SP on thread suspend correctly.
  • Remove inappropropriate use of Marshal.SizeOf.

New in Mono for Windows 4.0.0 (May 1, 2015)

  • FLOATING POINT OPTIMIZATIONS:
  • Mono has historically chosen to use the highest possible precision for all floating point operations. This means that both 64-bit math and 32-bit math were done with the highest precision available.
  • But performance sensitive code that might not need high precision was negatively impacted.
  • With this release we are introducing support for performing 32-bit floating operations using 32-bit math. This produces faster code at the expense of fidelity. This mode of operation can be enabled with the -O=float32 option. This option currently needs to be enabled manually, it is not part of the -O=all options.
  • C#:
  • Mono’s C# compiler now defaults to C# 6.0
  • The compiler will now avoid generating a GUID each time it builds, generating identical builds across recompilations. Following the steps of Roslyn’s new default.
  • MICROSOFT SOURCE CODE ADOPTION:
  • This is the first release of Mono that replaces various components of Mono with code that was released by Microsoft under the MIT license in one of three places:
  • Microsoft’s ReferenceSource drop
  • Microsoft’s CoreFX
  • Microsoft’s CoreCLR
  • While Microsoft is working towards .NET Core: a redistributable and re-imagined version of .NET, the project remains a work in progress. Mono at this point continues to provide an API that tracks the .NET desktop/server version.
  • This means that most of the code that we have integrated comes from the ReferenceSource drop. In the future, we will deliver a “Mono Core” along the same lines of .NET Core to allow the use of the Mono runtime with the new library distribution system that is being developed with CoreFX.
  • In this release, we have ported components that were either incomplete or buggy in Mono and were relatively easy to port to Mono. There is much more to be done in this area.
  • Mono ships now with a subset of the referencesource that have been adjusted to work with Mono’s class libraries or have been updated to be cross platform.
  • Decimal:
  • We have replaced Mono’s System.Decimal implementation with Microsoft’s version. This fixed a couple of formatting bugs. While Mono’s code did not have any major bugs, Microsoft’s implementation is more efficient and is actively maintained. Fixing bugs in System.Decimal was always difficult.
  • Assorted Microsoft Classes Imported:
  • These are some highlights of code imported from Microsoft (smaller bits like attributes, enumerations, event arguments, exceptions or other simple bits are not shown):
  • The following namespaces have been entirely, or almost entirely replaced with ReferenceSource code:
  • System.Collections
  • System.Collections.Concurrent
  • System.Collections.Generic
  • System.Collections.Specialized
  • System.ComponentModel
  • System.ComponentModel.Design
  • System.Diagnostic.Contracts
  • System.Linq
  • System.Linq.Parallel
  • System.Text.RegularExpressions
  • System.Runtime.CompilerServices
  • System.Threading.Tasks
  • Partial changes:
  • System:
  • ArraySegment
  • BitConverter
  • Boolean, Byte, Char, Decimal, Int16, Int32, Int64, SByte, UInt16, UInt32, UInt64,
  • Convert
  • DateTime, Decimal
  • Guid
  • Lazy
  • Random
  • TimeSpan
  • Version
  • System.Collections.Generic
  • HashSet
  • Mostly replaced
  • System.Diagnostics.Contracts
  • System.Globalization
  • Entire calendar stack
  • DaylightTime
  • TextInfo (replaces text categorization tables, replaces it with .NET which is half the size)
  • System.IO
  • BufferedStream
  • Stream
  • MemoryStream
  • StreamReader, StreamWriter, StringReader, StringWriter, TextReader, TextWriter
  • System.Linq.Expressions
  • DynamicExpression, ExpressionVisitor
  • System.Net
  • Cookie, CookieCollection, CookieContainer,
  • FtpWebRequest
  • WebClient
  • System.Text
  • Bring the non-code page encoders
  • System.Threading (about 60% replaced)
  • GARBAGE COLLECTOR:
  • The Xamarin performance team has been fine tuning Mono’s SGen garbage collector.
  • DROPPED SUPPORT FOR OLD FRAMEWORKS:
  • Reference Assemblies:
  • We no longer build the reference assemblies for the .NET 2.0, .NET 3.5 or .NET 4.0 APIs, we now ship binaries of the reference assemblies (API contracts, without any actual executable code in them).
  • Mono will now only build the .NET 4.5 assemblies as well as the mobile-based profiles.
  • Note: You can still run assemblies compiled for earlier .NET profiles on Mono, there’s no need to recompile them (they’ll just run on the .NET 4.5 assemblies instead).
  • Npgsql:
  • Mono no longer distributes the Npgsql driver. Developers that need it will be better served by using the actively maintained Npgsql driver from this site
  • EntityFramework:
  • The version of EntityFramework that we shipped had not been updated in a long time, and users are currently getting EntityFramework with NuGet.
  • OTHER FEATURES:
  • Added LLDB scripts to assist developers debugging the runtime with LLDB
  • MonoIO method and classes now uses SafeHandles
  • System.Net.NetworkInformation implements more features on more platforms
  • FINE TUNING:
  • We now inline copies of structures up to eight machine words, up from the previous five. Values larger than that still call memcpy to complete the operation.
  • We now support returning floating point structures by value and can better pack floating point structures.
  • LLVM is now given more lattitude to inline generated code.
  • More methods can be compiled with LLVM on ARM. This helps many methods that passed large structures as parameters.
  • All atomic methods in the framework are now recognized by the JIT as intrinsics and are inlined as specialized code on platforms that support it. This includes all methods on Interlocked and Volatile, as well as the MemoryBarrier, VolatileRead, and VolatileWrite methods on Thread.
  • On x86-64, Thread.MemoryBarrier is now implemented with mfence instead of lock add rsp, 0. Also, Interlocked.Exchange is now implemented with xchg [dst], val instead of the overly expensive lock cmpxchg [dst], val loop we previously emitted.
  • For atomic methods with acquire/release semantics, we now emit memory barriers with those semantics instead of the overly strong sequentially consistent kind.
  • The Enum.HasFlag method is now significantly faster for the most typical usage pattern, which is a.HasFlag (b) where a and b are the exact same type. We transform such calls to an actual bitwise AND and skip all the heavy reflection normally done in the method. This is about 60x faster than before. Additionally, the regular implementation of the method which is only used for rare/pathological cases is now 4x faster than before.
  • The JIT now avoids emitting pointless move opcodes when the destination register is the same as the source register.
  • The runtime now supports performing calls directly to some internal calls (those that are known not to raise exceptions). This eliminates the overheads of wrapper methods, both a performance and memory usage benefit.
  • When precompiling your assemblies, you can use the “direct-calls” option to enable this feature.
  • MONOP TOOL:
  • The monop tool now uses IKVM.Reflection to load assemblies, so it will work with foreign mscorlibs. In addition the -xi and -xa flags can be used to search types in the Xamarin.Android and Xamarin.iOS frameworks.
  • MUSL LIBC:
  • There is now rudimentary support for building Mono with the musl libc on Linux. To do this, pass --disable-boehm --without-sigaltstack to configure.
  • C99 SWITCH:
  • The runtime now requires a compiler with C99 support. For Windows users, this means that Visual Studio 2013 is now required to build Mono. Cygwin or MinGW users should not be affected by this change. Similarly, compilers on most Unix platforms have supported C99 for a long time.
  • BUG FIXES:
  • 14277: Stepping in static constructor exits
  • 17944: mono: mini-amd64.c:492: amd64_patch: Assertion `0’ failed.
  • 18800: IndexOutOfRangeException when MultipartFormDataContent filename value contains whitespace
  • 19334: BeginWrite failure at System.Net.Sockets.NetworkStream.BeginWrite
  • 19823: InvalidOperationException in ServicePoint.RemoveConnectionGroup
  • 19881: ProductInfoHeaderValue fails to parse User-Agent string without version
  • 20764: WebMessageFormatter crashes with void return type OperationContract
  • 21072: DataContractSerializer does not serialize enum flags the same as .net 4
  • 21172: text field type nvarchar(max) is truncated to 4000 chars
  • 22501: XmlSchema.Read raises InvalidElementError for certain inputs which work fine in MS.NET
  • 23242: Null reference exception occurs after the call to Int.ToString() from multiple threads
  • 23401: Sgen’s marksweep-conc fails under load test
  • 23771: UTF8 Decoder’s Convert does not keep internal state between calls when ‘flush’ parameter is false
  • 23808: HMACSHA256 default ctor creates 64-bit key, expected 64-byte
  • 23966: HttpClient.GetStreamAsync behaves differently from .Net
  • 23981: Some [Assembly*] attributes are not “compiled” correctly in the PE files
  • 23987: Unable to debug on Lollipop
  • 24084: sgen assert in sgen_obj_get_descriptor () when frequently allocating with FormatterServices.GetUninitializedObject()
  • 24086: Runtime test - TestDaylightSavingsTime failed for Casablanca (Western European Standard Time)
  • 24172: C# Invalid code generation with nested types in namespace
  • 24221: Sorting of large structs with wrong result.
  • 24300: Bad Xml produced by XmlSerializer writing on XDocument
  • 24342: Debugger race condition
  • 24419: Synchronized static methods of generic classes lock on the open type instead of the closed one
  • 24431: CultureInfo constructor error message decimal and hex lcid should be different
  • 24452: yield statement used in foreach returns first record only
  • 24511: mcs hangs during compile
  • 24537: mcs ignores missing bracket
  • 24577: Fatal Unhandled Exсeption: System.FormatException
  • 24588: __clear_cache in mini-arm.c not supported in gcc toolchain
  • 24638: Crash occurs when passing an array of objects to a COM method
  • 24675: Mono C# parser encounters a CS0584 internal compiler error when loading a constant from a legal dll
  • 24704: System.Net.Http.HttpClient PostAsync ignores timeout if webproxy isn’t accessible
  • 24720: Crash when freeing COM callable wrappers
  • 24757: LogicalCallContext not flowing with async calls
  • 24775: List.ForEach does not throw InvalidOperationException when collection was modified
  • 24784: Multiplication when passing optional parameter is now failing to compile
  • 24785: System.Net.Http, need to escape more RFC characters
  • 24935: Dynamic property is case sensitive
  • 25009: Mono crash when stopping a debug session
  • 25050: DST transition bug
  • 25059: StructLayout.Pack

New in Mono for Windows 3.12.0 (Jan 14, 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.
  • BUG FIXES:
  • Runtime:
  • 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:
  • 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:
  • 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:
  • Use ToolPath when building ToolTask execution path. Fixes #22981

New in Mono for Windows 3.10.0 (Jan 14, 2015)

  • Highlights:
  • Implemented System.IO.Compression.FileSystem.
  • Uri now implements the .NET 4.5 behavior, it can be reverted to the old behavior in the same way by setting the System.Uri::s_IriParsing static field to 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.

New in Mono for Windows 3.8.0 (Jan 14, 2015)

  • 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
  • [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
  • 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 Mono for Windows 3.6.0 (Jan 14, 2015)

  • 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
  • [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
  • 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 Mono for Windows 3.4.0 (Jan 14, 2015)

  • Revamped HttpWebRequest/ServicePoint stack:
  • Should properly reuse connections.
  • Uses the specified Idle times.
  • NTLM support has been improved.
  • SSL/TLS operations on via async APIs are now implemented using async patterns internally to greatly alleviate Thread Pool abuse.
  • Network stack:
  • Now allows developers to control which cipher suites to use with TLS/SSL.
  • ARM:
  • Emit shorter floating point operations when possible
  • Hard float support: Mono now should work on Linux distributions which uses a hard float (armhf) ABI, like the Raspberry PI.
  • Notes: Homogeneous floating point aggregates are not yet supported on armhf.
  • Documentation:
  • Updated documentation stubs to the 4.5 .NET API.
  • mono-api-html
  • Now supports regular expressions when specifying members to ignore (e.g. mono-api-html -i 'INSCopying$').
  • Breaking changesL
  • mkbundle on Mac OS X now must always link against the Objective-C Runtime (-lobjc, however, it is recommended to link against the Foundation framework as well (-framework Foundation).

New in Mono for Windows 3.2.8 (Jan 14, 2015)

  • On armhf, VFP scratch registers are now properly preserved across method calls.
  • A potential codegen bug on armhf for methods with lots of arguments has been fixed.
  • We now emit shorter floating point load/store sequences on armhf when possible.
  • Bugs surrounding alignment and mono_gc_bzero () / mono_gc_memmove () have been fixed.
  • A typo in the BigInteger.Cosh () implementation has been fixed.
  • Tuple classes now implement ITuple and have a correct ITuple.ToString () implementation.
  • Bug #17589 has been fixed.
  • Bug #17558 has been fixed.
  • A stack alignment change that broke debugging on Android/x86 has been reverted (#17410).
  • Bug #17201 has been fixed.
  • The AOT compiler now adds types for method headers for gshared methods.
  • Bug #17632 has been fixed.
  • The DISABLE_JIT build has been fixed.
  • Bug #4510 has been fixed.
  • A potential crash in mono_method_desc_full_match () has been fixed.
  • Various build system fixes so that make dist works again.

New in Mono for Windows 3.2.7 (Jan 14, 2015)

  • New features:
  • Runtime:
  • [jit] Fix the handling of OP_ISUB_IMM in abcrem.
  • [jit] Improve ABCREM on 64-bits architectures
  • [jit] Implement the delegate ctor optimization in AOT mode too.
  • [jit] Some work towards a win64 port.
  • [jit] Use vectorized exception handling on windows.
  • [jit] Initial support for the hardfp ABI on ARM.
  • [jit] Add beginnings of a mach image writer for use with xdebug.
  • [jit] Implement proper TLS offset translation on mach based kernels.
  • [jit] Add a simple loop invariant loop motion pass for use with LLVM, which moves loop invariant instructions out of loop headers into the preceeding bblock.
  • [jit] Avoid linking the try block with the EH block as this produces spurious BBs during inlining.
  • [jit] The AggressiveInlining hint now triggers class initialization so more stuff gets force-inlined.
  • [jit] Add an alias analysis pass to the JIT.
  • [jit] ARM can dynamically switch between modes.
  • [jit] Atomics and hardware fences revamped and improved.
  • [jit] Add 64bits atomics on 32bits systems , this makes PLINQ significantly faster on multicore systems.
  • [llvm] Implement support for OP_TLS_GET_REG on osx/amd64.
  • [llvm] Update list of optimizations passed to ‘opt’.
  • [runtime] Scalability work: reduce usage of the loader lock
  • [runtime] Removed the old debugger from the runtime.
  • [runtime] socket-io: make it possible to specify an interface index as a MulticastInterface SocketOption on linux.
  • [runtime] Don’t expand variant generic interfaces on arrays.
  • [runtime] Implemented g_win32_getlocale function to return correct locale.
  • [runtime] Revamped hardware caps detection.
  • [runtime] Add LLDB support to mono_gdb_render_native_backtraces () on POSIX.
  • [runtime] Promote the reference queue API to the public.
  • [runtime] Provide more public API to inspect MonoTypes, MonoClasses and MonoMethodSignatures.
  • [runtime] Improving the retrieval of the user’s locale on Apple systems.
  • [runtime] Async stack walking with AOT
  • [sdb] Allow users to specify a suspension policy when enabling an event
  • [sdb] Add async variants to the InvokeMethod methods.
  • [sdb] Support a setpgid=y/n option to –debugger-agent.
  • [sdb] Emit better debugger attribute for stepping over state machine initialization
  • [sgen] Reverse the free-list after sweeping to be in address-order.
  • [sgen] Only enqueue LOS objects if they contain references.
  • [sgen] Use gcc bitcount intrinsics where appropriate.
  • Class libraries:
  • [corlib] Implementation of System.Reflection.ParameterInfo.HasDefaultValue
  • [corlib] Implemented System.Threading.Monitor.IsEntered
  • [corlib] LogicalSet/GetData implementation in CallContext
  • [corlib] Implement CultureInfo.DefaultThreadCurrentUICulture.
  • [corlib] Implement CultureInfo.DefaultThreadCurrentCulture.
  • [corlib] Add ‘System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken’ stub.
  • [Mono.Options] Improve error message for badly bundled args.
  • [pcl] Add new ‘System.Runtime.InteropServices.WindowsRuntime’ Facade Assembly.
  • [rx] Updated Rx to 2.2 release.
  • [System] Add IsIPv6Teredo to System.Net.IpAddress
  • [System] Add more of System.ComponentModel to MOBILE profile.
  • [System.Core] Update MonoTouch System.Linq.Expression to be 4.5 compatible
  • [System.Core] Add dynamic interpreter
  • [System.Core] Support IReadOnlyList in System.Linq.Enumerable.ElementAt and ElementAtOrDefault
  • [classlib] Introduce the mobile_static build.
  • [classlib] Add OrderedDictionary to the mobile profile.
  • Tools:
  • [mcs] Suport recursive references of non-FX assemblies
  • [mcs] Implements definite assignment of expressions
  • [linker] Allow overriding MarkCustomAttribute and expose the MarkDefaultConstructor feature to subclasses
  • [xbuild] Initial MSBuild 12.0 support.
  • [xbuild] Improved xbuild diagnostics.
  • [xbuild] implement “skip target due to previous success” feature.
  • [xbuild] Add xbuild support for BuildManager
  • Bug fixes:
  • [Microsoft.Build.Engine] Fix the escaping/unescaping of FullPath metadata
  • Properly compare assembly versions when performing binding. Fixes #17368.
  • [sdb] Fix setting of byref variables in registers. Fixes #17185.
  • [System.Net.Http] Add parsing of multi-value strings. Fixes #17132
  • [io-layer] Properly check write permission of a file. Fixes #3501.
  • Don’t raise an exception if we can’t find the src assembly on a shadow copy appdomain
  • [corlib] Update en-GB first day of week. Fixes #17151
  • [mcs] Check type of index used in pointer array aritmetic. Fixes #17145
  • [runtime] Fix large file support on android, it doesn’t support -D_FILE_OFFSET_BITS=64, so call lseek64 directly. Fixes #17128.
  • fix bug #11335.
  • Fix bug #11336.
  • [io-layer] Correctly implement permission checking for File.Move. Fixes #17009.
  • The old check was simply for open sharing status, which is incorrect. The right
  • thing to do is to check for FileShare.Delete and not FileAccess.
  • [jit] Fix some checks in the arm dyn call code. Fixes #17101.
  • BXC14584 - Console windows pop up during build with mono runtime
  • [PCL] Add ReadOnlyDictionary type-forwarder for XI. Fixes #16951.
  • [corlib] Mark all promise-style task exceptions observed. Fixes #17015
  • [mcs] Emit Debuggable attribute. Fixes #16924
  • [mcs] Method group caching needs to consider type arguments as well. Fixes #17059
  • [jit] Save/restore all-callee saved registers in methods using some atomic opcodes on x86, since the opcode implementations use these registers, and the push/pop code used by these opcodes is not async safe, since the unwind code doesn’t know about it. Fixes part of #16808.
  • [runtime] Fix yet another metadata problem with dynamically created types. Fixes #14977.
  • [jit] Emit calls to class init trampolines for fields accesses inside inline methods in AOT mode. Fixes #16461.
  • [runtime] Avoid RuntimeHelpers.EnsureSufficientExecutionStack () failing on windows. Works around #16776.
  • [runtime] Call mono_class_setup_methods () before accessing klass->method.count. Fixes #16883.
  • [corlib] Update datetime patters. Fixes #17044
  • [mcs] Better check for value type base call. Fixes #16806
  • [mcs] Await flow analysis uses resolved expression. Fixes #16840
  • [gsharedvt] Avoid using the variable size code paths for non-variable size types with some array opcodes. Fixes #17023.
  • [jit] Avoid nullifying class init trampolines for recursive calls to class initializers. Fixes #16489
  • [WindowsBase] Implement GroupDescription based on moonlight implementation
  • Remove usage of mini_replace_type () from mono_jit_runtime_invoke (), runtime invokes care about the precise types of parameters. Fixes #16830.
  • [aot] Sanitize utf8 characters in symbol names. Fixes #16851.
  • Fix for PkgConfig cache orphaned entries bug (xam bug #11133)
  • [mcs] Don’t wrap reference type values in explicit nullable conversion. Fixes #16900
  • [mcs] Restore async modifiers context after nested enums declaration. Fixes #16997
  • [corlib] Promise style tasks cannot be started manually. Fixes #16857
  • [corlib] Thread.GetNamedDataSlot allocates slot on failure. Fixes #16788
  • Use LIFO policy for CancellationTokenSource Fixes #16992
  • Fix CancellationTokenSourceTest.ReEntrantRegistrationTest
  • Make tuple hash function consistent with the F# implementation
  • Don’t call CFNetworkCopyProxiesForAutoConfigurationScript from more than one thread. Fixes #7923, comment 21.
  • Check for null item in BindingList.InsertItem. Fixes #16902
  • Do not assume the first certificate of a PKCS12 file is the one matching the key (even if it’s the most common way).
  • [System] Change S.N.S.NetworkStream’s param name on ctor #16832
  • [System] When starting a process with UseShellExecute=true, don’t return a process. Fixes #16119
  • [io-layer] On OSX don’t pass -W to open as we don’t care for it waiting.
  • [runtime] A thread without a domain set cannot be running managed code. Fixes #16794.
  • [aot] Give the compilation unit entries in the DWARF debug info different names, the osx tools seem to need this (#15202).
  • [aot] Add runtime wrappers for methods of generic classes and generic methods. Fixes #16747.
  • [gsharedvt] Add a wrapper to the mono_gsharedvt_constrained_call () icall, since it calls mono_runtime_invoke () which can throw exceptions. Fixes #16439.
  • [jit] Fix TLS+AOT support in the monitor enter/exit trampolines.
  • [jit] Fix memory leaks in get_gsharedvt_type (). Fixes #16787.
  • [corlib] Mark ConcurrentDictionary serializable. Fixes #16730
  • [bcl] When finalizing a Process object, don’t touch the streams as they are finalized on their own. Fixes #10883.
  • [mcs] Clone labeled statements cache in probing mode. Fixes #16376
  • [jit]Emit explicit float rounding on amd64. Fixes #15987
  • [mcs] Update populated member cache of dynamic containers manually for additional entries. Fixes #16659
  • [mcs] Show correct #line location for files in other than current location referenced as relative files. Fixes #16576
  • [system] Redirect of put requests was converted to get. Fixes #16670
  • [corlib] Multiple fixes to TPL.
  • [Bug 14664] LogicalSet/GetData implementation in CallContext
  • [sgen]Fix a deadlock when the GC try to free a JI during world restart. Fixes #15759
  • [bcl] Invoke assembly resolve hooks even if the assembly name has a parse error. Fixes #16487.
  • [corlib] Optimize one string Join overload. Fixes #16647
  • [bcl] Handle BigInt -> long conversions that should overflow but dont. Fixes #16526
  • [System.Net.Http] Don’t throw on invalid input in TryGetValues. Fixes #16634
  • [mcs] Don’t stop type inference when a unique construction of the generic interface cannot be found. Fixes #16567
  • [mcs] Add better type conversion to unary mutators. Fixes #16578
  • [corlib] Implement task awaiters running on custom task scheduler. Fixes #16587
  • [corlib] Better conversion betwen system locale and CultureInfo. Fixes #15875
  • [xbuild] Check a ’s “Returns” first, then fall-back to “Outputs”.
  • [xbuild] Allow expressions inside a dynamic ’s metadata. Fixes #14661.
  • [sgen] Never invoke libc’s memmove() or bzero(). Fixes #16449
  • [mcs] Report nice error instead of crash for cyclic type forwarders. Fixes #16385
  • [mcs] Report all failure errors in lambda conversions. Fixes #16513
  • [xbuild] Implement task batching for properties; fixes #16403.
  • [linq] Enumerable.Join and GroupJoin needs to ignore null keys. Fixes #16530
  • [corlib] DebuggerTypeProxyAttribute.ProxyName needs to return an assembly qualified type name. Fixes #16527
  • [jit] Implement double->uintptr conversions on 64 bit platforms. Fixes #16529.
  • [sdb] Fix step-over with recursive functions. Fixes #5700.
  • [corlib] Consider all unicode separators in ToTitleCase. Fixes #16365
  • [corlib] Set initialized List capacity to match input enumeration. Fixes #16318
  • [mcs] Report ambiguity in attribute types in expanded mode. Fixes #16342
  • [mcs] Emit this initializer for structs. Fixes #16430
  • [sgen] Implement our own qsort() so as not do deadlock. #16432
  • [mcs] Dynamically calculate size of flow-analysis bitset. Fixes #4210
  • [Bug 16334] Fix ConcurrentBag.TryTake and TryPeek
  • [Bug 16267] SemaphoreSlim.Wait fix when no timeout
  • [runtime] Avoid caching member_ref tokens of dynamic images. Fixes #16096
  • Fix the `nop` opcode on some MIPS-based Loongson CPUs. https://sourceware.org/ml/binutils/2009-11/msg00387.html
  • [Bug 16186] SqlCommand.BeginExecuteInternal fix
  • [sdb] Add an ExitCode property to VMDeathEvent. Fixes #16113.
  • [aot] Increase a buffer size to avoid an assert. Fixes #16239.
  • [runtime]Type parsing of generics should not rely on the presence of a backtick. Fixes #15124.
  • [mcs] Assignment to value type readonly generated variables needs to check all member access expressions. Fixes #15832
  • [mcs] Missing type forwarded types should not cause type collision. Fixes #16196
  • [linker] Do not import something that is not marked when sweeping type references (otherwise we might re-intoduce dependencies we’re not including or need) [#16213]
  • Always show error message when type resolver produces ambiguous type. Fixes #16115
  • Setting ReceiveBufferSize & SendBufferSize on Socket (Bug 16021 & Bug 12754)
  • [sle] Enable char equality comparison. Fixes #15582
  • Update currency separators. Fixes #15425
  • Extract CurrencyDecimalDigits using currency and not territory info. Fixes #15895
  • [jit] Use unsigned comparisons with the IMT thunks as they can live in high memory addresses.
  • Task.WhenAllCore now handles empty argument list correctly. Fixes #15956
  • TimeZone.GetUtcOffset should use Standard UTC offsets for the period when daylight savings ends.
  • [runtime] Preserve the call chain in mono_arch_setup_async_callback () on amd64 to prevent crashes in the libgcc unwinder (#15969).
  • Return empty result array when calling Task.WhenAllCore with empty argument list. Fixes #15956
  • [runtime] Fix stack size detection on osx mavericks. Fixes #15890.
  • [runtime]Split thread unregistration in two steps, one with no locks, one with locks taken. Fixes #15916.
  • [runtime] Handle unaligned access in all interlocked icalls. Fixes #15925.
  • [sdb] Implement support for DebuggerStepThrough attribute. Fixes #15139.
  • [System] Avoid an NRE when Close() and Write() are concurrent. #15857
  • [sdb] Fix an assertion if a single step breakpoint is hit in a thread other than the thread the single stepping is done on. Fixes #14950.
  • [Mono.Debugger.Soft] Implemented inheritance for TypeMirror.GetCustomAttributes() Fixes bug #15320
  • [runtime] Fix an assertion in mono_arch_context_get_int_reg () on amd64. Fixes #15786.
  • When parsing documentation cref text turn on error probing for tokenizer as well. Fixes #15511
  • Better error message when member does not implement interface. Fixes #15369
  • Variables from diffent parameter block still need to be captures even if async block has no await. Fixes #15719
  • The stripper does not care if some variables can’t be referenced (they’ll be removed) and new cecil has a similar fix [#15727]
  • Update lower/upper type inference fixing to match the latest C# standard. Fixes #15505
  • Enum subtraction quirk needs to work with numeric constants only. Fixes #15520
  • When looking for base implementation of generic MVAR methods use non-inflated parameter types. Fixes #15523
  • [sdb] Add an IncludeSubclasses property to ExceptionEventRequest, to control whenever to include subclasses of the exception type. Fixes #15541
  • Fix condition (for MOBILE) that excluded System.Xml.Schema/Extensions.cs. Removed the condition since every profile we now support includes this [#15552]
  • Fill out AssemblyName.ProcessorArchitecture for assemblies. Fixes #15347.
  • Better check for open generic types in probing expression. Fixes #15422
  • Fixes too early optimization of binary &&/& bool constants. Fixes part of #15392
  • [sgen] Don’t crash on nurseries of 512M or larger.
  • [aot] Only use an AOT shortcut in the trampoline code if its safe to do so. Fixes #15345.
  • [xdebug] Avoid using a MonoDebugMethodJitInfo structure after it has been freed. Fixes #15090.
  • bxc#13642: MacNetworkChange: implement using managed code
  • Compound assignment of optimized binary constant needs to decompose it first. Fixes #15315
  • Ensure that CodeDom generated temporary directory is always created. Fixes #12202
  • Process/compare/output method’s generic parameters [#15311]
  • Enum IConvertible can convert to same enum or System.Enum. Fixes #15289
  • Release continuation ancestor before running. Fixes #15036
  • Adds async type inference of void return type. Fixes #15238
  • Make Task.Delay more reliable. Fixes #14585
  • Fallback to $LANG if $LC_ALL isn’t set. 15214
  • Cache only resolved types not expression to report correct error location. Fixes #15035
  • Better check for instance equality of generic types. Fixes #15100
  • Support deserializing relative Uris. Fixes #15169.
  • Relax name check when deserializing a WindowsIdentity instance as the name can be empty (e.g. iOS7 simulator will hide the user name) [#12789]
  • Anonymous method with this access inside an iterator needs to initialize captured this field from iterator’s copy. Fixes #14926
  • [sdb] Fix decoding of nested structs. Fixes #14942.
  • there was another escape sequence 1B 24 40 to indicate “old” JIS. Fix bug #14951
  • Don’t crash when reporting invalid named argument name. Fixes #14962
  • [MSBuild] Fix the ${level} and ${number} capture. Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=14767
  • Better checks for inaccessible member used via dynamic proxy. Fixes #14762
  • Initialize cookie container for default requests. Fixes #14783
  • Check modifying members of readonly value-type field. Fixes #14802
  • Make sure we properly account for transitive liveness when processing bridge objects. Fixes #13858
  • Implements content loading cancellation. Fixes #13200
  • Fixed TaskFactory::ContinueWhenAny with func result. Fixes #14839
  • [sgen] Use __builtin_ctzl () in OBJ_BITMAP_FOREACH_PTR () on 64 bit platforms. Fixes #14834.
  • AggregateException::GetBaseException uses only 1-based inner exceptions. Fixes #14824
  • [FIX] Bug 267: wsdl fails with “Argument is out of range.”
  • [System.Web] Do not crash on duplicate keys in browser capabilities #14720 #13014
  • [System.Net] Fix CFNetworkCopyProxiesForAutoConfigurationScript signature. Fixes #7923.
  • [runtime] Fix a bug in the local register allocator when an fp vreg wasn’t clobbered by a call if its href happened to be equal to the hreg of the call instruction. Fixes #12510.
  • Fix: bug https://bugzilla.xamarin.com/show_bug.cgi?id=14811 (to be reviewed)
  • [sdb] Add an implicit seq point after every nonvoid call and make step over skip them. Fixes #10782.
  • [runtime] Make mono_install_handler_block_guard () async-safe. Fixes #14073.
  • Don’t crash when unreachable code contains unreachable constant switch. Fixes #14587
  • Unify Array/List FindIndex/FindLastIndex handling and argument checking. Fixes #14632
  • [bcl] Fix BlockingCollection.TakeFromAny to handle when no items are available on the first collection. Fixes #6095.
  • Fix Bug 4811, xbuild should find xml documentation
  • [jit] Make ABCREM really remove bounds checks, not just when running with -v -v -v -v.
  • [llvm] Use i64*/i32* as the LLVM type of objrefs instead of i64/i32, the basicaa LLVM pass cannot see through the inttoptr casts we were emitting before loads.
  • [llvm] Make some types more precise to decrease the number of intptr conversions generated.

New in Mono for Windows 3.2.6 (Jan 14, 2015)

  • 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 Mono for Windows 3.2.5 (Jan 14, 2015)

  • Bug fixes:
  • Miscompilation of PCL projects referencing System.Net.Http
  • Improper stack size detection on Mavericks lead F# and C# compilers to crash.
  • Includes the latest F# release, 3.0.31.

New in Mono for Windows 3.2.4 (Jan 14, 2015)

  • This is a bug fixing only release:
  • Fix some packaging issues.
  • Fix System.IO.Compression.CompressionLevel enum.
  • Include namespace-level summary and remarks elements [#14672]
  • Multiple fixes to the PCL Facade assemblies.

New in Mono for Windows 2.10.9 (Oct 23, 2012)

  • Fix a libgdiplus issue that had forced linking against Apple's X11 stack for text rendering.
  • Fix issue where a native crash causes MonoDevelop to hang and neither Force Quit nor kill -9 would terminate it (Xamarin #2548).
  • Fix sgen failing with Assertion at sgen-gc.c:2506, condition `mono_sgen_need_bridge_processing ()' not met.

New in Mono for Windows 2.10.8 (Aug 8, 2012)

  • Updated the Task Parallel Library to include the latest fixes from our main development branch.
  • SQLiteConnection can now set the threading mode
  • Improved the debugger protocol to speed up debugging and value lookup
  • Added basic support for MSBuild 4.0
  • NuGet now runs on Mono
  • Phalanger 3.0 now runs with Mono
  • Adds support for some Azure libraries
  • Added support for bundling profilers in a static binary
  • The profiler can now log its data to any file descriptor (for over-the-net profile logging)
  • SGen now has native support for object systems that implement ToggleRefs
  • Mobile Profile now contains System.IO.MemoryMappedFiles
  • Added PerformanceCounters for JIT statistics
  • Add support for Android CPU count.
  • HashSet can now be serialized
  • Bug Fixes:
  • The --profile loader will now work on MacOS X without setting any environment variables
  • Fixes slow start on threads (
  • Fixed the SGen interaction between weak references and ephemerons
  • Fixes --profile=log on x64 systems
  • Fixes crash on some debugging configurations
  • Fixes timezone race condition
  • Fixes SendAsync reporting the wrong number of bytes sent
  • Plug a managed leak in the ASP.NET stack (HttpResponse)
  • Fix an infinite loop in Path.GetTempFileName
  • Fixes Soap12 message serialisation incorrect for ReplyTo header value
  • Linked away exception on AsyncWaitHandle.WaitOne() on device
  • Fixed MonoDoc to avoid loading the same documentation more than once (fixes MonoDoc browser)
  • Fixes regression in System.Diagnostics.Process.PrivateMemorySize64
  • ASP.NET fix for WebResource.axd and hashes containing /
  • ServiceModel now allows https endpoints
  • ServiceModel now allow requests with no headers
  • Fix for WebOperationContext.IncomingResponse
  • Fix for propagating operation context
  • Fix WebConnectionStream to return the correct length for input streams
  • Fix serialization reader
  • Various fixes to System.IO.Packaging
  • mono-service now passes the command line arguments to the services
  • Alternate path separator on Unix improves compatibility with Windows software
  • Fixes xsi:nil handling
  • Fixes hang caused by gdb attaching to the wrong process when Mono hard-crashes
  • Fixes the handling of XmlSchemaFrom importing, which is exposed by WebSphere WSDL tools
  • Fixes crash on inlined code that contained some patterns of exception throwing
  • Fixes monotonic clock on OSX and iOS
  • Fixes leak in Process class if WaitForExit was not called
  • Fixes typo in ASP.NET's SQLServer SessionState
  • Fixes marshaling of IPv6 addresses in Win32
  • Fixes race in ServiceModel.Logger
  • Fixes string truncation in Tds protocol
  • Fixes System.Data DataView sorting
  • Fixes Debug information for dynamic methods
  • On Android, stdout/stderr become the logcat
  • Fixes ConditionalWeakTable behavior with SGen
  • Fixes SIGSEGV during GC when write barrier is set to cardtable
  • Added JSonSerializer support for nullables
  • Fixes deadlock on SDB
  • Fixes heuristics for inserting breakpoints
  • Fixes Array.Containsfor null items via ICollection
  • Fixes scanning of complex values in SGen
  • Fixes assignability of arrays with generic interfaces
  • Fixes FullAOT support for iterating Linq.OrderedEnumerable
  • Fix a libgdiplus issue that had forced linking against Apple's X11 stack for text rendering on MacOS.
  • Fix issue on Mac where a native crash causes MonoDevelop to hang and neither Force Quit nor kill -9 would terminate it
  • Mobile Profile Fixes:
  • Xamarin 233: support commit/rollback/update events in iOS/Sqlite
  • Xamarin 154: Support Dispose on BinaryReader on the Mobile Profile
  • SGen bridge processing is now a two-step process (used for Mono/Android)
  • Xamarin 1999: all threads are now wrapped in NSAutoreleasePools.

New in Mono for Windows 2.10.2 (Jun 6, 2011)

  • ASP.NET MVC:
  • Bug preventing MVC3 apps from running has been fixed
  • Fix 668655: MVC3: error accessing the query variables collection
  • OrchardCMS should work with Mono
  • 671753: Route.GetVirtualPath must take ambient values into account.
  • Parallel FX:
  • The default task scheduler now uses the runtime ThreadPool, instead of its own pool
  • HttpListener:
  • Fix regression on HTTP Authentication
  • Xbuild:
  • Allow MSBuildExtensionsPath to be overridden by setting the environment variable $MSBuildExtensionsPath
  • Use the correct path separator for handling environment variable MSBuildExtensionsPath, fixes xbuild on windows. Bug #674337.
  • #674630: Handle errors in trying to create AssemblyName from invalid full names.
  • WCF:
  • System.ServiceModel: extensive serialization bug fixes.
  • Simple InstanceContext.Extensions implementation by David Schmitt (#674057)
  • Bug fixes:
  • 688033: Arrays don't support MemberwiseClone
  • 688007: WebClient.OpenRead() fails when trying to access an anonymous ftp site
  • 687580: Mono 2.10.1WCF fails with '(400) Bad Request' when the calling client uses URIs that should be functionally equivalent such as IP address instead of machine name
  • 687399: [threadpool] Deadlock upon shutdown with pending jobs in appdomains
  • 686371: Second HTTP request times out if previous HEAD request resulted in 403
  • 686269: [SDB] Debugger resumes execution when it should do a single step
  • 685368: Behavior difference with HttpWebResponse.Close between Mono and .Net
  • 685267: PostBack problem
  • 685116: Fails to redirect to the Login Form when using AJAX (using Forms Authentication timeout)
  • 685069: Two races in Mono.WebServer.FastCGI/Connections.cs that occur under heavy load
  • 685042: Thrown exception when serializing a class that implements from IDictionary using DataContract
  • 684803: XmlSiteMapProvider parsing: Can't find a site map node for the url: Default.aspx
  • 684438: SIGABRT we can't encode valuetypes, we should have never reached this line
  • 683712: DataConverter.Unpack reads a double when float is speficied
  • 683642: GetProperty on Binding does not return the proper result
  • 683519: garbage collector waking up threads that are sleeping infinite
  • 683409: SMP problems on ARM
  • 683339: POST variables are not transferred to HttpContext.Request.Params nor FormCollection in MVC3 app
  • 683203: Directory.GetFiles error or crash if pattern is unusual
  • 682963: gstring.c:116: assertion 'val != NULL' failed
  • 682957: XmlElement deserialization failed with DataContractSerializer.
  • 682869: mono-2-10 cannot build Test/System.Web.Routing/RouteTest.cs: "error CS1061: Type `System.Web.Routing.RouteCollection' does not contain a definition for `MapPageRoute' and no extension method `MapPageRoute' of type `System.Web.Routing.RouteCollection'..."
  • 681553: FindControl not working as expected
  • 681552: There is no service pack information in Environment.OSVersion
  • 681548: HttpListenerRequest.Url.OriginalString in mono mismatches .Net version
  • 681421: CombineVirtualPaths method in VirtualPathProvider is ignored
  • 681164: OutputCacheAttribute in MVC causes 100% CPU usage and mono to stop responding
  • 679586: Unknown type System.Collections.Generic.CollectionDebuggerView error when viewing Parametrized collection in debugger
  • 679467: .cctors run in incorrect order
  • 679183: .NET Incompatibility: Task.WaitAll(new Task[] {}) throws an ArgumentException
  • 679174: ConcurrentBag.GetEnumerator() yields uninitialized elements
  • 678705: MenuListRender off-by-one fails to close tag
  • 678662: Exception "invalid handle specified" because mono_thread_pool_cleanup() is called twice
  • 678473: HttpResponse.WriteFile maps files to absolute path
  • 678269: ModuleBuilder.GetToken causes SIGSEGV
  • 678164: Threads started by native code that call into managed code get IsBackground==False
  • 677746: Crash: Assertion at mono-wsq.c:73, condition `mono_wsq_count (wsq) == 0' not met
  • 677550: Fixed buffers are broken
  • 676993: Invalid cast exception doing xml validation
  • 676671: Microsoft.Build.BuildEngine.EventSource.AnyEventRaised is not fired
  • 676650: FileLogger throws on setting parameters
  • 676615: when compiling under -DDEBUG threads.c:761 references non-existing variable
  • 676587: Debugger Crashes
  • 676368: Should not use ODBC statement handles after SQLDisconnect called
  • 676260: Dns.GetHostEntry(Dns.GetHostName()).HostName is different from Dns.GetHostName()
  • 676060: System.IO.MemoryStream can throw NullReferenceExceptions when expanding internal buffer
  • 676020: ReadToNextSibling does not move as expected
  • 676009: XDocument.Load throws "(DTD) is prohibited in this XML"
  • 676008: Form name and id are incorrectly rendered with master pages.
  • 675777: the negation part of an expression like "0 - non_constant_expr" is ignored by mcs
  • 675731: System.Net.HttpWebRequest does not normalize Method property to uppercase
  • 675620: ArgumentNullException thrown when calling SyndicationContent.WriteTo
  • 675464: Runtime should support "long form" signatures for .NET 1.1 assemblies
  • 674630: Better error message for invalid assembly
  • 674580: An exception is thrown when trying to read UTF-16-encoded XML files
  • 674490: Mono.Debugger.Soft.VirtualMachine.EnableEvents dislikes EventType.Step
  • 674224: Compiler crashes with NullReferenceException - worked with mono 2.8.2
  • 674120: BigInteger comparision operators failing
  • 674057: Trivial implementation for InstanceContext.Extensions
  • 673793: Assembly loading fails when path contains national language characters
  • 670874: Incorrect result of WebFormViewEngine.FileExists with MVC 3 & precompilled site
  • 670714: Display problem with XSP4
  • 669836: Unhandled exceptions thrown in threads other than the UI thread aren't caught by the debugger
  • 669303: F-Spot crashes on load.
  • 668867: Processes needs to be waited for to not turn into zombies
  • 668696: [Regression] SynchronizationLockException when accessing HttpApplicationState after Lock() is called
  • 667513: System.Web.Routing throws NotImplementedException when PathInfo is set
  • 667329: Key duplication when adding: sessionState
  • 666736: UDP support
  • 660412: Setting MONO_EXTERNAL_ENCODINGS environment variable to "default_locale" causes crash on startup if an assembly is in directory containing national characters
  • 658184: System.Configuration.Save() still not working in Mono 2.8.1
  • 656468: System.Console.CapsLock incorrectly throws a System.NotSupportedException
  • 655934: TextReader: ReadToEnd and ReadLine not implemented correctly
  • 655474: JavaScriptSerializer cannot serialize a relative Uri
  • 650695: System.Web.HttpNotFoundHandler missing
  • 672907: List: Properly check the array argument to match MS semantics
  • 672446: Generic sharing bugfix
  • 673592: Soft debugger was crashing the runtime on Windows
  • 673828: Fix ARM thunk creation in dynamic methods.
  • Transactions: do deep copies of transaction (required for Orchard/NHibernate)
  • 669807: Cache session item locks as the item might be cleared before the lock needs to be released.
  • Fix ARM/darwin lookup of Thread Specific Data/Descriptors
  • Implement memory barriers for ARM
  • 672939: fixes missing methods while running MonoDevelop
  • 669815: Fixes crash on IronRuby test suite
  • 661461: Fixes a case where Assembly.Load(AssemblyName) did not work with some partial names
  • 662867: Attribute.GetCustomAttributes was failing in searching inheritance chain against overridden method ToString()
  • 665893: Fixes a crash when a generic method that calls another generic method was called
  • Fix infinite loop in DiscoveryMessageSequence equality comparison
  • 667921: Fix crash in multi-threaded LINQ
  • System.IO.TextReader now provides a default implementation for ReadLine and ReadToEnd
  • Console:TerminfoDriver is now more tolerant to failures
  • 656468: Console, avoid throwing exceptions for unsupported console features on Unix
  • Fix stop_debugger_thread () on windows.
  • #669836: Treat exceptions that are caught by mono_runtime_invoke() as unhandled in SDB
  • Enabled UDP stack on Mobile platforms.

New in Mono for Windows 2.8.1 (Nov 18, 2010)

  • Fix DateTime's from binary representation #648252 (gonzalo)
  • Fixed Nullable's serialization in Remoting's binary serializer #646556 (gonzalo)
  • Logging profiler build fix (zoltan)
  • Fixed an assert for localalloc (long) when using LLVM (zoltan)
  • Disabled cardtables on SGen on 64bit configurations, will be re-enabled in Mono 2.10
  • Fixes a crash when using the embedded API
  • Add new mono-dl-fallback API for registering P/Invoke lookup hooks (mostly for PS3 and Wii, but useful for embedders in general) (miguel).
  • Allow ordinal entry points on Windows 636966 (gonzalo)
  • Fixes file system scanning for Linux systems 637078 (gonzalo)
  • Fixes GetLocalicalDriveString (gonzalo)
  • UDP sockets allow connections to Any 639098 (gonzalo)
  • GetProcessById now works on Mac (gonzalo)
  • Map SO_EXCLUSIVEADDRUSE to !SO_REUSEADDR 643475 (gonzalo)
  • Timers: fix collision handling code (gonzalo)
  • Support unloading System assemblies when sockets are used (zoltan)
  • Fix to utf8 to utf16 decoding (gonzalo)
  • Fix WCF proxy names (marek)
  • Fix WCF dispatchers (marek)
  • No longer closes WCF response prematurely (marek)
  • Fix some WCF hosting scenarios (Atsushi)
  • Add support for EnableSSL on smtp configuration 644816 (gonzalo)
  • Fixes socket bug #645675.
  • Prevents old AOT images from crashing new Mono's 647918 (zoltan)
  • Exceptions are now propagated when embedding on Windows (tak/unity)
  • BSD fix for thread attach 647248 (zoltan)
  • Reset thread pool state (gonzalo)
  • Fixes AOT compiler when LLVM is used 646314 (zoltan)
  • Updated SPARC IMT code for .NET 4 (zoltan)
  • Prevents a crash if your iconv setup is broken or incomplete on your system (zoltan)
  • Add pretty-printing support to Json objects (jb)
  • Adds null values to Json objects (jb)
  • C# compiler can compile multiple interface event declarators 646298 (marek)
  • Fixes initializers in C# for partially static multi-dimensional arrays 642975 (marek)
  • X509Chain now always uses both the local machine store and the user store, regression from 2.6 (gonzalo)
  • SPARC is now supported again (vargaz)
  • xbuild updated to our latest release (ankit)
  • Fixed named Mutexes (gonzalo)

New in Mono for Windows 2.6.7 (Jul 20, 2010)

  • MVC2 is now included
  • Latest versions of:
  • Soft Debugger
  • Mono's xbuild tool
  • LINQ to SQL binding
  • WCF client and server, the subset exposed by Silverlight 2.0
  • LLVM support, to improve performance on server/computational loads
  • Co-routine framework Mono.Tasklets
  • Latest version of LINQ to SQL using DbLinq
  • New Soft Debugger, integrated with MonoDevelop 2.2
  • Joint release with MonoDevelop 2.2.2
  • System.IO.Packaging
  • csharp shell now supports auto-completion
  • xbuild can now build most msbuild projects
  • Support for CoreCLR security:
  • Mono debuts a full metadata and IL verifier
  • Security system used by Silverlight applications, reusable for other cases.

New in Mono for Windows 2.6.4 (Apr 27, 2010)

  • WCF client and server, the subset exposed by Silverlight 2.0
  • LLVM support, to improve performance on server/computational loads
  • Co-routine framework Mono.Tasklets
  • Preview of LINQ to SQL using DbLinq
  • New Soft Debugger, integrated with MonoDevelop 2.2
  • Joint release with MonoDevelop 2.2.2
  • System.IO.Packaging
  • csharp shell now supports auto-completion
  • xbuild can now build most msbuild projects
  • Support for CoreCLR security:
  • Mono debuts a full metadata and IL verifier
  • Security system used by Silverlight applications, reusable for other cases.

New in Mono for Windows 2.6 Preview 1 (Nov 12, 2009)

  • LINQ to SQL is now partially supported
  • New debugger engine - Mono Soft Debugger
  • Early partial support for C# 4.0
  • Includes some components of the ParallelFx framework
  • Dynamic language runtime (DLR) is now distributed as part .NET 4 profile
  • The WindowsBase assembly is now part of the standard Mono distribution
  • A lot of WinForms fixes
  • The csharp command now supports auto-completion using the tab key
  • xbuild, the Mono implementation of the msbuild build tool has advanced significantly
  • Mono now includes a sandbox and its verifier
  • As part of the gsoc 2009, Jerry Maine ported Mono.Simd to AMD64
  • It is now possible to compile Mono to use the LLVM code generation engine as an optimizing compiler for Mono
  • Support for generics is greatly improved compared to 2.4
  • Signal Chaining
  • Debugging support for GDB

New in Mono for Windows 2.4.2.3 (Jul 29, 2009)

  • Major Highlights
  • Mono 2.4.2.3 is a bug fix release for Mono 2.4, which is the foundation for Novell's own long-term support Mono-based product.
  • This release includes the following bug fixes from 2.4.2.2:
  • 502016 (https://bugzilla.novell.com/show_bug.cgi?id=502016) - Simple precompiled MVC app does not run on Mono 2.4.2
  • 524726 (https://bugzilla.novell.com/show_bug.cgi?id=524726) - Precompiling for / then deploying elsewhere causes failure for ASP.NET apps.
  • Changes in Mono 2.4.2.3
  • XSP now has Silverlight mime types registered.
  • Updated the browser database.
  • The C# Shell (csharp) will now accept C# scripts specified on the command line, like:
  • $ csharp demo.csA major bug was fixed for multi-threaded applications using XPath, if you are using XPath in a multithreaded application, we strongly recommend that you upgrade to this version.
  • Bugs fixed since Mono 2.4
  • Between Mono 2.4 and Mono 2.4.2, more than 140 bugs were fixed, this is a partial list (since not all bugs had tracking numbers):
  • 502016 (https://bugzilla.novell.com/show_bug.cgi?id=502016) - Simple precompiled MVC app does not run on Mono 2.4.2
  • 524726 (https://bugzilla.novell.com/show_bug.cgi?id=524726) - Precompiling for / then deploying elsewhere causes failure for ASP.NET apps.
  • 315816 (https://bugzilla.novell.com/show_bug.cgi?id=315816) - [Regression] One crippled DLL leads to a failure of a complete website
  • 325464 (https://bugzilla.novell.com/show_bug.cgi?id=325464) - xsd is unable to generate correct classes from certain input files
  • 328036 (https://bugzilla.novell.com/show_bug.cgi?id=328036) - [PATCH]Casting bug with generic collections
  • 342073 (https://bugzilla.novell.com/show_bug.cgi?id=342073) - WebServices default WebForm does not work
  • 345448 (https://bugzilla.novell.com/show_bug.cgi?id=345448) - Default binding name is wrong, when declared in WebServiceBindingAttribute, but not used.
  • 349688 (https://bugzilla.novell.com/show_bug.cgi?id=349688) - SocketFlags.Partial is not implemented correctly in Linux
  • 382589 (https://bugzilla.novell.com/show_bug.cgi?id=382589) - Passing either Decimal.Max or Decimal.Min to a SQL Server 2005 stored procedure that takes a decimal(29,0) results in a SqlException
  • 382589 (https://bugzilla.novell.com/show_bug.cgi?id=382589) - Passing either Decimal.Max or Decimal.Min to a SQL Server 2005 stored procedure that takes a decimal(29,0) results in a SqlException
  • 409583 (https://bugzilla.novell.com/show_bug.cgi?id=409583) - ToString of methods with pointers in their signature is wrong
  • 417398 (https://bugzilla.novell.com/show_bug.cgi?id=417398) - [PATCH] System.Data.DataRowComparer.Default doesn't compare by row contents
  • 421827 (https://bugzilla.novell.com/show_bug.cgi?id=421827) - [PATCH] CookieContainer.GetCookie skips cookie when domain has no leading dot
  • 424908 (https://bugzilla.novell.com/show_bug.cgi?id=424908) - Oracle - stored procedure returning string throws exception - Size must be set
  • 431039 (https://bugzilla.novell.com/show_bug.cgi?id=431039) - First Run of IsolatedStorageFile is not threadsafe
  • 436592 (https://bugzilla.novell.com/show_bug.cgi?id=436592) - Error in the CustomizableFileSettingsProvider.Reset method
  • 449092 (https://bugzilla.novell.com/show_bug.cgi?id=449092) - [Regression] Sockets Novell c# LDAP api, LdapConnection.Disconnect() throws "The socket is not connected" exception
  • 449683 (https://bugzilla.novell.com/show_bug.cgi?id=449683) - MD throws NotImplementedException when parsing DLR project
  • 458916 (https://bugzilla.novell.com/show_bug.cgi?id=458916) - Implemetation errors on Copy.cs
  • 459790 (https://bugzilla.novell.com/show_bug.cgi?id=459790) - SoapRpcMethod based webservices return HTTP 500 error with Mono 2.0.1 Runtime
  • 462947 (https://bugzilla.novell.com/show_bug.cgi?id=462947) - TDS: not enough state reset when executing a query/stored procedure
  • 463011 (https://bugzilla.novell.com/show_bug.cgi?id=463011) - [Regression] Pooled connection is no longer reset
  • 465613 (https://bugzilla.novell.com/show_bug.cgi?id=465613) - HttpWebRequest.BeginGetRequestStream throws ProtocolViolationException
  • 466031 (https://bugzilla.novell.com/show_bug.cgi?id=466031) - Socket.EndReceive buglet
  • 468570 (https://bugzilla.novell.com/show_bug.cgi?id=468570) - Arithmatic overflow in System.Diagnostics.Stopwatch causes Elapsed property to return a negative timespan after the 25'th hour of running
  • 469135 (https://bugzilla.novell.com/show_bug.cgi?id=469135) - Issues with glue-less gtk-sharp running MonoDevelop
  • 470336 (https://bugzilla.novell.com/show_bug.cgi?id=470336) - crash while compiling on SLE_10/ppc
  • 470336 (https://bugzilla.novell.com/show_bug.cgi?id=470336) - crash while compiling on SLE_10/ppc
  • 471305 (https://bugzilla.novell.com/show_bug.cgi?id=471305) - Control lifecycle inconsistency between Mono and MS.NET implementations
  • 471747 (https://bugzilla.novell.com/show_bug.cgi?id=471747) - [FreeBSD x86] Failure of pinvoke2 test
  • 471751 (https://bugzilla.novell.com/show_bug.cgi?id=471751) - [FreeBSD x86] Failure of winx64structs test
  • 475438 (https://bugzilla.novell.com/show_bug.cgi?id=475438) - xbuild dies badly if gmcs not installed
  • 476138 (https://bugzilla.novell.com/show_bug.cgi?id=476138) - Win32 Socket behaviour changed.
  • 476289 (https://bugzilla.novell.com/show_bug.cgi?id=476289) - mod_mono report "(13)Permission denied: Failed to attach to existing dashboard"
  • 477383 (https://bugzilla.novell.com/show_bug.cgi?id=477383) - MaskedTextBox: Backspace doesn't work
  • 477388 (https://bugzilla.novell.com/show_bug.cgi?id=477388) - MaskedTextBox: Delete key deletes masked fields
  • 477395 (https://bugzilla.novell.com/show_bug.cgi?id=477395) - MaskedTextBox: Able to overwrite characters with L mask
  • 477408 (https://bugzilla.novell.com/show_bug.cgi?id=477408) - MaskedTextBox: Doesn't handle invalid input correctly
  • 480377 (https://bugzilla.novell.com/show_bug.cgi?id=480377) - System.Data.OracleClient : DataReader does not support System.TimeSpan
  • 480856 (https://bugzilla.novell.com/show_bug.cgi?id=480856) - xbuild don't recognize Multiple DEFINE
  • 481336 (https://bugzilla.novell.com/show_bug.cgi?id=481336) - xbuild don't compile IronPython.sln
  • 481622 (https://bugzilla.novell.com/show_bug.cgi?id=481622) - Exception when using layout template
  • 481687 (https://bugzilla.novell.com/show_bug.cgi?id=481687) - System.Convert.ChangeType(someIConvertibleObject, typeof(Image) Throws exception on mono. .Net difference
  • 483268 (https://bugzilla.novell.com/show_bug.cgi?id=483268) - Precompiled application can only be solved from original virtual path
  • 483852 (https://bugzilla.novell.com/show_bug.cgi?id=483852) - TypeBuilder should be resolved when used in a generic type instance
  • 484244 (https://bugzilla.novell.com/show_bug.cgi?id=484244) - [Regression] nunit-console.exe requires /noshadow
  • 484294 (https://bugzilla.novell.com/show_bug.cgi?id=484294) - Type.GetMethod does not find methods with nullable parameters when expected
  • 484294 (https://bugzilla.novell.com/show_bug.cgi?id=484294) - Type.GetMethod does not find methods with nullable parameters when expected
  • 484384 (https://bugzilla.novell.com/show_bug.cgi?id=484384) - Duplicate key in assembly resolving
  • 484649 (https://bugzilla.novell.com/show_bug.cgi?id=484649) - Mono.XBuild.CommandLine.LoggerInfo argument parsing is broken
  • 484773 (https://bugzilla.novell.com/show_bug.cgi?id=484773) - WorkingDictionary outside of the project file breaks the build
  • 484795 (https://bugzilla.novell.com/show_bug.cgi?id=484795) - [PATCH]WebClient.UploadValues using UTF-8 encoding and "POST" method do not upload accented characters properly
  • 485377 (https://bugzilla.novell.com/show_bug.cgi?id=485377) - Regression in Convert.ChangeType()
  • 485377 (https://bugzilla.novell.com/show_bug.cgi?id=485377) - Regression in Convert.ChangeType()
  • 485435 (https://bugzilla.novell.com/show_bug.cgi?id=485435) - JSON proxy class generator errors out when any webmethod signature takes a GUID parameter
  • 485458 (https://bugzilla.novell.com/show_bug.cgi?id=485458) - CustomValidator incorrectly requires ControlToValidate to be set for client side scripting to work.
  • 485557 (https://bugzilla.novell.com/show_bug.cgi?id=485557) - Response.ClearHeaders reset HttpCacheability to private
  • 486234 (https://bugzilla.novell.com/show_bug.cgi?id=486234) - System.String.LastIndexOf(string, StringComparison) crashes when using StringComparison.Ordinal on empty strings
  • 486303 (https://bugzilla.novell.com/show_bug.cgi?id=486303) - Type.IsGenericTypeDefinition crashes for user defined Type
  • 486703 (https://bugzilla.novell.com/show_bug.cgi?id=486703) - FtpWebRequest Send PrintWorkingDirectory Command Failed!
  • 486904 (https://bugzilla.novell.com/show_bug.cgi?id=486904) - System.Net.NetworkInformation.Ping throws InvalidOperationException "Process has not been started" on OSX
  • 487155 (https://bugzilla.novell.com/show_bug.cgi?id=487155) - ILASM does not work with octal values in QSTRINGS
  • 487518 (https://bugzilla.novell.com/show_bug.cgi?id=487518) - SIGSEGV in mono_arch_emit_call on amd64; running F# nunit unit tests
  • 487625 (https://bugzilla.novell.com/show_bug.cgi?id=487625) - ExtensionMethodAttribute and CS1685
  • 487659 (https://bugzilla.novell.com/show_bug.cgi?id=487659) - VUL-0: Mono sanbox breakout in IsolatedStorage {}
  • 487758 (https://bugzilla.novell.com/show_bug.cgi?id=487758) - Marshaling a native function pointer to native function call throws assertion
  • 488630 (https://bugzilla.novell.com/show_bug.cgi?id=488630) - mod-mono-server is broken using HTTPS
  • 488670 (https://bugzilla.novell.com/show_bug.cgi?id=488670) - Marshal.GetFunctionPtrFromDelegate crashes the runtime if the delegate signature includes an object type.
  • 488960 (https://bugzilla.novell.com/show_bug.cgi?id=488960) - Invalid CS0663 error with generics ('overloaded function cannot differ on use of parameter modifiers only')
  • 489019 (https://bugzilla.novell.com/show_bug.cgi?id=489019) - mono throwing exception while closing file descriptor 0
  • 489687 (https://bugzilla.novell.com/show_bug.cgi?id=489687) - Code render tag not working
  • 490497 (https://bugzilla.novell.com/show_bug.cgi?id=490497) - "watch for changes to web.config also in the subdirectories" causes problems
  • 490753 (https://bugzilla.novell.com/show_bug.cgi?id=490753) - HtmlInputFile doesn't work on pages with EnableViewState=false
  • 491508 (https://bugzilla.novell.com/show_bug.cgi?id=491508) - SessionSQLServerHandler : InitializeConnection -> NullReferenceException
  • 491531 (https://bugzilla.novell.com/show_bug.cgi?id=491531) - Settings in Web.config not being read
  • 491590 (https://bugzilla.novell.com/show_bug.cgi?id=491590) - The FTPWebRequest class doesn't properly resume file downloads
  • 491828 (https://bugzilla.novell.com/show_bug.cgi?id=491828) - xbuild hides important error information
  • 492252 (https://bugzilla.novell.com/show_bug.cgi?id=492252) - error runing an ASP.net page with validators
  • 492329 (https://bugzilla.novell.com/show_bug.cgi?id=492329) - gmcs generated invalid IL code for storing a new object in a generic out/ref parameters (regression from 2.2).
  • 492666 (https://bugzilla.novell.com/show_bug.cgi?id=492666) - NullReferenceException when binding a list to the ListView
  • 493263 (https://bugzilla.novell.com/show_bug.cgi?id=493263) - Using custom resource provider crashes application
  • 493639 (https://bugzilla.novell.com/show_bug.cgi?id=493639) - Invalid "Bind invocation wasn't formatted properly" in TemplateControlCompiler
  • 493873 (https://bugzilla.novell.com/show_bug.cgi?id=493873) - Multiple assemblies with same type name in precompiled updatable site
  • 493874 (https://bugzilla.novell.com/show_bug.cgi?id=493874) - Missing column in BlogEngine.NET
  • 493887 (https://bugzilla.novell.com/show_bug.cgi?id=493887) - Switch selects wrong branch when default is not last case
  • 494221 (https://bugzilla.novell.com/show_bug.cgi?id=494221) - IL Compiles but generates wrong code
  • 494245 (https://bugzilla.novell.com/show_bug.cgi?id=494245) - ASP.NET Pages not accepting base class with generic type
  • 494567 (https://bugzilla.novell.com/show_bug.cgi?id=494567) - r131501 breaks compilation of System.Windows.Forms_test_net_1_1.dll
  • 495011 (https://bugzilla.novell.com/show_bug.cgi?id=495011) - Application restarts when touching a folder
  • 495112 (https://bugzilla.novell.com/show_bug.cgi?id=495112) - Can't compile cyclic structs with mono-2.4
  • 496758 (https://bugzilla.novell.com/show_bug.cgi?id=496758) - Xsp2 hides internal errors making it difficult to debug tricky web service issues
  • 496905 (https://bugzilla.novell.com/show_bug.cgi?id=496905) - Using Peek() after a short Read() returns -1 instead of trying to read more.
  • 496951 (https://bugzilla.novell.com/show_bug.cgi?id=496951) - The 'NoStore' attribute is not supported by the 'Outputcache' directive.
  • 497174 (https://bugzilla.novell.com/show_bug.cgi?id=497174) - ASP.NET 1.1 is broken with the recent changes made to templateParser.cs
  • 497220 (https://bugzilla.novell.com/show_bug.cgi?id=497220) - assertion in mono_local_regalloc when a local not initialized is used
  • 497715 (https://bugzilla.novell.com/show_bug.cgi?id=497715) - SqlParameter not handling SqlDbType.Xml / DbType.Xml ("No mapping exists ...")
  • 497720 (https://bugzilla.novell.com/show_bug.cgi?id=497720) - System.Collections.Generic.KeyCollection.CopyTo(TKey [] array, int arrayIndex) behaves different on Mono / .NET
  • 497775 (https://bugzilla.novell.com/show_bug.cgi?id=497775) - ASP.NET MVC's Html.TextBox()/etc. do nothing.
  • 497839 (https://bugzilla.novell.com/show_bug.cgi?id=497839) - xbuild don't recognize $(SolutionDir)
  • 498118 (https://bugzilla.novell.com/show_bug.cgi?id=498118) - Revision 131768 breaks UserControls added in web.config
  • 498154 (https://bugzilla.novell.com/show_bug.cgi?id=498154) - Xbuild does not recognize **-Wildcard
  • 498637 (https://bugzilla.novell.com/show_bug.cgi?id=498637) - HTML link tag in ASP.NET MVC render bug
  • 498692 (https://bugzilla.novell.com/show_bug.cgi?id=498692) - many problems cross-building with gcc 4.2.x mingw cross
  • 498853 (https://bugzilla.novell.com/show_bug.cgi?id=498853) - Cannot configure ConsoleTraceListener to use standard error through configuration
  • 499013 (https://bugzilla.novell.com/show_bug.cgi?id=499013) - Appdomain.GetAssemblies() returns assemblies loaded for reflection only, not just for execution. Different behaviour than .NET
  • 499851 (https://bugzilla.novell.com/show_bug.cgi?id=499851) - Need notification for UIA when a PopupButton gains focus
  • 499864 (https://bugzilla.novell.com/show_bug.cgi?id=499864) - Dispose-Method of Mono.Data.SqliteClient.SqliteConnection doesn't close the connection.
  • 499887 (https://bugzilla.novell.com/show_bug.cgi?id=499887) - TabControl.GotFocus event not fired when SelectionIndex is set
  • 500019 (https://bugzilla.novell.com/show_bug.cgi?id=500019) - SSE2 used on system without SSE2
  • 500075 (https://bugzilla.novell.com/show_bug.cgi?id=500075) - Inherits doesn't support C# syntax
  • 500385 (https://bugzilla.novell.com/show_bug.cgi?id=500385) - GetMethod fails to find private methods up the class hierarchy when using BindingFlags.NonPublic
  • 500739 (https://bugzilla.novell.com/show_bug.cgi?id=500739) - Error when accessing anything but default route using system.web.routing
  • 501589 (https://bugzilla.novell.com/show_bug.cgi?id=501589) - XElement Seems to Break
  • 502029 (https://bugzilla.novell.com/show_bug.cgi?id=502029) - DateTimePicker: some children are not accessible by orca
  • 502274 (https://bugzilla.novell.com/show_bug.cgi?id=502274) - HttpConnection does not unbind HttpListenerContext when KeepAlive is true
  • 502555 (https://bugzilla.novell.com/show_bug.cgi?id=502555) - Routing problems related to default parameters
  • 502866 (https://bugzilla.novell.com/show_bug.cgi?id=502866) - UDPClient.Receive does not honor Socket.ReceiveTimeout
  • 503728 (https://bugzilla.novell.com/show_bug.cgi?id=503728) - misused Type.GetInterfaceMap() causes runtime crash
  • 504378 (https://bugzilla.novell.com/show_bug.cgi?id=504378) - Routes in System.Web.Routing don't handle "Variable Number of Segments" correctly (Catchall)
  • 504391 (https://bugzilla.novell.com/show_bug.cgi?id=504391) - WebService.EnableDecompression crash
  • 504411 (https://bugzilla.novell.com/show_bug.cgi?id=504411) - Mprotect fails with ENOMEM in GC_remap
  • 504615 (https://bugzilla.novell.com/show_bug.cgi?id=504615) - [PATCH] Global.asax of precompiled sites not loaded
  • 504667 (https://bugzilla.novell.com/show_bug.cgi?id=504667) - [gmcs] compilation error when using partial static classes
  • 505375 (https://bugzilla.novell.com/show_bug.cgi?id=505375) - JIT does not optimize do-while loop correctly
  • 505678 (https://bugzilla.novell.com/show_bug.cgi?id=505678) - mono.bin crashes for System.Xml.XPath.AxisIterator.MoveNextCore
  • 506144 (https://bugzilla.novell.com/show_bug.cgi?id=506144) - Structs that contain Mono.Simd.Vector4f fields have broken sequential layout
  • 506757 (https://bugzilla.novell.com/show_bug.cgi?id=506757) - CS0507 when overriding public method in class generated by ikvmc
  • 506915 (https://bugzilla.novell.com/show_bug.cgi?id=506915) - Use of tertiary operator results in runtime stack trace but equivalent if/else code does not
  • 507003 (https://bugzilla.novell.com/show_bug.cgi?id=507003) - Error in Assembly.DoAssemblyResolve
  • 507666 (https://bugzilla.novell.com/show_bug.cgi?id=507666) - url-decode failed with encoded shift_jis query
  • 507836 (https://bugzilla.novell.com/show_bug.cgi?id=507836) - ListItem attributes aren't stored in view state
  • 508167 (https://bugzilla.novell.com/show_bug.cgi?id=508167) - RegisterHiddenField should not put a "id" in the input field in 1.1 profile
  • 508389 (https://bugzilla.novell.com/show_bug.cgi?id=508389) - Mono 2.4 crashes due to accessing freed data structures
  • 508538 (https://bugzilla.novell.com/show_bug.cgi?id=508538) - System.Reflection.TargetInvocationException when calling MethodInfo.invoke
  • 508570 (https://bugzilla.novell.com/show_bug.cgi?id=508570) - Generic MVC ViewMasterPage does not respect type
  • 508649 (https://bugzilla.novell.com/show_bug.cgi?id=508649) - 404 not found errors should be displayed even when custom errors are on (and there is no redirect)
  • 508888 (https://bugzilla.novell.com/show_bug.cgi?id=508888) - MonoVS version of mono breaks Graffiti
  • 509069 (https://bugzilla.novell.com/show_bug.cgi?id=509069) - Can't set different handlers for subdirectories
  • 509092 (https://bugzilla.novell.com/show_bug.cgi?id=509092) - 403 errors should be handled specially as well
  • 509163 (https://bugzilla.novell.com/show_bug.cgi?id=509163) - '*' and ':' are not supported in ASP.NET virtual paths
  • 509450 (https://bugzilla.novell.com/show_bug.cgi?id=509450) - Web.config file modification is not detected
  • 509475 (https://bugzilla.novell.com/show_bug.cgi?id=509475) - Unclosed when
  • 509998 (https://bugzilla.novell.com/show_bug.cgi?id=509998) - Web.config changes in subdirectories are not detected
  • 510302 (https://bugzilla.novell.com/show_bug.cgi?id=510302) - Theming asp.net application seems not work
  • 510735 (https://bugzilla.novell.com/show_bug.cgi?id=510735) - Location path is not verified to be a relative path
  • 511414 (https://bugzilla.novell.com/show_bug.cgi?id=511414) - Can't print from winforms
  • 512028 (https://bugzilla.novell.com/show_bug.cgi?id=512028) - [Regression] asp.net framework includetest fails on mono-2.4.2 using xsp2
  • 512037 (https://bugzilla.novell.com/show_bug.cgi?id=512037) - OutputCache directive Location parameter handling is broken
  • 512485 (https://bugzilla.novell.com/show_bug.cgi?id=512485) - [PATCH] deadlock in ReaderWriterLockSlim.EnterWriteLock
  • 512535 (https://bugzilla.novell.com/show_bug.cgi?id=512535) - Can't concatenate Item list error when compiling non-standard project with xbuild
  • 513849 (https://bugzilla.novell.com/show_bug.cgi?id=513849) - HttpListener does not release the specified port by listener prefixes.
  • 513965 (https://bugzilla.novell.com/show_bug.cgi?id=513965) - Please Add IE8.0 to browscap.ini