The joy of six: Microsoft emits latest preview of .NET Core 3 with plenty of pipes, perfs, loads...
All the while more WPF source trickles into GitHub
Microsoft has continued its quickfire pace of .NET Core 3 updates, flinging preview 6 at developers keen on the open-source platform.
Program manager Richard Lander also took time to report on the company's progress in shovelling the source behind the venerable Windows Presentation Framework (WPF) into GitHub. It's safe to say that the work has involved a tad more than removing all the swears.
On the .NET Core 3 front, the framework now supports multiple Event Pipe sessions, allowing scenarios such as consuming events with EventListener in-proc and simultaneously having out-of-process event pipe clients.
Unsurprisingly, the gang has added a number of Perf Counters to keep track of things, including values for ThreadPool Work Items and Lock Contention rate.
Lander also highlighted the ReadyToRun (R2R) format, aimed at speeding the startup time of a .NET Core app by cutting back on what the Just In Time (JIT) interpreter has to do while the app is firing up.
Yes – we're talking about another take on Ahead Of Time (AOT) compilation.
Since there is less for JIT to do, things are snappier to load. However, the downside is a bloating of the binary since the old Intermediate Language (IL) code is still needed as well as the native version.
AOT has been around for a while. .NET developers doubtless remember the joy of
NGEN, which insisted on compiling on the client machine, rather than as part of the application build. Core enjoys
crossgen, which will pump out R2R images as part of the build process. Client machine involvement is not needed.
However, there are some downsides. While an IL assembly will run pretty much anywhere there is a runtime that supports its target framework, R2R is a bit more sniffy and compiled for a specific .NET Core runtime version and environment. Lander cites the example of compiling a R2R for .NET Core 3 and x86 Linux, which will subsequently only work in a compatible environment, such as .NET Core 3.1 or, whisper it, .NET 5, on something friendly to penguins.
In addition to what might seem the slightly retrograde step of creating a format that narrows the range of target environments in pursuit of performance, the team added HTTP/2 support to
HttpClient. The ASP.NET Core and Blazor also issued updates, including authentication and authorisation support for Blazor apps and static assets in Razor class libraries.
The team has also added Alpine Docker images for .NET Core and ASP.NET Core on ARM64 having previously remained faithful to x64.
And as for the publishing of the codebase for WPF? Lander reported that the WPF team had got most of the source into GitHub with a view to getting everything done before .NET Core 3 hits General Availability.
When will that be? While, according to Lander, "we're focused on getting a final release in your hands" there could well be a few more previews between now and .NET Core 3 day. ®