.NET 9.0 (.NET 9)
Eintrag zuletzt aktualisiert am: 15.11.2024
.NET 9.0 ist der Nachfolger von
.NET 8.0, der im November 2024 erscheinen soll.
Versionsgeschichte inkl. Vorabversionen
- Preview 1 am 13.2.2024
- Preview 2 am 12.3.2024
- Preview 3 am 11.4.2024
- Preview 4 am 21.5.2024
- Preview 5 am 21.5.2024
- Preview 6 am 09.07.2024
- Preview 7 am 13.08.2024
- Release Candidate 1 am 10.09.2024
- Release Candidate 2 am 08.10.2024
- Release to Manufacturing (RTM) am 12.11.2024
Neuerungen in der .NET 9.0 Runtime
Dass .NET beim Behandeln von Laufzeitfehlern langsam ist, ist seit vielen Jahren bekannt. Daher gehört die Vermeidung von Laufzeitfehlern zu den Best Practices. Insbesondere sollte man Laufzeitfehler nicht als Ersatz für Kontrollflussanweisungen verwenden, etwa um bei ungültigen Werten eine Schleife oder Unterroutine zu verlassen. Microsoft hat aber laut eigener Aussage in den Release Notes zur
.NET Runtime die Behandlung von Laufzeitfehlern um den Faktor zwei bis vier gesteigert. Das gilt für Windows x64, Windows ARM64,
Linux x64 und
Linux ARM64, aber nicht für 32-Bit-Windows. Entwicklerinnen und Entwickler können via Umgebungsvariable
DOTNET_Legacy
ExceptionHandling = 1
oder Projektdateieinstellung
<RuntimeHostConfigurationOption Include="System.Runtime.Legacy
ExceptionHandling" Value="true" />
die Laufzeitumgebung dazu zwingen, das alte, langsamere Fehlerbehandlungsverfahren einzusetzen.
- Ausweitung des NativeAOT-Compilers auf ASP.NET Core SignalR, WinUI3 sowie .NET MAUI mit iOS und macOS
- Terminal Logger ist Standard in .NET SDK CLI-Befehlen und verbessert bei Umbrüchen + Ausgabe der Anzahl der Fehler und Warnungen am Ende
- Parallelisierung in dotnet test bem Kompilieren für mehrere .NET-Versionen
- Workload Sets (Alternative zu bisherigen "loose Manifests“) -> Nur passende Workloads werden installiert!
- Workload-Geschichte: dotnet workload history
- Entwicklungszertifikaten vertrauen in Chrome und Firefox auch auf Ubuntu und Fedora
dotnet dev-certs https --trust
- Roll-Forward für .NET SDK-basierte Tools
- NuGet-Sicherheitswarnungen bei dotnet restore im Standard auch für transitive Abhängigkeiten
Neuerungen bei den .NET-Basisklassen
- Erzeugen einer GUID in Version 7 mit Timestamp: Guid.CreateVersion7()
- Multiplikation großer Zahlen mit BigMul()
- Vektorumwandlungen
- Neue Mengenklasse OrderedDictionary<T,T>
- Neue Mengenklasse ReadOnlySet<T>
- Remove() in der PriorityQueue-Klasse
- Neue Create()-Überladung in der SearchValues-Klasse für ganze Zeichenketten
- EnumerateSplits() für reguläre Ausdrücke
- Nutzung von System.ReadOnlySpan<T> in der Basisklassenbibliothek
- LINQ-Erweiterungen: CountBy(), AggregateBy() und Index()
- Mehr Genauigkeit für TimeSpan
- Verbesserte Debugger-Ansicht für Dictionary-Klassen
- Verbesserte Ausgabe bei Debug.Assert()
- WhenEach() in System.Threading.Tasks.Task
- Erweitere Einstellungen für die Komprimierung mit Zlib und Brotli
- Persistierung dynamisch generierter Assemblies mit PersistedAssemblyBuilder
- [UnsafeAccessorAttribute] erlaubt nun auch generische Parameter
- Feature-Flags
- Hybrider Cache
- Verbesserung für den Source Generator für reguläre Ausdrücke
- Binäre Serialisierung auf dem Abstellgleis
- Implementierung des KECCAK Message Authentication Code (KMAC) des US-amerikanischen National Institute of Standards and Technology (NIST)
- Neue Klasse System.Buffers.Text.Base64Url
- Eine neue Klasse TypeName finden Entwicklerinnen und Entwickler im NuGet-Paket "System.Reflection.Metadata". Diese Klasse bietet ähnliche Funktionen wie System.Type, ist aber von der Laufzeitumgebung entkoppelt und funktioniert auch in älteren .NET-Versionen.
- Die Komprimierungsklassen im Namensraum System.IO.Compression (z.B. ZipArchive, DeflateStream, GZipStream, ZLibStream) verwenden nun die neue Bibliothek Zlib-ng https://github.com/zlib-ng/zlib-ng statt der älteren Zlib.
- Bei der Klasse TarEntry bietet .NET 9.0 nun die neue Eigenschaft DataOffset, die Entwicklerinnen und Entwicklern das Auslesen der Positionen des ersten Byte eines Eintrags im TAR-Archiv-Stream erlaubt. Das könnte laut Microsoft nützlich sein für Parallelzugriffe auf große TAR-Dateien.
- Im neuen Namensraum System.Net.ServerSentEvents gibt es die Klasse für Server-Sent Events (SSE) zum Streaming vom Server zum Client als Alternativ zu Websockets.
- Zudem stellt Microsoft in .NET 9.0 die neue Methode CreateUnboundedPrioritized<T> in der Klasse System.Threading.Channels bereit.
- Die Verschlüsselungsverfahren AES-GCM und ChaChaPoly1305 funktionieren nun auch auf macOS Catalyst sowie iOS und tvOS (jeweils ab Version 13).
- Zum Laden von X.509-Zertifikaten bietet Microsoft nun neben dem Laden per Konstruktor auch eine eigene Klasse X509CertificateLoader mit den statischen Methoden LoadSingleCertificate() und LoadCertificateCollection(). Auch ältere .NET-Versionen einschließlich dem klassischen .NET Framework können diese neue Klasse verwenden über das NuGet-Paket "Microsoft.Bcl.Cryptography".
- XPS-Dokumente im Format XPS v4 können nun mit den Klassen im Namensraum System.IO.Packaging auch in .NET 9.0 geöffnet werden, da dort nun auch .piece-Dateien unterstützt werden.
siehe
System.Text.Json
Neuerungen in WPF 9.0 in .NET 9.0
- Windows 11 Look & Feel ("Fluent Design") mit PresentationFramework.Fluent/Fluent.xaml: Runde Ecken, Farben, Themes
siehe
ASP.NET Core 9.0
siehe
Blazor 9.0