• What's new in .NET 6

    I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.

    .NET 6 is the final area in this series. It encompasses changes to both the runtime and base class libraries. There is a lot going on here, so do let me know if I’ve missed something.

    Preview 1

    More details in https://github.com/dotnet/core/issues/5853

    ARM64

    • On Windows, we’re adding support for Windows Forms and Windows Presentation Framework (WPF)

    Theme

    • Improve startup and throughput using runtime execution information (PGO)

    .NET CLI

    • Response files are now supported
    • Directives

    Libraries

    • New math APIs
    • Improved support for Windows ACLs
    • Portable thread pool

    Runtime

    • Support for Apple Silicon (M1 Arm64), .NET Rosetta 2 Emulation
    • Improving single file apps
    • Single-file signing on macOS
    • Crossgen2
    • Dynamic PGO
    • Arm64 performance
    • Hardware-accelerating structs

    Preview 2

    More details in https://github.com/dotnet/core/issues/5889

    Theme

    • Improve .NET Inner Loop Performance
    • .NET has a great client app development experience

    .NET Libraries

    • System.Text.JsonReferenceHandler.IgnoreCycles
    • PriorityQueue
    • Better parsing of standard numeric formats
    • SignalR – Nullable annotations

    Runtime

    • Framework Assemblies are compiled with Crossgen2
    • Profile guided optimization
    • JIT improvements

    Preview 3

    More details in https://github.com/dotnet/core/issues/5890

    Libraries

    • Faster handling of structs as Dictionary values
    • Faster interface checking and casting

    Runtime

    • Codegen

    Tools

    • Initial .NET Hot Reload support now available for web apps

    Preview 4

    More details in https://github.com/dotnet/core/issues/6098

    Tools

    • Hot Reload with the Visual Studio debugger and dotnet CLI

    Libraries

    • System.Text.Json support for IAsyncEnumerable
    • System.Text.Json Writeable DOM Feature
    • Microsoft.Extensions.Logging compile-time source generator
    • System.Linq enhancements
    • Significantly improved FileStream performance on Windows
    • Enhanced Date, Time and Time Zone support

    Runtime

    • CodeGen

    .NET Diagnostics

    • EventPipe for Mono and Improved EventPipe Performance
    • IL trimming
    • Single-file publishing

    CLI install of .NET 6 SDK Optional Workloads

    Preview 5

    More details in https://github.com/dotnet/core/issues/6099

    .NET SDK

    • Optional Workload improvements
    • NuGet Package Validation
    • more Roslyn Analyzers
    • Enable custom guards for Platform Compatibility Analyzer

    Windows Forms

    More detail in separate post

    • default font
    • More runtime designers

    Libraries

    • Dropping support for older frameworks
    • Microsoft.Extensions
    • JsonSerializer Source generation
    • WebSocket Compression
    • Socks proxy support
    • Support for OpenTelemetry Metrics
    • Vector<T> now supports nint and nuint
    • Support for OpenSSL 3
    • Add support ChaCha20/Poly1305 cryptography algorithm

    Interop

    • Objective-C interoperability support

    Diagnostics

    • (EventPipe/DiagnosticsServer) – MonoVM

    Runtime

    • CodeGen

    Preview 6

    More details in https://github.com/dotnet/core/issues/6325

    x64 emulation update

    Tools

    • .NET SDK Optional Workload improvements
    • Crossgen2 replaces crossgen

    Libraries

    • TLS support for System.DirectoryServices.Protocols
    • Improved sync-over-async performance

    Runtime

    • W^X memory policy
    • CodeGen

    Preview 7

    More details in https://github.com/dotnet/core/issues/6444

    .NET SDK

    • C# project templates modernized

    Libraries

    • Reflection APIs for nullability information
    • ZipFile Respects Unix File Permissions
    • NativeMemory APIs
    • System.Text.Json serialization notifications
    • System.Text.Json serialization property ordering
    • “write raw” JSON with System.Text.Json.Utf8JsonWriter
    • Synchronous stream overloads on JsonSerializer
    • System.Text.Json.Nodes.JsonNode support for dynamic is removed
    • System.Diagnostics Propagators
    • Simplified call patterns for cryptographic operations
    • Full Case Mapping Support in Globalization Invariant Mode

    Runtime

    • W^X (write xor execute) support for all platforms and architectures
    • CodeGen

    Early .NET 7 Feature Preview

    • Generic Math

    Release Candidate 1

    More details in https://github.com/dotnet/core/issues/6569

    • Source build
    • Profile-guided optimization (PGO)
    • Dynamic PGO
    • Crossgen2
    • Security mitigations
    • HTTP/3
    • SDK workloads

    Release Candidate 2

    More details in https://github.com/dotnet/core/issues/6570

    • C# 10
    • .NET SDK: C# project templates modernized
    • macOS and Windows Arm64 Update

    Focussed posts

    In addition the following posts were made:

  • What's new in MAUI

    I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.

    .NET MAUI (Multi-platform App UI) was originally announced way back in May 2020 at BUILD 2020, and then updated in a blog post in February 2021. .NET MAUI is an evolution of the increasingly popular Xamarin.Forms toolkit.

    We had to wait for preview 3 before more information about MAUI was forthcoming.

    Preview 3

    • Windows Desktop Now Supported
    • Updates to Controls and Layouts
    • Semantic Properties for Accessibility

    Preview 4

    • BlazorWebView
    • Splash Screen
    • Raw Assets
    • Visual Studio Productivity
    • Ecosystem Readiness

    Preview 5

    • Animations
    • UI Components
    • Single Project Templates Updates

    Preview 6

    • Workload Installation
    • Gestures
    • Clipping
    • Native Alerts
    • Single Project and Windows

    Preview 7

    • New Layouts
    • Accessibility Changes and Improvements
    • Font Scaling

    Around this time a blog post was also published highlighting previews of the Community Toolkits.

    Preview 8

    Coinciding with the .NET 6 Release Candidate 1 releases. This is when the announcement was made that MAUI would not be shipping in November as originally planned. MAUI will stay in preview until into 2022.

    Preview 9

    Coinciding with .NET 6 Release Candidate 2

    • Updated Controls
    • Borders, Corners, and Shadows – Oh my!
    • Quick Android Startup
    • Ecosystem Controls (DevExpress, Syncfusion, Telerik)

  • What's new in EF Core 6

    I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.

    EF Core 6 is the next version of Entity Framework - aka Entity Framework Core 6. Don’t confuse this with the old ‘Entity Framework 6’ (the one you might have used with legacy .NET Framework applications)!

    In January 2021, the major themes planned for Entity Framework Core 6 were outlined:

    • Highly requested features
    • Performance
    • Migrations and deployment
    • Improve existing features and fix bugs
    • .NET integration
    • Experiments and investigations

    The blog post went into a bit more detail under each of these headings as to what each might entail.

    In addition, the plan for Entity Framework Core 6.0 is also published on Microsoft Docs.

    Preview 1

    • UnicodeAttribute
    • PrecisionAttribute
    • EntityTypeConfigurationAttribute
    • Translate ToString on SQLite
    • EF.Functions.Random
    • Support for SQL Server sparse columns
    • In-memory database: validate required properties are not null
    • Improved SQL Server translation for IsNullOrWhitespace
    • Database comments are scaffolded to code comments
    • Microsoft.Data.Sqlite
      • Savepoints API
      • Command timeout in the connection string

    Preview 2

    • Preserve synchronization context in SaveChangesAsync
    • Translate String.Concat with multiple arguments
    • Smoother integration with System.Linq.Async
    • More flexible free-text search

    Preview 3

    No blog post for this release. See GitHub issue list for actual changes included.

    Preview 4

    • The runtime perf push
    • Pooling and recycling, DbContext and beyond
    • Logging suppression
    • Opting out of thread-safety checks

    Preview 5

    • Compiled models dramatically reduce startup time for your application
    • The models are generated (similar to how migrations are) so they should be refreshed whenever your model changes.
    • Some features are not currently supported by compiled models, so be aware of the limitations when you try them out.

    Preview 6

    • Support for 64-bit identity seed values
    • Support for new BCL DateOnly and TimeOnly structs for SQLite
    • Uniquify and validate check constraint names
    • Pre-convention model configuration
    • The items on this list

    Preview 7

    • Migration bundles - The migration bundle is a self-contained executable with everything needed to run a migration

    There was also an additional post highlighting improvements to the Azure Cosmos DB Provider.

    Release Candidate 1

    • EF Core 6.0 supports creating and modifying temporal tables mapped to entity types