Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What's new in .NET 6 Preview 1 #5853

Closed
leecow opened this issue Jan 14, 2021 · 13 comments
Closed

What's new in .NET 6 Preview 1 #5853

leecow opened this issue Jan 14, 2021 · 13 comments
Milestone

Comments

@leecow
Copy link
Member

leecow commented Jan 14, 2021

What's new in .NET 6 Preview 1

This issue is for teams to highlight work for the community that will release .NET 6 Preview 1.

To add content, use a new conversation entry. The entry should include the team name and feature title as the first line as shown in the template below.

## Team Name: Feature title

[link to the tracking issue or epic item for the work]

Tell the story of the feature and anything the community should pay particular attention 
to be successful using the feature.

Preview 1: #5853
Preview 2: #5889
Preview 3: #5890
Preview 4: #6098
Preview 5: #6099
Preview 6: #6325
Preview 7: #6444
RC1: #6569
RC2: #6570

@leecow leecow added this to the 6.0 milestone Jan 14, 2021
@tannergooding
Copy link
Member

tannergooding commented Jan 19, 2021

.NET Libraries: System.Numerics - New math APIs

New math APIs which may be hardware accelerated if the underlying hardware supports it:

  • SinCos for simultaneously computing Sin and Cos
  • ReciprocalEstimate for computing an approximate of 1 / x
  • ReciprocalSqrtEstimate for computing an approximate of 1 / Sqrt(x)

New math API overloads:

  • Clamp, DivRem, Min, and Max supporting nint and nuint
  • Abs and Sign supporting nint
  • DivRem variants which return a tuple

@dotnet dotnet deleted a comment from ChayoteJarocho Jan 25, 2021
@carlossanlop
Copy link
Member

.NET Libraries: System.Threading.AccessControl - Ported Windows ACL APIs

New overloads were added to the OpenExisting and TryOpenExisting methods for EventWaitHandle, Mutex and Semaphore. By accepting "security rights" instances, the overloads enable users to open existing instances of threading synchronization objects that were created with special Windows security attributes.

These APIs are Windows-specific and available via the System.Threading.AccessControl assembly; they were ported from .NET Framework:

namespace System.Threading
{
    public static partial class EventWaitHandleAcl
    {
        public static EventWaitHandle OpenExisting(string name, EventWaitHandleRights rights);
        public static bool TryOpenExisting(string name, EventWaitHandleRights rights, out EventWaitHandle result);
    }
    public static partial class MutexAcl
    {
        public static Mutex OpenExisting(string name, MutexRights rights);
        public static bool TryOpenExisting(string name, MutexRights rights, out Mutex result);
    }
    public static partial class SemaphoreAcl
    {
        public static Semaphore OpenExisting(string name, SemaphoreRights rights);
        public static bool TryOpenExisting(string name, SemaphoreRights rights, out Semaphore result);
    }
}

@JamesNK
Copy link
Member

JamesNK commented Jan 25, 2021

ASP.NET Core: appsettings.json autocomplete

appsettings.json now has autocomplete in Visual Studio and VSCode (with C# extension).

The JSON schema for appsettings.json was updated to include commonly used configuration in ASP.NET Core, including configuring logging, host filtering and Kestrel.

appsettings-schema

@JulieLeeMSFT
Copy link
Member

CodeGen

Dynamic PGO dotnet/runtime#43618

ABI changes for Apple Silicon dotnet/runtime#41130

Advanced Arm64 support dotnet/runtime#43629

Arm64-#46609

Stabilize performance measurements dotnet/runtime#43227

perf-#43227

Keep structs in register dotnet/runtime#43867

@agocke
Copy link
Member

agocke commented Jan 28, 2021

AppModel

"Superhost" for Windows and Mac: dotnet/runtime#43072

In 5.0 we debuted the "superhost" for Linux, which linked all the CoreCLR native binaries into a single host, and embedded all libraries inside the same file, avoiding any file extraction.

In 6.0 we're continuing this work by brining the superhost to Windows and Mac, meaning users can now publish a single-file binary that has exactly one file on disk and does not need to extract any of the core runtime assemblies to temporary directories.

Facilitate single-file signing on MacOS: dotnet/runtime#3671

Signing/notarization on MacOS has very strict requirements for the layout of binaries. This change fixes single-file to conform to those requirements, allowing single-file apps to be notarized and signed.

@sdmaclea
Copy link

sdmaclea commented Jan 28, 2021

.NET CoreCLR Runtime: Support Apple Silicon dotnet/runtime#43313

.NET Rosetta 2 Emulation dotnet/runtime#44897

Apple release of Big Sur 11.2 Beta 2 has resolved most issue running .NET 5.0 under Rosetta 2 emulation. Prior to Big Sur 11.2 Beta 2 there were significant issues with Rosetta 2 emulation, upgrade of M1's to to Big Sur 11.2 is strongly recommended.

  • .NET 5.0 testing by Apple, Microsoft, and Community shows:

    • Debugger is fully functional
    • Stability issues are resolved
    • Slowness when running with debugger
  • .NET 6.0 preview1 and .NET Core 3.1 have not yet been tested by Microsoft under Rosetta 2, but are expected to work similarly to .NET 5.0. Community has not reported any particular issues with .NET Core 3.1.

  • The recent Big Sur 11.2 release has not yet been tested (by Microsoft), but is expected to have all the updates included in 11.2 Beta 2.

.NET 6 - CoreCLR Native dotnet/runtime#43313

Native support for Apple Silicon is mostly complete in .NET 6.0 Preview 1. Native arm64 packages are now available

Known issues:

  • Debugger support is completely missing. Visual Studio & VS Code debuggers will not work locally or remotely when debuggng a native Apple Silicon .NET 6 Preview 1 runtime.
  • For large stack allocations, JIT can fail to generate stack clear code since M1 pagesize is 16K arm64 skippage6.sh test fails to JIT code when page size > 4KB runtime#42023.
  • Runtime needs stability work
    • A small number of tests are failing GC Stress testing
    • A small number of tests exhibit intermittent failures
  • CI testing is not enabled so test coverage is purely from occasional manual testing

Workarounds:

To work around the lack of debugger support, it is recommended to either:

(lldb) plugin load /Users/stmaclea/git/diagnostics/artifacts/bin/OSX.arm64.Debug/libsosplugin.dylib

@marcpopMSFT
Copy link
Member

marcpopMSFT commented Jan 30, 2021

SDK: .NET CLI adopting the System.CommandLine libraries

Adopting System.CommandLine lights up three features in the .NET CLI

  • Response files so you can save your command line arguments in a file or update them dynamically
    dotnet build @demo.rsp
    DotnetResponseFiles
  • The suggest directive will enable you to search for commands if you don't know the exact command. This directive exists to enable the dotnet-suggest global tool
dotnet [suggest] buil
build
build-server
msbuild
  • The parse directive will give you details on how the CLI is parsing your command line for better debugging.
dotnet [parse] build -f net5.0
[ dotnet [ build [ -f <net5.0> ] ] ]

@jonsequitur

This comment has been minimized.

@jonsequitur

This comment has been minimized.

@mangod9
Copy link
Member

mangod9 commented Feb 3, 2021

Portable Threadpool is enabled by default.

This is a managed implementation of the runtime Threadpool. More details are included as part of this PR: dotnet/runtime#38225. We dont expect any functional or performance impact as part of this change, but if there is any issue it can be disabled using COMPlus_ThreadPool_UsePortableThreadPool=0

@mangod9
Copy link
Member

mangod9 commented Feb 3, 2021

System.Private.Corelib assembly now precompiled by crossgen2

We have started to roll broader crossgen2 based pre-compilation. In preview1 corelib is compiled using crossgen2. Going forward we expect all Framework assemblies would be compiled with it. We havent observed any performance differences, but there are a few differences with crossgen1 in terms of which methods are compiled.

The sdk still defaults to using crossgen1 however and that will be moved over in subsequent .net 6 previews.

@predavid
Copy link

predavid commented Feb 5, 2021

Windows Presentation Framework (WPF) : ARM64 Support

WPF ARM64 support is now available in .NET 6.0 Preview 1

Build available here

Please provide your feedback here

@richlander
Copy link
Member

.NET 6 Preview 1 was released: https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-1/

@leecow leecow changed the title What's new in .NET 6 Preview 1 [WIP] What's new in .NET 6 Preview 1 Aug 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests