Microsoft ha presentado el lanzamiento de la plataforma abierta .NET 9, creada gracias a la unificación de los productos .NET Framework, .NET Core y Mono. Con .NET 9, se pueden desarrollar aplicaciones multiplataforma para navegadores, sistemas en la nube, escritorio, dispositivos IoT y plataformas móviles, utilizando bibliotecas unificadas y un proceso de construcción común, independiente del tipo de aplicación. Las compilaciones de .NET SDK 9, .NET Runtime 9 y ASP.NET Core Runtime 9 están formadas para Linux, macOS y Windows. .NET Desktop Runtime 9 se suministra solo para Windows. Los desarrollos asociados al proyecto se distribuyen bajo licencia MIT.
El .NET incluye Runtime con el compilador JIT RyuJIT, especificaciones de API, bibliotecas WPF, Windows Forms, WinUI y Entity Framework, la interfaz de línea de comandos dotnet, así como herramientas para el desarrollo de microservicios, bibliotecas, aplicaciones de servidor, gráficas y de consola. Por separado se ofrece el stack para el desarrollo de aplicaciones web ASP.NET Core 9.0, la capa ORM Entity Framework Core 9.0 (con controladores disponibles, incluyendo para SQLite y PostgreSQL), la biblioteca WPF 9 (Windows Presentation Foundation), el marco Windows Forms 9 para el desarrollo de GUI, la plataforma Aspire 9 para crear aplicaciones Cloud Native, el marco MAUI 9 para el desarrollo de interfaces de usuario multiplataforma, así como las versiones de los lenguajes C# 13 y F# 9. El soporte para .NET 9.0 y C# 13 está incluido en el editor de código gratuito Visual Studio Code.
Características de la nueva versión:
- Se han realizado más de mil cambios relacionados con la optimización del rendimiento y la mejora de la calidad del código generado. Se ha modernizado el recolector de basura, que ahora implementa y utiliza por defecto un mecanismo de adaptación dinámica al tamaño de la aplicación (el recolector de basura se ajusta no a la disponibilidad de recursos del sistema, sino a cuánta memoria requiere la aplicación). El nuevo modo permite aumentar la eficiencia en sistemas con un gran número de núcleos de procesador si la aplicación utiliza relativamente poca memoria o si la necesidad de memoria cambia significativamente durante su ejecución.
Se han añadido nuevas optimizaciones basadas en perfilado (PGO) al compilador JIT, mejorando el manejo de bucles, el desdoblamiento en línea y la verificación de límites. En el runtime de .NET, se ha expandido el uso de instrucciones vectoriales y se ha añadido soporte para las extensiones Arm64 SVE e Intel AVX10. El código para el manejo de excepciones se ha acelerado en un 50%. Para el código con operaciones de conversión de tipos, como «(IFoo)myFoo» y «myFoo is IFoo», se ha registrado un aumento del rendimiento de hasta el 70%. El rendimiento de ciertos métodos en el lenguaje de consulta integrado LINQ, como Take y DefaultIfEmpty, ha aumentado hasta 10 veces al trabajar con arreglos y colecciones vacías.
Se ha mejorado significativamente el rendimiento y la eficiencia del método System.Text.Json. En el método JsonProperty.WriteTo se ha implementado la capacidad de escritura directa de cadenas UTF8, eliminando la asignación de memoria innecesaria. Se han optimizado las operaciones de redimensionamiento de JsonObject. En las pruebas de TechEmpower, que evalúan la eficacia del código para el procesamiento de solicitudes JSON, se ha observado un aumento del rendimiento del 15% y una reducción del consumo de memoria del 93% en comparación con .NET 8.
- El runtime ha propuesto un nuevo modelo de atributos para activar y recortar funcionalidades en bibliotecas.
- En el lenguaje C# 13, se han ampliado las capacidades del modificador «params», permitiendo no solo arreglos, sino también colecciones. Al inicializar arreglos, se permite el uso del operador «^» para contar desde el final del arreglo (por ejemplo, «buffer = { [^1] = 0, [^2] = 1,….}» escribirá 0 en el último elemento y 1 en el penúltimo). En iteradores y métodos async, se permite el uso de expresiones ref y unsafe. Se ha añadido una nueva secuencia de escape «\e». Se permite la definición de interfaces para tipos «ref struct» y el uso de tipos «ref struct» como argumentos en funciones genéricas. Se ha propuesto un nuevo tipo Lock para establecer bloqueos en aplicaciones multihilo. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(«\e[1mItem: \e[0m», items)); }
- En el lenguaje F# 9, se introdujo soporte para tipos que pueden tener valores nulos. En las uniones, se implementaron propiedades generadas automáticamente como «.Is*» (por ejemplo, person.contact.IsEmail), que se pueden utilizar para verificar si un valor pertenece a un conjunto. Se añadió soporte para expresiones calculadas vacías («let xs = seq { }»). En las directivas que comienzan con el símbolo «#», ahora se permiten valores no string (por ejemplo, se puede escribir #nowarn 0070 en lugar de #nowarn «0070»). En los módulos List, Array y Seq se agregaron funciones para seleccionar aleatoriamente o mezclar elementos. Se permite aplicar operaciones de colección a listas (list) y conjuntos (set).
- Se han ampliado las capacidades de la pila .NET Aspire, que proporciona un conjunto de componentes para crear aplicaciones que se ejecutan en entornos en la nube. Se han añadido nuevas funcionalidades para gestionar recursos y el ciclo de vida de las aplicaciones. Los medios para recoger telemetría también han sido mejorados.
- Se ha propuesto un nuevo conjunto de abstracciones en C# para el desarrollo de aplicaciones de IA, el uso de modelos de lenguaje grandes, la consulta de almacenes vectoriales y la interacción con servicios de IA. Se presentó un nuevo tipo «Tensor» y una colección de métodos para cálculos y manipulación de datos multidimensionales. Las extensiones para IA se distribuyen en forma de paquetes System.Numerics.Tensors, Microsoft.Extensions.AI y Microsoft.Extensions.VectorData. Se ha actualizado el marco de trabajo ML.NET para integrar modelos de aprendizaje automático en aplicaciones. Se ha añadido la biblioteca Microsoft.ML.Tokenizers para la codificación y decodificación de texto en tokens.
- En la pila para el desarrollo de aplicaciones web ASP.NET Core, se ha ampliado el soporte para la compilación anticipada (ahead-of-time), se han ampliado las capacidades de monitoreo y trazado, se ha reducido el tiempo de inicio y el consumo de memoria, y se ha optimizado el manejo de archivos estáticos. Se añadió una nueva API para autenticación y autorización. En Blazor, la plataforma para crear aplicaciones web en C#, se implementaron nuevas plantillas para aplicaciones híbridas y web.
- Se han ampliado las capacidades del marco MAUI para el desarrollo de interfaces de usuario multiplataforma. Se ha realizado una optimización del rendimiento. Se ha reforzado la integración con aplicaciones de escritorio y móviles. Se han añadido nuevos elementos de interfaz como TitleBar y HybridWebView.
- En WPF (Windows Presentation Foundation) se ha ampliado el soporte para temas y se ha añadido el soporte para colores acentuados.
Fuente: opennet.ru
