After switching to Visual Studio 2015, we have noticed that some changes made to how lambdas are compiled to MSIL in Roslyn (described in this thread and on GitHub) introduce runtime failures under certain conditions.
Since Roslyn is obviously the future of .NET, we would like to switch to this technology, but it seems that all legacy code which has been running in production (and where we have a fair degree of confidence it works correctly) is now prone to new runtime failures. These are several libraries which are impacted by this issue also (like Moq, for example).
We already skipped the upgrade to RyuJIT for its issues, but I believe Visual Studio 2015 is heavily integrated with Roslyn and I don't think we can simply replace the csc.exe
manually (but that's a different question).
So, is there a compiled list of breaking changes in Roslyn which we could reference to see what we can expect?
(Update)
Thanks to @NealGafter for providing the link. The list of breaking changes can currently be found here:
It seems that some documentation is supposed to be here: Roslyn Compiler Specification (roslyn/docs/compilers on GitHub). According to the description:
The document describing changes to CodeGen regarding lambdas (because this was my initial issue) is at roslyn/docs/compilers/CSharp/CodeGen Differences: