Microsoft hat eine bedeutende neue Version der offenen Plattform .NET 6 vorgestellt, die durch die Vereinheitlichung der Produkte .NET Framework, .NET Core und Mono entstanden ist. Mit .NET 6 können plattformübergreifende Anwendungen für Browser, Cloud-Systeme, Desktop, IoT-Geräte und mobile Plattformen erstellt werden, wobei einheitliche Bibliotheken und ein gemeinsamer Build-Prozess verwendet werden, unabhängig vom Typ der Anwendung. Die Builds .NET SDK 6, .NET Runtime 6 und ASP.NET Core Runtime 6 sind für Linux, macOS und Windows verfügbar. Die .NET Desktop Runtime 6 wird nur für Windows angeboten. Die mit dem Projekt verbundenen Vorarbeiten werden unter der MIT-Lizenz verteilt.
.NET 6 umfasst das Runtime CoreCLR mit dem JIT-Compiler RyuJIT, Standardbibliotheken, CoreFX-Bibliotheken, WPF, Windows Forms, WinUI, Entity Framework, die Befehlszeilenschnittstelle dotnet sowie Werkzeuge zur Entwicklung von Mikrodiensten, Bibliotheken, Server-, grafischen und Konsolenanwendungen. Separat veröffentlicht wurde das Stack für die Entwicklung von Webanwendungen ASP.NET Core 6.0 und die ORM-Schicht Entity Framework Core 6.0 (einschließlich Treiber für SQLite und PostgreSQL), sowie die Veröffentlichungen der Programmiersprachen C# 10 und F# 6. Die Unterstützung für .NET 6.0 und C# 10 ist im kostenlosen Code-Editor Visual Studio Code enthalten.
Besonderheiten der neuen Version:
- Die Leistung wurde erheblich gesteigert, einschließlich der Optimierung von Datei-Ein- und Ausgaben.
- In C# 10 wurde die Unterstützung für Record Structs, globale Usings, dateigebundene Namensräume sowie neue Möglichkeiten für Lambda-Ausdrücke eingeführt. Der Compiler unterstützt jetzt auch die inkrementelle Generierung von Quellcode.
- In F# 6 wurde die Unterstützung für asynchrone Aufgabenausführung (Async) und Pipeline-Debugging hinzugefügt.
- Die Funktion Hot Reload ermöglicht es, Code während der Programmausführung in Echtzeit zu bearbeiten, ohne dass die Ausführung manuell gestoppt oder Haltepunkte gesetzt werden müssen. Der Entwickler kann die Anwendung mit 'dotnet watch' starten, wonach Änderungen am Code automatisch auf die laufende Anwendung angewendet werden, sodass die Ergebnisse sofort sichtbar sind.
- Ein Tool namens 'dotnet monitor' wurde hinzugefügt, um auf diagnostische Informationen des dotnet-Prozesses zuzugreifen.
- Ein neues dynamisches Optimierungssystem basierend auf Code-Profiling-Ergebnissen (PGO – Profilführende Optimierung) wurde eingeführt, um effizienteren Code zu generieren, der auf Analyseergebnissen von Laufzeitbedingungen basiert. Der Einsatz von PGO hat die Leistung des TechEmpower JSON „MVC“-Benchmarks um 26 % gesteigert.
- In ASP.NET Core wurden HttpClient und gRPC um die Unterstützung des HTTP/3-Protokolls erweitert.
- Die API, die mit dem JSON-Format in Verbindung steht, wurde erweitert. Ein neuer Code-Generator, System.Text.Json, und ein Datensystem für die Serialisierung im JSON-Format wurden hinzugefügt.
- In Blazor, der Plattform zur Erstellung von Webanwendungen in C#, wurde die Unterstützung für das Rendern von Razor-Komponenten aus JavaScript und die Integration mit bestehenden JavaScript-Anwendungen hinzugefügt.
- Die Unterstützung für die Kompilierung von .NET-Code in WebAssembly wurde hinzugefügt.
- Die API File IO unterstützt nun symbolische Links. FileStream wurde vollständig neu geschrieben.
- Die Unterstützung für die OpenSSL 3-Bibliothek und die Kryptografie-Algorithmen ChaCha20/Poly1305 wurde hinzugefügt.
- In Runtime sind Schutzmechanismen wie W^X (Write XOR Execute, Verbot des gleichzeitigen Zugriffs auf Schreiben und Ausführen) und CET (Control-flow Enforcement Technology, Schutz vor der Ausführung von Exploits, die durch Techniken des Rücksprung-Orientierten Programmierens ermöglicht werden) implementiert.
- Experimentelle Unterstützung für iOS und Android als TFM-Plattformen (Target Framework Moniker) hinzugefügt.
- Die Unterstützung für Arm64-Systeme wurde erheblich verbessert. Unterstützung für Apple-Geräte mit ARM-Chips M1 (Apple Silicon) wurde hinzugefügt.
- Ein Prozess zur Erstellung des .NET SDK aus Quelltexten wurde bereitgestellt, was die Paketbildung für .NET-Distros unter Linux vereinfacht.
Quelle: opennet.ru
