The first update to Visual Studio 2015 has been released, and it brings with it a raft of changes. A number of new languages are now supported in the VS editor, and a C# scripting API and REPL was added. Other additions include .NET Famework 4.6.1 and Parallel Test Support which takes advantage of multi-core development machines.
Xamarin has announced version 4 of their platform for building cross-platform native mobile apps for iOS and Android in C#. New in this version are the GA of Insights, a Recorder for the Test Cloud and several enhancements to the Platform: Xamarin.Forms 2.0, better support for iOS in VS, support for Android Material Design and more .NET code.
The SharpDevelop Community recently released version 2 of Refactoring Essentials for Visual Studio. The release brings new analyzers, new refactorings and several improvements to the Visual Studio extension.
Seth Juarez, of Channel 9, interviews Mads Torgersen, product manager of C#, about the development of the next version of the C# language, codenamed C# 7. Alongside a few other features, three major ones are described: pattern matching, tuple syntax and nullable references.
The recent proposal to add non-nullable references to C# by Microsoft’s Mads Togersen sparked quite a debate in the .NET community. The reactions were diverse, ranging from praise to preferring status quo.
Two more significant bugs have been found when using RyuJIT and .NET 4.6. Code recompilation is not necessary to experience the effects, merely running existing code on RyuJIT (which ships in .NET 4.6 and is enabled by default) will cause severe problems.
Continuing our look at the future of C#, we now take a look at Proposal 119. This would add first class compiler and syntax support for method-level contracts.
In C#, the readonly keyword can only be used at the field level. Under proposal 115, Readonly for Locals and Parameters, this would be extended to cover a many more scenarios.
Though on the “Some Interest” list, the next proposal is very controversial. The basic premise for the Lambda Capture Lists proposal is that it would allow more control over how variables are captured in closures.
Code Aware Libraries are “libraries that provide guidance on correct use through embedded tooling and operates on the user’s code in real time.”
The next proposal in our C# Futures series considers the possibility of offering extension fields. This in turn would allow for extension properties and extension events.
The async/await syntax in C# was well received, but now developers are asking for more. Specifically, they want to be able to return more than one value from their asynchronous function using a “yield return” like syntax. This capability is being referred to as “asynchronous sequences” in a new proposal for C# 7.
A big emphasis for many developers, especially those writing games or working on pure number crunching, is raw performance. One way to get more performance out of C# is to avoid allocating memory without having to copy structs instead. The next proposal shows how C# can expose the CLR managed pointer support to do just that.
Probably the most common error type in .NET is the Null Reference Exception. The root cause of this error is C#’s inability to express the concept of non-nullable references, which in turn makes compiler-enforced null checking it too burdensome. To address this problem, there is a proposal for mandatory and explicitly nullable references.
With C#6 nearing completion, plans are already being laid for C# 7. While nothing is definite yet, they are starting to categorize proposals in terms of “interest and estimated plausibility”. In this series, we’ll be looking at some of the proposals starting with language support for tuples.