Mono 3.6 Integrates Performance Counters into the Profiler, Adds New Features and Bug Fixes

Mono 3.6 include runtime performance counters that have been integrated into the profiler allowing the performance counter information to be surfaced to profiling tools and in particular Xamarin’s upcoming profiler. Moreover, the profiler produces backtraces for statistical mode and the profiler’s tracing mode now works on ARM as well. Mono 3.6 is available via Nuget on Mac.

Mono 3.6 debugger got new additions. It now provides support for line and column ranges and also changing the current line in the top frame. Moreover, Mono 3.6 debugger support reading simple properties without calling their getter by having a lightweight IL interpreter for small pieces of code. The buffered response mode has been added to improve efficiency on high latency links such as USB.


The latest release of Mono 3.6 also includes numerous enhancements related to Garbage Collection as it includes two new modes which will boost the performance of workloads. However, the official release note has not disclosed the details of new modes.

Some of the other new features of Mono 3.6 include:

  • Multiple http stack improvements.
  • Addition of System.IO.Compression and System.Security.Claims
  • Reworked locking to drop a hot lock in method lookup.
  • Ability to 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.
  • Ability to produce backtraces in statistical mode. (Profiler feature)
  • Addition of periodical flushing in Profiler
  • Ability to collect and report performance counter information

Mono 3.6 has fixed the handling of the volatile. CIL prefix and also optimized EqualityComparer for more types. The release includes IKVM’s ikdasm tool, which is a reliable disassembler that does not have the limitation of monodis of requiring a complete set of assemblies that are compatible to disassemble. Moreover, Mono.Unix.Native.Syscall.getxattr() can now return Errno.ENOATTR on OS X.

Mono 3.6 includes numerous bug fixes related to C# Compiler, Runtime, Core Libraries and Windows.Forms in addition to miscellanous fixes. You will find the complete list of all bug fixes on the official Mono release notes page.

Leave a Comment