Jonathan Chambers and his team
of amazing low-level VM hackers have been hard at work in upgrading
Unity's VM and libraries to bring you the latest and greatest Mono
runtime to Unity. We have had the privilege of assisting in this
migration and providing them with technical support for this
migration.

The work that the Unity team has done lays down the foundation for an
ongoing update to their .NET capabilities, so future innovation on the
platform can be quickly adopted, bringing new and more joyful
capabilities to developers in the platform.

With this new runtime, Unity developers will be able to access and
consume a large portion of third party .NET libraries, including all
those shiny .NET Standard Libraries - the new universal way of sharing
code in the .NET world.

C# 7

The Unity team has also provided very valuable guidance to the C#
team which have directly influenced features in C# 7 like ref locals
and
returns

In our own tests using C# for an AR application, we doubled the
speed of managed-code AR processing by using these new features.

When users use the new Mono support in Unity, they default to C# 6, as
this is the version that Mono's C# compiler fully supports. One of
the challenges is that Mono's C# compiler has not fully implemented
support for C# 7, as Mono
itself moved to Roslyn.

The team at Unity is now working with the Roslyn team to adopt the
Roslyn C# compiler in Unity. Because Roslyn is a larger compiler,
it is a slower compiler to startup, and Unity does many small
incremental compilations. So the team is working towards adopting
the server compilation mode of Roslyn. This runs the Roslyn C#
compiler as a reusable service which can compile code very quickly,
without having to pay the price for startup every time.

Visual Studio

If you install the Unity beta today, you will also see that on Mac, it
now defaults to Visual Studio for Mac as its default editor.

JB evain leads our Unity support for Visual Studio and he has brought
the
magic
of his Unity plugin to Visual Studio for Mac.

As Unity upgrades its Mono runtime, they also benefit from the
extended debugger protocol support in Mono, which bring years of
improvements to the debugging experience.