.NET Core 3.0 Preview 6 Released

.NET Core 3.0 Preview 6 released, brings WPF and WinForms updates, Alpine Docker images, improvements to Event Pipe, performance enhancements and improvements to application size.

Recently, Microsoft announced .NET Core 3.0 Preview 6.
 
The latest release contains updates for compiling assemblies for improved startup, optimizing applications for size with linker, and EventPipe improvements. Additionally, the company also have released new Docker images for Alpine on ARM64.
 
According to the company, most of the WPF codebase has been published to GitHub. There you can find source for fifteen assemblies.
 
 
Source: Microsoft 
 
Previously only available for x64, Docker images are now available for both .NET Core and ASP.NET Core on ARM64.
 
You can use the images in a Dockerfile, or with docker pull:
 
docker pull mcr.microsoft.com/dotnet/core/runtime:3.0-alpine-arm64v8
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine-arm64v8
 
Event Pipe now supports multiple sessions. So, now, you can consume events with EventListener in-proc and simultaneously have out-of-process event pipe clients.
 
Several new Perf Counters have been added:
  • % Time in GC
  • Gen 0 Heap Size
  • Gen 1 Heap Size
  • Gen 2 Heap Size
  • LOH Heap Size
  • Allocation Rate
  • Number of assemblies loaded
  • Number of ThreadPool Threads
  • Monitor Lock Contention Rate
  • ThreadPool Work Items Queue
  • ThreadPool Completed Work Items Rate
Now, you can implement profiler attach using the same Event Pipe infrastructure.
 
With 3.0 Preview 6, users can improve the startup time of your .NET Core application by compiling application assemblies as ReadyToRun (R2R) format. Here, R2R is a kind of ahead-of-time (AOT) compilation.
 
Below are performance numbers collected using a sample WPF application. Here, the application was published as self-contained and did not use the assembly linker.
 
IL-only Application:
Startup time: 1.9 seconds
Memory usage: 69.1 MB
Application size: 150 MB
 
With ReadyToRun images:
Startup time: 1.3 seconds.
Memory usage: 55.7 MB
Application size: 156 MB
 
Libraries and application binaries both can be RTR complied. ReadyToRun images are similar to IL assemblies with some key differences. The ReadyToRun compilation is a publish-only, opt-in feature. NET Core 3.0 Preview 5 contains a preview version of it.
 
Currently, the RTR compiler doesn’t support cross-targeting. You are required to compile on a given target. So, in case, you want R2R images for Windows x64, you will have to run the publish command on that environment.
 
To learn more, you can visit the official announcement here.