Microsoft dio a conocer el lanzamiento de la nueva version de «.NET 9» una plataforma abierta que unifica los productos previamente separados como .NET Framework, .NET Core y Mono. NET 9.0 introduce una serie de mejoras en el rendimiento, optimización en el compilador, mejoras en el runtime, entre otras cosas más.
Uno de los cambios más importantes de .NET 9.0 es la modernización del recolector de basura, que ahora implementa un mecanismo de adaptación dinámica al tamaño de la aplicación. Esto significa que el recolector no está ligado a la cantidad de recursos disponibles en el sistema, sino a la cantidad de memoria que la aplicación necesita.
Además, se han realizado optimizaciones en el compilador JIT, con la incorporación de nuevas optimizaciones basadas en perfiles (PGO), mejoras en el manejo de bucles y desenrollado en línea, y una optimización en el manejo de excepciones que incrementa la velocidad en un 50%. El código con operadores de transmisión ha experimentado mejoras de rendimiento de hasta un 70% y también se han realizado mejoras en el rendimiento de consultas LINQ, especialmente en los métodos Take y DefaultIfEmpty cuando se trabajan con matrices y colecciones vacías, logrando mejoras de hasta 10 veces en algunos casos.
En cuanto a la biblioteca System.Text.Json, se ha mejorado notablemente el rendimiento y la eficiencia. El método JsonProperty.WriteTo ahora es capaz de escribir cadenas UTF8 directamente, eliminando la asignación innecesaria de memoria, lo que resulta en una mejora del 15% en el rendimiento y una reducción del 93% en el consumo de memoria en pruebas comparativas con .NET 8.
El Runtime también introduce un nuevo modelo de atributos que permite activar y desactivar funciones en bibliotecas de manera más eficiente. En el lenguaje C# 13, se han ampliado las capacidades del modificador «params», permitiendo no solo el uso de arrays, sino también colecciones.
También se introdujo un operador «^» para especificar índices desde el final de una matriz, lo que facilita la manipulación de arrays. Además, se permiten iteradores y métodos asíncronos que pueden utilizar expresiones ref y no seguras. Por último, se ha propuesto un nuevo tipo de bloqueo para mejorar el manejo de aplicaciones multiproceso.
La versión F# 9 ha el soporte para tipos que pueden aceptar valores nulos, lo que amplía las capacidades del lenguaje. Además, las uniones ahora implementan propiedades «.Is*» generadas automáticamente, lo que facilita la comprobación de si un valor pertenece a un conjunto específico. Por ejemplo, con las uniones, se pueden verificar valores como person.contact.IsEmail.
En las directivas que comienzan con el símbolo #, se ahora permiten valores que no sean cadenas. También se ha añadido la capacidad de seleccionar o mezclar elementos aleatoriamente en módulos como List, Array y Seq. Las operaciones de recopilación también se han mejorado, permitiendo más facilidades para trabajar con listas y conjuntos.
Por otro lado, la pila .NET Aspire ahora ofrece un conjunto más robusto de componentes para la creación de aplicaciones en entornos de nube. Esto incluye nuevas capacidades para gestionar el ciclo de vida de aplicaciones y recursos, además de mejoras en las herramientas de recopilación de telemetría.
En cuanto a C#, se ha propuesto un conjunto de nuevas abstracciones para facilitar el desarrollo de aplicaciones de inteligencia artificial. Estas abstracciones incluyen el uso de grandes modelos de lenguaje, el acceso a almacenes de vectores e interacciones con servicios de IA.
Ademas se ha introducido un nuevo tipo Tensor<T> y métodos para calcular y manipular datos multidimensionales, junto con complementos. La actualización de ML.NET también incluye mejoras, con la nueva biblioteca Microsoft.ML.Tokenizers para codificar y decodificar texto en tokens.
Para el desarrollo web, ASP.NET Core ha mejorado su soporte en la compilación, ofreciendo un mejor rendimiento, un menor consumo de memoria y tiempos de inicio más rápidos. Se ha optimizado también el trabajo con archivos estáticos, además de incluir una nueva API para autenticación y autorización. Blazor, la plataforma para crear aplicaciones web con C#, ha lanzado nuevas plantillas tanto para aplicaciones web como híbridas, ampliando las posibilidades para los desarrolladores.
MAUI (Multi-platform App UI) ha mejorado el rendimiento y la integración con aplicaciones de escritorio y móviles. Nuevos elementos de interfaz como TitleBar y HybridWebView han sido añadidos, facilitando aún más la creación de aplicaciones de usuario interactivas.
Por último, WPF (Windows Presentation Foundation) ha aumentado su compatibilidad con temas, añadiendo soporte para colores de acento, lo que permite a los desarrolladores personalizar aún más la apariencia de sus aplicaciones de Windows.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.