Microsoft ha presentato il rilascio della piattaforma aperta .NET 11, creata grazie all'unificazione dei prodotti .NET Framework, .NET Core e Mono. Con .NET 11 è possibile sviluppare applicazioni multipiattaforma per browser, sistemi cloud, desktop, dispositivi IoT e piattaforme mobili, utilizzando librerie unificate e un processo di build comune, indipendentemente dal tipo di applicazione. I pacchetti .NET SDK 11, .NET Runtime 11 e ASP.NET Core Runtime 11 sono disponibili per Linux, macOS e Windows. .NET Desktop Runtime 11 è fornito solo per Windows. I materiali associati al progetto sono distribuiti con licenza MIT.
La piattaforma .NET include il Runtime con il compilatore JIT RyuJIT, specifiche API, librerie WPF, Windows Forms, WinUI e Entity Framework, interfaccia a linea di comando dotnet, così come strumenti per lo sviluppo di microservizi, librerie, applicazioni server, grafiche e console. È disponibile separatamente il stack per lo sviluppo di applicazioni web ASP.NET Core 11.0, un ORM chiamato Entity Framework Core 11.0 (con driver disponibili, incluso SQLite e PostgreSQL), la libreria WPF 11 (Windows Presentation Foundation), il framework Windows Forms 11 per lo sviluppo di GUI, la piattaforma Aspire 11 per la creazione di applicazioni Cloud Native e il framework MAUI 11 per lo sviluppo di interfacce utente multipiattaforma, oltre alle versioni dei linguaggi C# 15 e F# 11. È inclusa la supporto per .NET 11.0 e C# 15 nell'editor di codice gratuito Visual Studio Code.
Nel linguaggio C# 15 è stata aggiunta la parola chiave union per dichiarare un tipo il cui valore può essere solo uno dei tipi variant precedentemente specificati. È possibile assegnare a una variabile di tipo union un valore di uno qualsiasi dei tipi consentiti e, se si tenta di assegnare un valore di un tipo non specificato durante la dichiarazione, il compilatore restituirà un errore.
Caratteristiche della nuova versione:
- public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);
public union Pet(Cat, Dog, Bird);Per le classi è stato proposto un modificatore «closed», tramite il quale è possibile creare gerarchie chiuse (closed hierarchy), in cui l'ereditarietà dalla classe base con modificatore closed è consentita solo all'interno di quell'assembly, dove è dichiarata e dove è noto durante la fase di compilazione l'insieme completo degli eredi diretti. I tipi union e le gerarchie chiuse garantiscono che nel costrutto switch siano trattate tutte le varianti possibili, permettendo di evitare il ramo «default» e la variabile «_».
Для классов предложен модификатор «closed», при помощи которого можно создавать закрытые иерархии (closed hierarchy), в которых наследование от базового класса с модификатором closed допускается только внутри той сборки, где он объявлен и на этапе компиляции известен полный набор прямых потомков. Union-типы и закрытые иерархии гарантируют, что в конструкции switch обработаны все возможные варианты, что позволяет обойтись без ветки «default» и переменной «_».
Nella nuova versione di C# è stata aggiunta anche la supporto per il passaggio delle espressioni «break» e «continue» a etichette specificate e sono state ampliate le funzionalità sperimentali per l'isolamento nei blocchi di codice unsafe, che operano direttamente con la memoria (è stata aggiunta la possibilità di applicare unsafe a singole espressioni).
- Nel linguaggio F# 11 è stato ridotto il consumo di memoria del compilatore e diminuito il numero di operazioni di allocazione di memoria durante il lavoro con le collezioni FSharp.Core. È stata aggiunta la possibilità di limitare il numero di lavori asincroni eseguiti in parallelo per evitare sovraccarichi. È stato aggiunto il supporto preliminare per Runtime Async.
- Nel SDK è incluso di default server MSBuild e la versione precompilata (NativeAOT) degli strumenti CLI dotnet.
È stata ridotta la dimensione degli installer SDK per Linux e macOS grazie alla deduplicazione delle librerie. - È stata ottimizzata la compilazione JIT, rimosse le verifiche di confine e di diramazione ridondanti, migliorata la devirtualizzazione e ampliata l'unione delle operazioni in costanti. Nel compilatore AOT è stato utilizzato un gestore delle chiamate comune, che ha permesso di ridurre il volume di codice e aumentare la capacità nei casi di accesso intensivo alle interfacce. Per Linux e macOS è stata implementata la registrazione della traccia dello stack e delle informazioni sui moduli in caso di errori.
- È stato aggiunto un meccanismo sperimentale Runtime Async per sostituire il codice generato dal compilatore per la gestione delle operazioni async con un'implementazione che gestisce la sospensione e il ripristino delle operazioni asincrone a livello di runtime.
- Nel SDK è stato aggiunto un modello server MCP per l'integrazione con strumenti e servizi AI. Per le applicazioni che utilizzano servizi AI, è stato aggiunto un insieme di astrazioni Microsoft.Extensions.AI (MEAI). Sulla base di queste astrazioni è stato formato
Microsoft Agent Framework (MAF), che può essere utilizzato per la creazione di agenti AI. - Nell'API Process sono state ampliate le funzionalità di avvio dei processi con l'intercettazione della loro uscita e dei codici di stato, nonché il controllo sui descrittori ereditati.
- Nell'API System.IO.Compression è stato aggiunto il supporto per l'algoritmo di compressione Zstandard.
- Sono stati aggiunti nuovi adattatori di flusso ReadOnlyMemoryStream, WritableMemoryStream, ReadOnlySequenceStream e StringStream.
- È stata aggiunta l'utility dotnetup per l'installazione e l'aggiornamento di SDK e runtime.
Fonte: opennet.ru
