It’s a new year, and we already have a bunch of dotnet releases to look forward to, thanks to the open development processes that Microsoft is using these days with dotnet.
The three big releases I am looking forward to are C# 8 and .Net Core 3.0, and a NetStandard2.1. (Not to mention there is a .Net Framework 4.8 as well. But I’ve moved on.)
C# 8
It feels like we’ve been talking about C# 8 for a while, with 7.1, 7.2 and 7.3 releases building towards it. (It was 2 years ago when they were talking about what’s new in C# 7.0!). We’ve had demos at Build, NDC and online of what is coming, with Preview releases dropping towards the end of last year. We should expect to see VS 2019 Released this Quarter (one hopes) and can get a better look at C# 8 in its final form at that point.
What we do know is there are a bunch of cool features coming:
- Nullable reference types
- Async streams
- Ranges and indices
- Default implementations of interface members
- Recursive patterns
- Switch expressions
- Target-typed new-expressions
More detailed notes and examples of what these are and how they look was published on the .Net Blog article Building C# 8.0.
I am seriously looking forward to the Nullable reference types (I have a few libraries to get updated to support it still), Switch expressions and recursive patterns, and also finding out where the other features start to find their use for me.
.Net Core 3.0
Once again, we have a proper Major release. This one is as important as the .Net Core 2.0 milestone was, but hopefully, the jump is much more stable. This is an umbrella for new dotnet CLI tool updates, MSBuild updates, a new 3.0 runtime, and support for all in Visual Studio as well.
The big headline is Windows Desktop Coming to .NET Core. Yes, this is OS-specific and not cross-platform, but is a huge step in getting those GUI apps transferred over to the dotnet CLI and the .Net Core runtime. As part of this, they even OpenSourced all the GUI frameworks WPF, WinForms and WinUI.
Things to look out for when moving to .Net Core 3.0:
- Desktop Applications support
- Applications now have executables by default
- dotnet build now copies dependencies
- Local dotnet tools
- ARM64 and updated platform support
- Many language and runtime improvements
- fast in-box JSON Reader
- C# 8 language features support
- System.Buffers.SequenceReader
- IoT improvements
- TLS improvements on linux
- Cryptography improvements
- More BCL Improvements using optimized Span
, Memory - Default implementations of interface members
- Tiered Compilation on by default
- Assembly Metadata Reading with MetadataLoadContext
To see more of the changes in detail, especially the language and runtime improvements, you can read up more yourself in the Announcement from December.
.NetStandard2.1
The release of .Net Core 2.1 and 2.2 went by without needing to update the baseline of compatibility. The NetStandard2.0 target has stood up well as a baseline common denominator after the false start .NetStandard1.x gave some of us.
Late last year Microsoft Announced .NET Standard 2.1, which is a new required standard that will be first implemented in .dotnet 3.0 and .Net Framework 4.8 is a foundation to allow using some of the new language features that need Runtime support, such as Async streams, indexers and ranges.
Conclusion
As mentioned, you can start playing with some of this stuff today in the Preview of Visual Studio 2019.
Plenty of new stuff to learn over the coming year and I can’t wait for Release day so I can update everything I have. First stop will be Nullable reference types.
What are you looking forward to using the most?