Mono 4.6.0 Release Notes
Highlights
In Depth
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 <filename unknown>:0
into one as:
at StackTraceDumper.Main () [0x00000] in <cwa3ec873a838c42c29f4eba7cab7d1dfb>: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.<Main>m__0 () <0x100e15d50 + 0x00029> in <filename unknown>:0
by one as:
at StackTraceDumper.<Main>m__0 () <0x100e15d50 + 0x00029> in <a3ec873a838c42c29f4eba7cab7d1dfb#b37a9d11247b811ffffdaff8090d8a59>: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.
mono-symbolicate
can be found here
API additions for .NET Standard 1.6
We added APIs to comply with .NET Standard 1.6. Note that in some cases an implementation is still missing and will throw at runtime.
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 as 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
toconfigure
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.
Profiler 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
- #4242 - JavaScriptSerializer should use invariant culture
- #5644 - Mono allows to access not accessible method
- #6057 - UdpClient IPv6 Receive throws ArgumentException
- #8554 - System.Net.NetworkInformation.Ping - SendPingAsync operation fails
- #10108 - mono_jit_cleanup asserts/aborts on shutdown if soft debugging
- #11699 - FileStream writing incorrectly (some internal position is wrong)
- #12205 - MethodInfo.ReflectedType returns declaring type for generic base classes
- #13538 - Extraneous lines in Application Output for Debug.WriteLine
- #13957 - Xamarin.Android Apps are crashing on dual core x86 Devices
- #18361 - FileInfo.MoveTo does not work with absolute paths
- #20186 - Another AOT bug
- #23206 - MS allows threadpool threads to be renamed multiple times
- #24974 - Exception occurs in __ComObject finalizer when shutting down process
- #27303 - NullReferenceException with ARMv7
- #29585 - Type.GetMethods returns generic method that cannot be specialized
- #29916 - System.Reflection.ParameterInfo.GetCustomAttributes always throws NullReference exception.
- #30686 - ZipArchive ctor throws InvalidDataException for WebConnectionStream
- #30821 - Compilation generates CS1701 warning
- #32020 - Don’t default to –with-tls=pthread on Solaris/x86
- #32315 - Inspecting a variable gives information from the incorrect symbol
- #32374 - WebRequest::BeginGetRequestStream incorrectly sets IAsyncResult::CompletedSynchronously to always true
- #32561 - Could not load file or assembly Microsoft.Build.Utilities
- #32768 - New bcl-tests crashing due to System.ObjectDisposedException: Cannot access a disposed object
- #33551 - System.Net.SmtpClient uses an invalid HELO name
- #33553 - System.IO.Compression.ZipArchive produces bad archive files
- #33809 - Exception with SignalR 2.2 and Mono 4.2.0
- #34133 - [iOS]System test failures on iOS devices with cycle6 build
- #34314 - libgdiplus.so without API suffix is referenced by System.Imaging
- #34413 - SOAP header within the SOAP envelope is not being serialized correctly
- #34498 - AOT task fails if project path has a space in it
- #34883 - bcl-test failure in PingTest.PingSuccess on Samsung Galaxy S3
- #34916 - GZipStream fails on iOS
- #35004 - Filename returned by LocalEndpoint of UnixListener has null characters appended to the end which causes the socket file to not be deleted when the UnixListener is disposed
- #35872 - Cultureinfo -> numinfo internal field is NonSerialized on Mono, but not on Windows
- #35876 - Incorrect return of DateTime.ToUniversalTime method for DateTime.MaxValue.
- #36080 - [Mono 4.2] “‘System.ServiceModel.EndpointAddress10’ does not have a static method ‘GetSchema’ that takes a parameter of type ‘System.Xml.Schema.XmlSchemaSet’” when using the Xamarin Mobile profile with some WCF client apps
- #36116 - Mono 4.2 generates incorrect “Reference.map”, causing “Could not find file ‘/TempConvert.wsdl’” when adding or updating a Web Reference in Xamarin Studio
- #36183 - Since upgrading to Xamarin Android 6 get error error MSB3733: Input file “obj\Android\Debug\android\AndroidManifest.xml” cannot be opened
- #36192 - Error binding Socket to Loopback
- #36388 - Application settings produce extra XML headers during saving
- #36401 - [XM 2.4] “System.Configuration.ConfigurationErrorsException: Failed to load configuration section for dataContractSerializer” when using ChannelFactory with the “Xamarin.Mac .NET 4.5 Framework”
- #36723 - [iOS][llvm/thumb] Linksdk “Linker_RuntimeWrappedException” test crash on iOS device with master build * Assertion at ../../../../../mono/mono/mini/aot-runtime.c:4733, condition `plt_entry’ not met
- #36786 - Dictionary constructed with StringComparer.OrdinalIgnoreCase malfunctions if culture is changed after adding values
- #36829 - XmlSerializer does not support subclasses when serializing sequences of items
- #36852 - Update to latest Xamarin.Android (6.0.0.34) causes random application crashes with no information
- #36988 - stderr is not redirected correctly
- #37116 - [iOS] Application.Current.Properties does not persist on iOS with Forms
- #37246 - [tvOS]System test failure on device
- #37414 - Environment.Is64BitOperatingSystem returns false on OS X
- #37582 - Latest master crashes when trying to set breakpoint on async anonymous method
- #37583 - MAJOR performance decrease between 4.0.5.1 and 4.2.1
- #37681 - Fails to parse negative integers with Hebrew region set
- #37695 - Delegate references an overridden method in derived class misbehaves when marshalled as a parameter to native C function.
- #37732 - [iOS] HttpWebRequestTest.NtlmAuthentication failed on iOS device with mono 4.3.2
- #37801 - C# 6: Compiler crashed with code: 1 - FATAL UNHANDLED EXCEPTION
- #37834 - GetFileAttributes does not return FileAttributes.ReadOnly for locked file on OSX
- #37848 - CultureInfo.GetCultureInfo(0) should throw ArgumentOutOfRangeException instead of CultureNotFoundException
- #37886 - mcs 4.2.2 generates bad IL when string-interpolating a dynamic object
- #37891 - System.Net.Configuration/SmtpSection.cs missing ‘deliveryFormat’
- #38012 - Using Task’s under memory pressure leads to unexpected crashes inside the TPL on iOS
- #38025 - The debugger now steps and breaks correctly when stepping into, over or out of a function which recursively calls itself.
- #38145 - [XI]watchOS unit test fails to build with MT5210: Native linking failed
- #38161 - instability/crash when using DateTime under cpu load
- #38222 - Mono crashes if accessing attribute from missing reference .dll
- #38223 - missing package in arm64 build
- #38250 - Stack Corruption in mono involving tailcalls (where code is fine on Windows)
- #38322 - HttpListenerRequest.IsLocal isn’t good enough
- #38331 - No longer able to run unit test project from command line via ‘mono nunit-console.exe’
- #38379 - Byte enums fail to compare correctly on 64 bit iOS devices when using the LLVM compiler
- #38382 - New bcltest failure in AsyncTaskMethodBuilderTest.CallContextFlow
- #38392 - Seeing new consistent test-bcl crash on new Marshmallow devices after switching to mono 4.3.2
- #38408 - Error disposing of Filestream when leaving using statement
- #38525 - kill -QUIT produces a very broken stacktrace
- #38553 - FileVersionInfo.ProductVersion is not populated from AssemblyVersion
- #38599 - Regression: SynchronizationContext.Current returns wrong value in delegate run by SynchronizationContext.Send.
- #38600 - mkbundle Doesn’t support assemblies with spaces in their names
- #38614 - Form creation fails when System.Windows.Forms.XplatUIWin32 was initialized from thread which is already finished
- #38638 - Getting build error “Error initializing task XmlPeek: Not registered task XmlPeek”
- #38666 - Review (and fix) uses of mono_msec_ticks
- #38703 - Linq.Expression when assigned from a lambda exression aren’t constructed correctly
- #38712 - Mono 4.3 Cryptography.ProtectedData fails to decrypt data from Mono 4.2
- #38796 - FileInfo.ToString misbehaving after MoveTo
- #38818 - linked apps with Java.Interop.dll crash on device
- #38825 - mono_image_open() does not check header anymore
- #38933 - CryptographicException from ProtectedData in multi-threaded execution
- #38992 - error CS1009: Unrecognized escape sequence ‘_’ in $@ String
- #39042 - appdomain-unload.exe sometimes hangs in CI
- #39077 - AppDomain.CurrentDomain.UnhandledException prevents exceptions in ThreadPool from crashing the application
- #39153 - return wrong value if async/await used in finally block
- #39200 - Console app crashes with 4.4.0, assertion
- #39266 - C#6 null conditional operator does not appear to work with async when using mono/xbuild
- #39279 - Thread pool sizes are incorrect on linux when processor affinity is set, which complicates running mono applications in docker containers
- #39282 - [System.IO.Compression] issues with ZipArchiveEntry streams
- #39305 - [iOS]Signal Current failure in mscorlib tests
- #39347 - Assertion when passing delegate of icall method to p/invoke
- #39420 - [iOS]mini test failures when Armv7s+LLVM is enabled in release config
- #39455 - Nameof operator doesn’t handle sub-expressions
- #39459 - Corrupted async result when returning new struct directly
- #39528 - [iOS] [Private] Assertion: should not be reached at tramp-arm64-gsharedvt.c:78
- #39568 - Unmanaged crash: icall.c:5484: Could not resolve type with token 01000008 assembly:System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.IdentityModel.Tokens.IssuerTokenResolver member:
- #39569 - Validation of ETag by HttpHeaders.Add is too strict
- #39574 - Compilattion Error CS0842 thrown on Expression Body getter property with explicit StructLayout
- #39631 - PPDB support fails to load any pdb when verifier is involved
- #39644 - * Assertion at image.c:512, condition `image->heap_guid.size >= 16’ not met
- #39669 - When using XML configuration files, a broader set of configuration section types is now available, including System.Configuration.DictionarySectionHandler.
- #39715 - ppdb support causes crash at shutdown
- #39746 - Assertion at method-to-ir.c:11652 when using mono master/ca7b692f4 and nuget
- #39824 - Exceptions can now be serialized using SerializeObjectState.
- #39866 - Await + finally produces exe that causes InvalidProgramException on Windows
- #39911 - System.Reflection.Emit.DerivedType isn’t an IReflectableType so GetTypeInfo throws
- #40040 - * Assertion: should not be reached at mini.c:4403
- #40060 - System.TypeSpec.Parse cannot parse generics + anonymous type name
- #40088 - Call in lamda of static method with dynamic parameter fails in constructor argument
- #40108 - ConditionalWeakTable collects values when the key is kept alive as toggle-ref
- #40144 - checking for __sync_bool_compare_and_swap… no
- #40175 - Runtime crashes on ‘-v –version’
- #40187 - System.IO.Directory.CreateDirectory on Linux does not handle /.. in the path
- #40239 - SIGSEGV 27408 repro
- #40368 - Setting FileInfo.LastWriteTime has different results with mono32 and mono64
- #40462 - [ios] FileStreamTest.OpenCharDeviceRepeatedly(mscorlib) failure in ios device
- #40493 - Invalid IL when using ?. operator on a Func
parameter in a generic function when T is unconstrained - #40536 - Compiler crash when attaching an event of a templated delegate with wrong template type
- #40568 - Runtime crashing on System.Enum.GetValues on char enums with F#
- #40570 - [tvos]Crypto test failures (linksdk) due to secure channel fialure on AppleTV
- #40574 - [iOS|tvOS]SystemRuntimeSerialization test failure with master build
- #40603 - Mono can’t parse Date in DB wich is in format: “2016-02-04 10:39:11Z”
- #40624 - mscorlib tests fails on master
- #40643 - Process leaking handles leads to “too many open files”
- #40646 - Oid and FriendlyName for sha384
- #40697 - Some NumberFormat have wrong GroupSeparator
- #40758 - [Regression] Remoting instance is not proxied
- #40860 - MT2001 Could not link assemblies Value does not fall within the expected range
- #40886 - pdb is always prefered over mdb
- #40899 - InvalidCastException using AppleTLS
- #40916 - [System.IO.Compression] ZipArchive can create an ZipArchiveEntry that has a modified time of DateTime.MinValue
- #40945 - NREX when modifying project/solution properties
- #40953 - Bad performance using TypeBuilder
- #41035 - DataViewTest2.DataView_ListChangedEventTest occasionally fails with llvm+sgen
- #41052 - fsharp build from source fails
- #41128 - System.Text.Encoding.Default behaviour change
- #41171 - System.Drawing.Imaging.PngCodecTest.Bitmap2bit* tests fail on Linux ARM64
- #41224 - HttpClientHandler.UseProxy = false setting is ignored.
- #41264 - [iOS]System “Socket” tests fails on devices with System.ObjectDisposedException
- #41280 - System.MethodAccessException is thrown from wrong frame
- #41290 - Behavior change of ServicePointManager.ServerCertificateValidationCallback’s SslPolicyErrors result for untrusted CA certificates
- #41393 - [WatchOS 2] Incorrect calling convention for P/Invokes taking structures
- #41431 - [aot] Build fails due to ‘Sgen STW requires a working mono-context’ error
- #41492 - DateTimeOffset.ToLocalTime() throwing erroneous error
- #41509 - DLR crashes when trying to convert a object to null.
- #41530 - [iOS]TimerTest failing randomly on devices
- #41552 - HttpResponseMessage does not support multiple Links header entries
- #41564 - XmlSerializer duplicate key bug
- #41575 - A Method That Accepts a FormattableString Object Is Not Called
- #41602 - Compiler fails to recognize Indexer
- #41616 - Mono 4.4.0 crashes when using Socket.ConnectAsync to a unix domain socket if the path doesn’t exist
- #41644 - Shutdown deadlock for mono 4.5.1/master with Xamarin Studio
- #41667 - new DateTime().ToLocalTime() results in an exception
- #41671 - [iOS]HttpListenerRequestTest.HttpRequestIsLocal fails on deivce
- #41724 - [iOS]monotouch-test unified fails to build with error ambiguous call error
- #41747 - [iOS] System.Core test-watchOS crash on device
- #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
- #41786 - Mono is broken when building with the macOS 10.12 SDK
- #41833 - [SGEN?] XS crashed. error: * Assertion at gc.c:867, condition `finalizer_thread_exited’ not met
- #41874 - Reflection throws AmbiguousMatchException when calling GetProperty on a class that inherits from a generic base class.
- #41897 - NotSupportedException thrown from IPInterfaceProperties.UnicastAddresses
- #41947 - [iOS]Could not AOT assembly error on building System.Numerics with Release config
- #41956 - [watchOS] [LLVM] Incorrect codegen/optimizations
- #41961 - [watchOS] [LLVM] Exceptions in Delegate.BeginInvoke callbacks are not handled on the threadpool thread, causing process to exit due to unhandled exception
- #41979 - CodeDom cannot call mcs because of invalid encoding configuration
- #42057 - error CS0121: The call is ambiguous
- #42169 - (managed_alloc) Fatal: Managed allocator missing for (mkbundle) in Mono 4.4.X
- #42191 - sdb deadlocks all the time while XS debugs XS
- #42198 - error CS0529: Inherited interface causes a cycle in the interface hierarchy.
- #42219 - [System.IO.Compression] Cannot create ZipArchive with duplicate entries with same name
- #42224 - Compiler crashed with code: 1, “Await yields with non-empty stack” from AssertEmptyStack ()
- #42274 - System.IO.Compression.ZipArchive vs System.Xml.XmlReader
- #42408 - WebClient.DownloadString returns 401 Unauthorized when using Basic authentication
- #42410 - String Interpolation available even when langversion < 6
- #42413 - Volatile fields don’t enforce acquire - release semantics like Volatile.Read() and Volatile.Write()
- #42584 - InternalError / Crash when using System.Net.Http and PCL library
- #42585 - Switch fall-through not rejected
- #42606 - [Regression] Compact seq point enabled by default causes 100% CPU usage
- #42611 - wrong compiler error when using IEnumerable.Sum
- #42625 - coop: crash with watchos system tests
- #42688 - Can’t wait for more than 429496 ms (429s)
- #42702 - Unnecessary dependency checks
- #42750 - Deploying an iOS app to iPhone 6S crashes when a breakpoint is set
- #42864 - [Cycle 7] “System.Net.WebException: Error: NameResolutionFailure” on second web request to certain raw IP addresses with HttpClient
- #42887 - Encoding iso-8859-1 throws IndexOutOfRangeException for Unicode surrogate pairs
- #42938 - Can’t build netstandard PCL library with xbuild
- #43032 - System.Uri cannot parse url with underscore at start
- #43099 - [watchOS] Cannot enter GC safe region if the thread is not attached
- #43265 - Inconsistency in Compilation of Async Code Compared to MSFT Compilers
- #43291 - Runtime crash at reflection.c:mono_custom_attrs_construct_by_type while calling GetCustomAttributes for a proxy class
- #43357 - WCSessionReplyHandler crashes WatchKit app
- #43400 - “using static” dependent on compile order
- #43471 - pragma warning disable still shows warnings in “Errors” pad
- #43512 - TimeZoneInfo.ConvertTimeBySystemTimeZoneId ArgumentException
- #43636 - [Cycle 8] “Index was out of range. Must be non-negative and less than the size of the collection” in
System.Collections.Generic.List
1[T].set_Item()` when attempting to compile certain C# code involving tasks, async/await, and try/catch/finally - #43645 - Items and properties not emitted for up to date targets
- #43718 - mcs crashes when unable to resolve type inside lambda using the ‘as’ operator
- Some issues with building on Windows have been addressed.
Contributors
Adam Burgess, Aleksey Kliger, Alexander Jesner, Alexander Köplinger, Alexander Kyte, Alexis Christoforides, Alex Rønne Petersen, amccague, Andi McClure, Andrés G. Aragoneses, Ankit Jain, ArsenShnurkov, Arturo Espinosa, Atsushi Eno, Bernhard Urban, Chris Hamons, Damien Daspit, Daniel Becker, Dan Krieger, David Lechner, Dean Ellis, discofire, Dylan Borg, Eberhard Beilharz, Etienne CHAMPETIER, Frederik Carlier, Greg Young, hannakim123, Henric Müller, iain holmes, Immo Landwerth, Ivo Smits, James Laird-Wah, James Venning, Jb Evain, João Matos, Jochen Kühner, Joel Martinez, Jonathan Mitchell, Jonathan Pryor, Jo Shields, Josh Peterson, Jussi Sainio, Kamil Rytarowski, kasthack, kchernyavskiy, Kirill, lateralusX, Lennart Sorensen, Ludovic Henry, Marcos Henrich, Marek Habersack, Marek Safar, Mark Probst, Markus Beth, Martin Baulig, Mathieu Malaterre, Matthew Brophy, Matthew Leibowitz, Matthew Orlando, Matthias Mailänder, Michelle Allen, Miguel de Icaza, Mikayla Hutchinson, Mike Voorhees, Mikhail Filippov, Neale Ferguson, Neil Mayhew, Niklas Therning, Oliver Neal, Pablo Ruiz, Paul Gofman, PAVAN BANSAL, Philip Herron, Philippe Paré, Phyyl, Radek Doulik, Richard Webb, Rodrigo Kumpera, Rolf Bjarne Kvinge, Sandy Armstrong, Sebastien Pouliot, Stefan Sedich, Steffen Kieß, Tarek Mahmoud Sayed, Timotheus Pokorra, Tuomas Hietanen, Vincent Povirk, Vlad Brezae, WeiHeCN, Zoltan Varga