Microsoft hat die offene Plattform .NET 9.0 veröffentlicht

Die Firma Microsoft hat die Veröffentlichung der offenen Plattform .NET 9 vorgestellt, die durch die Vereinheitlichung der Produkte .NET Framework, .NET Core und Mono entstanden ist. Auf Basis von .NET 9 können plattformübergreifende Anwendungen für Browser, Cloud-Systeme, Desktops, IoT-Geräte und mobile Plattformen erstellt werden, wobei einheitliche Bibliotheken und ein gemeinsamer Build-Prozess verwendet werden, unabhängig vom Anwendungstyp. Die Pakete .NET SDK 9, .NET Runtime 9 und ASP.NET Core Runtime 9 sind für Linux, macOS und Windows verfügbar. .NET Desktop Runtime 9 wird nur für Windows bereitgestellt. Die projektspezifischen Entwicklungen werden unter der MIT-Lizenz verbreitet.

.NET beinhaltet eine Runtime mit dem JIT-Compiler RyuJIT, API-Spezifikationen, WPF-Bibliotheken, Windows Forms, WinUI und Entity Framework, die Befehlszeilenschnittstelle dotnet sowie Tools zur Entwicklung von Mikrodiensten, Bibliotheken sowie server-, grafischen und Konsolenanwendungen. Separat erhältlich ist der Stack für die Entwicklung von Web-Anwendungen ASP.NET Core 9.0, ORM-Schicht Entity Framework Core 9.0 (einschließlich Treiber für SQLite und PostgreSQL), die Bibliothek WPF 9 (Windows Presentation Foundation), das Framework Windows Forms 9 zur GUI-Entwicklung, die Plattform Aspire 9 zur Erstellung von Cloud Native-Anwendungen, das MAUI 9-Framework zur Entwicklung plattformübergreifender Benutzeroberflächen sowie die Releases der Sprachen C# 13 und F# 9. Die Unterstützung für .NET 9.0 und C# 13 ist im kostenlosen Code-Editor Visual Studio Code integriert.

Besonderheiten der neuen Version:

  • Es wurden über tausend Änderungen zur Optimierung der Leistung und zur Verbesserung der Qualität des generierten Codes vorgenommen. Der Garbage Collector wurde modernisiert, wobei ein Mechanismus zur dynamischen Anpassung an die Größe der Anwendung standardmäßig implementiert und aktiviert ist (der Garbage Collector richtet sich nicht nach dem Vorhandensein vorhandener Systemressourcen, sondern danach, wie viel Speicher die Anwendung benötigt). Der neue Modus ermöglicht eine höhere Effizienz auf Systemen mit einer großen Anzahl von Prozessorkernen, wenn die Anwendung relativ wenig Speicher verwendet oder wenn der Speicherbedarf während des Betriebs erheblich schwankt.

    Der JIT-Compiler hat neue Optimierungen auf Basis von Profiling (PGO) erhalten, die Verarbeitung von Schleifen, Inline-Entfaltung und Grenzprüfung wurden verbessert. Im .NET-Runtime wurde die Nutzung von Vektor-Anweisungen erweitert und die Unterstützung für Arm64 SVE und Intel AVX10 hinzugefügt. Der Code zur Verarbeitung von Ausnahmen wurde um 50 % beschleunigt. Bei Code mit Typumwandlungsoperationen wie „(IFoo)myFoo“ und „myFoo ist IFoo“ wurde eine Leistungssteigerung von bis zu 70 % festgestellt. Die Leistung einiger Methoden in der Abfragesprache LINQ (Language-Integrated Query) wie Take und DefaultIfEmpty hat sich bei der Arbeit mit leeren Arrays und Sammlungen um bis zu das 10-fache erhöht.

    Die Leistung und Effizienz der Methode System.Text.Json wurde erheblich verbessert. In der Methode JsonProperty.WriteTo wurde die Möglichkeit zur direkten Aufnahme von UTF8-Zeichenfolgen implementiert, die überflüssige Speicherallokationen ausschließt. Die Operationen zur Größenänderung von JsonObject wurden optimiert. Bei den TechEmpower-Tests, die die Effizienz des Codes zur Verarbeitung von JSON-Anfragen bewerten, zeigt sich im Vergleich zu .NET 8 eine Leistungssteigerung von 15 % und eine Reduzierung des Speicherverbrauchs um 93 %.

  • Im Runtime wurde ein neues Attributmodell vorgeschlagen, um die Funktionalität in Bibliotheken zu aktivieren und einzuschränken.
  • In C# 13 wurden die Möglichkeiten zur Verwendung des Modifikators „params“ erweitert, wobei jetzt auch Sammlungen neben Arrays angegeben werden dürfen. Bei der Initialisierung von Arrays ist die Verwendung des Operators „^“ zur Indizierung vom Ende des Arrays erlaubt (z. B. „buffer = { [^1] = 0, [^2] = 1,…}“ schreibt 0 in das letzte Element und 1 in das vorletzte). In Iteratoren und asynchronen Methoden ist die Verwendung von ref-Ausdrücken und unsafe erlaubt. Eine neue Escape-Sequenz „\e“ wurde hinzugefügt. Es ist erlaubt, Schnittstellen für „ref struct“-Typen zu definieren und „ref struct“-Typen als Argumente in generischen Funktionen zu verwenden. Ein neuer Typ Lock wurde für die Festlegung von Sperren in mehrschichtigen Anwendungen vorgeschlagen. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(„\e[1mItem: \e[0m“, items)); }
  • In der Sprache F# 9 gibt es nun Unterstützung für Typen, die den Wert null annehmen können. In den Vereinigungen wurden automatisch generierte Eigenschaften ".Is*" (zum Beispiel person.contact.IsEmail) implementiert, die zur Überprüfung der Zugehörigkeit eines Wertes zu einer Menge verwendet werden können. Unterstützung für leere berechnete Ausdrücke ("let xs = seq { }") wurde hinzugefügt. In Direktiven, die mit dem Zeichen "#" beginnen, ist die Angabe von nicht-stringbasierten Werten erlaubt (zum Beispiel kann man #nowarn 0070 anstelle von #nowarn "0070" schreiben). In die Module List, Array und Seq wurden Funktionen zum zufälligen Auswählen oder Mischen von Elementen hinzugefügt. Auf Listen (list und set) dürfen nun Sammlungsvorgänge angewendet werden.
  • Die Möglichkeiten des .NET Aspire-Stacks, der eine Vielzahl von Komponenten zur Erstellung von Anwendungen für Cloud-Umgebungen bereitstellt, wurden erweitert. Neue Funktionen zum Management von Ressourcen und Lebenszyklen von Anwendungen wurden hinzugefügt. Die Mittel zur Erfassung von Telemetriedaten wurden verbessert.
  • Ein neuer Satz von Abstraktionen für C# zur Entwicklung von KI-Anwendungen, zur Nutzung großer Sprachmodelle, zum Zugriff auf Vektordatenbanken und zur Interaktion mit KI-Diensten wurde vorgeschlagen. Ein neuer Typ "Tensor" und eine Sammlung von Methoden für Berechnungen und Manipulationen mit mehrdimensionalen Daten wurden präsentiert. Ergänzungen für KI werden in Form von Paketen wie System.Numerics.Tensors, Microsoft.Extensions.AI und Microsoft.Extensions.VectorData verbreitet. Das ML.NET-Framework, das für die Integration von Machine-Learning-Modellen in Anwendungen konzipiert ist, wurde aktualisiert. Eine Bibliothek Microsoft.ML.Tokenizers für das Kodieren und Dekodieren von Text in Tokens wurde hinzugefügt.
  • Im Stack zur Entwicklung von Webanwendungen ASP.NET Core wurde die Unterstützung für die vorab-Compilation (ahead-of-time) erweitert, sowie die Möglichkeiten zur Überwachung und Verfolgung, die Startzeit verkürzt und der Speicherverbrauch gesenkt. Die Arbeit mit statischen Dateien wurde optimiert. Ein neuer API für Authentifizierung und Autorisierung wurde hinzugefügt. In Blazor, der Plattform für die Erstellung von Webanwendungen in C#, wurden neue Vorlagen für hybride und Webanwendungen implementiert.
  • Die Möglichkeiten des MAUI-Frameworks zur Entwicklung plattformübergreifender Benutzeroberflächen wurden erweitert. Die Leistung wurde optimiert. Die Integration mit Desktop- und Mobilanwendungen wurde verstärkt. Neue UI-Elemente wie TitleBar und HybridWebView wurden hinzugefügt.
  • In WPF (Windows Presentation Foundation) wurde die Unterstützung für Design-Themen erweitert und die Unterstützung für Akzentfarben hinzugefügt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4