.NET 7 ya fue liberado y llega con diversas mejoras de rendimiento
Microsoft dio a conocer el lanzamiento de la nueva versión de su plataforma «.NET 7» que incluye Runtime con el compilador RyuJIT JIT, especificaciones API, bibliotecas WPF y demás herramientas.
Ademas, tambien y por separado se han publicado las aplicaciones web ASP.NET Core 7.0, la capa ORM de Entity Framework Core 7.0, la biblioteca WPF 7 (Windows Presentation Foundation), el marco de Windows Forms 7 para GUI de desarrollo, plataforma Orleans.
Principales novedades de .NET 7
En esta nueva versión la biblioteca de clases base (BCL, Base Class Library) se ha unificado para su uso en varios tipos de aplicaciones, incluidos programas para sistemas de escritorio, aplicaciones web, plataformas en la nube, aplicaciones móviles, juegos, programas integrados y sistemas de aprendizaje automático. Puede usar un SDK, Runtime y un conjunto de bibliotecas comunes para desarrollar diferentes tipos de aplicaciones.
Ademas de ello, tambien se destaca que se proporcionó la capacidad de vincular una aplicación a una API compatible con la versión .NET 7 a través de una definición de marco de destino «net7.0», como «<TargetFramework>net7.0</TargetFramework>». Para enlazar a las API específicas de la plataforma, puede especificar el tipo de plataforma al especificar el destino, por ejemplo, especificando «net7.0-android».
Tambien se destaca la compatibilidad mejorada para la arquitectura ARM64 y trabajo continuo para lograr la paridad en el rendimiento de las aplicaciones .NET cuando se ejecutan en arquitecturas x86 y ARM64. Eficiencia de caché L3 mejorada en tiempo de ejecución en sistemas ARM64. Las instrucciones LSE se utilizan para delimitar el acceso a la memoria de subprocesos paralelos, lo que da como resultado una reducción del 45 % en la latencia.
La biblioteca agregó controladores que usan los tipos de vectores Vector64, Vector128 y Vector256, y las funciones EncodeToUtf8 y DecodeFromUtf8 se reescribieron en función de las instrucciones vectoriales, lo que aumentó su rendimiento hasta en un 60% (para las funciones NarrowUtf16ToAscii y GetIndexOfFirstNonAsciiChar, la ganancia de rendimiento alcanza 35%). En general, la velocidad de aprobación de las pruebas en la plataforma ARM64 aumentó entre un 10 y un 60 %.
Por otra parte, tambien se destacan las mejoras de soporte para Linux, incluida la adición de paquetes con .NET 6 a los repositorios de stock de Ubuntu 22.04 y la provisión de una imagen acoplable optimizada, compacta y lista para usar para implementar rápidamente contenedores con aplicaciones basadas en .NET.
Se presentó .NET Upgrade Assistant para facilitar la migración de aplicaciones antiguas a ramas .NET 6 o .NET 7. La nueva versión ha ampliado el soporte para migrar aplicaciones de ASP.NET a ASP.NET Core, agregando analizadores y correctores de código para WinForms, WPF y bibliotecas de clases, soporte implementado para el análisis de archivos ejecutables, soporte agregado para UWP (Universal Windows Platform).
Se proponen interfaces genéricas para funciones matemáticas y se brinda la posibilidad de definir elementos estáticos en interfaces virtuales, lo que permitió aplicar métodos de programación genéricos para realizar operaciones matemáticas sin información exacta sobre el tipo de valores.
El rendimiento en el compilador JIT tambien fue mejorado, ademas de que se agregó soporte para el mecanismo OSR (On Stack Replacement) para cambiar el código de los métodos que ya se están ejecutando, lo que le permite realizar optimizaciones en los métodos que tardan mucho tiempo en completarse sin esperar a que se complete la llamada actual (en la prueba TechEmpower, hay es un aumento del 10-30% en el rendimiento del procesamiento de las primeras solicitudes en un 10-30%).
De los demás cambios que se destacan:
- Se agregó soporte para compilar en ejecutables autónomos (AOT nativo), en el que todo el proyecto se compila inicialmente en código de plataforma de destino nativo sin usar código intermedio y sin usar JIT.
- SDK de .NET implementa la capacidad de restringir el uso de las plantillas de proyecto proporcionadas; por ejemplo, puede determinar en qué sistemas operativos es válida la plantilla.
- NuGet ha agregado un modo de administración de paquetes centralizado que le permite administrar dependencias para varios proyectos a la vez.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Para los interesados, deben saber que las compilaciones de .NET SDK 7, .NET Runtime 7 y ASP.NET Core Runtime 7 están creados para Linux, macOS y Windows. .NET Desktop Runtime 6 solo está disponible para Windows.