Microsoft’s .NET Conf 2021 is just days away, and the .NET 6 release candidates have been painting a clear picture: this is the release where Microsoft’s “One .NET” vision actually comes together. After years of transition — from .NET Framework to .NET Core, through the awkward .NET 5 renumbering — version 6 is shaping up to be the most significant .NET release in years.
I’ve been working with .NET since the original framework shipped in 2002. I’ve lived through every major transition, including the painful years of maintaining parallel .NET Framework and .NET Core applications. .NET 6 feels like the release that finally lets us stop qualifying which .NET we’re talking about.
What Makes .NET 6 Different#
The headline feature is Long-Term Support (LTS). .NET 5 was a “Current” release with just 18 months of support, which made it a tough sell for enterprise adoption. .NET 6 gets three years of support, making it the natural migration target for organisations still running .NET Framework or older .NET Core versions.
But LTS status alone doesn’t make a release exciting. The performance improvements do. The .NET team has been methodically benchmarking and optimising, and the results from RC2 are remarkable:
- Minimal APIs reduce the ceremony of building HTTP services to almost nothing. A complete web API in six lines of code isn’t just a demo trick — it signals a genuine rethinking of how .NET approaches simplicity.
- Hot Reload finally works properly across the stack, letting you modify C# code and see changes reflected without restarting the application. This has been standard in interpreted language ecosystems for years, so it’s about time.
- PGO (Profile-Guided Optimisation) as a runtime feature means the JIT compiler can optimise based on actual usage patterns. Dynamic PGO is still experimental, but initial benchmarks show 20-30% throughput improvements in some workloads.
- MAUI (Multi-platform App UI) brings cross-platform native application development to .NET, though it’ll ship separately as it needs more baking time.
The C# 10 Improvements Matter#
.NET 6 ships with C# 10, and while individual language features rarely change how you work, the cumulative effect here is notable. Global usings and file-scoped namespaces reduce boilerplate significantly. A typical C# file used to start with 10-15 lines of using statements and namespace declarations. Now it can start with your actual code.
// Before: ceremony
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyApp.Services
{
public class UserService
{
// ...
}
}
// After: just code
public class UserService
{
// ...
}Record structs extend the record pattern to value types, which is excellent for high-performance scenarios where you want immutability semantics without heap allocations. For developers building APIs that handle high throughput — which is increasingly all of us — this matters.
Performance: The Real Story#
The TechEmpower benchmarks have been tracking .NET’s performance trajectory, and it’s been consistently climbing. .NET 6 puts C# in genuine competition with Go and Rust for web server workloads, which would have been laughable a decade ago.
The System.Text.Json improvements alone are worth the upgrade. JSON serialisation is the bread and butter of API development, and the source generators in .NET 6 eliminate reflection-based serialisation overhead entirely. You get compile-time generated serialisers that are significantly faster and produce less garbage collection pressure.
The .NET team has also invested heavily in Span<T> and Memory<T> adoption throughout the base class libraries. The result is less allocation, less copying, and better throughput across the board. FileStream has been completely rewritten on both Windows and Linux for better async I/O performance.
My Take#
.NET 6 represents Microsoft delivering on a promise that took nearly six years to fulfil. The journey from “.NET Core is the future” at .NET Conf 2016 to “here’s the unified platform” has been longer and bumpier than anyone wanted, but the destination is genuinely good.
If you’re still on .NET Framework, this is your migration target. If you’re on .NET Core 3.1 (which goes out of support next December), start planning your upgrade now. The migration tooling has improved dramatically, and most libraries have caught up.
What impresses me most isn’t any single feature — it’s the coherence. Minimal APIs, Hot Reload, C# 10 improvements, and performance gains all point in the same direction: making .NET development faster, simpler, and more productive. Microsoft has been listening to what developers actually want, and it shows.
The .NET ecosystem hasn’t been this healthy in years. With .NET 6, I’d argue it’s one of the strongest general-purpose development platforms available. Whether you’re building APIs, desktop apps, mobile clients, or cloud services, there’s now a single, performant, well-supported framework that handles all of it. That’s what “One .NET” always meant, and it’s finally here.
