Esta semana se ha lanzado la versión .Net 5 Preview 2. Si bien por el momento no tiene grandes actualizaciones tiene un gran conjunto de pequeñas características y mejoras de rendimiento.
El equipo de .Net sigue trabajando en las características más importantes que definirán la versión 5.0, algunas de estas están empezando a aparecer como diseños iniciales del framework. En el preview anterior, se cubrió todo lo que está en el roadmap y que se está implementando para la versión final.
Podemos descargar la versión preview desde este link, tanto para windows, macOS o Linux. Otras descargas que útiles:
Necesitaremos usar Visual Studio 2019 16.6 para usar .NET 5.0. Deberemos instalar la última versión de la extensión C # para usar .NET 5.0 con Visual Studio Code. Visual Studio para Mac aún no es compatible.
Puedes encontrar toda la información del lanzamiento en estos links:
Mejoras en la calidad del código en RyuJIT
Cada lanzamiento, hasta la versión release, se incluirán mejoras y cambios en el código de máquina que genera el JIT (a esto lo llamamos «calidad de código»). Una mejor calidad de código significa un mejor rendimiento. En resumen, aproximadamente la mitad de las siguientes mejoras son nuevas optimizaciones reales y la otra mitad se debe a cambiar el flujo de RyuJIT para permitir que las optimizaciones existentes se apliquen a más patrones de código.
- Use xmm para el prólogo de pila – dotnet / runtime # 32538 – Cambie al código de puesta a cero del prólogo x86 / x64. Mejoras: Json ; TechEmpower . Crédito: Ben Adams .
- Agregue soporte de numeración de valor para los nodos de árbol GT_SIMD y GT_HWINTRINSIC – dotnet / runtime # 31834 – Habilite el optimizador para SIMD y tipos intrínsecos de hardware.
- Utilice GT_NULLCHECK para indirecciones no consumidas – dotnet / runtime # 32641 – Elimine las comprobaciones nulas redundantes.
- invocar optimizaciones de cuadro que aceptan valores NULL antes – dotnet / runtime # 32269 – Mejorar optimizaciones para .Nullable<T>
- Optimice las verificaciones de rango para varios patrones de índice de matriz – dotnet / runtime # 1644 – Mejora en la eliminación de verificación de rango.
- Optimizar para clases selladas – dotnet / runtime # 32790obj.GetType() != typeof(X) – Mejora en la expresión de verificación de tipos
- Elimine las inicializaciones de cero duplicadas de forma más agresiva – dotnet / runtime # 31960 – Un enfoque mejor y más amplio para eliminar las inicializaciones de cero duplicadas.
- Método de corrección y marcadores de bloque básicos utilizados por las primeras opciones: dotnet / runtime # 2196 : permite que ciertas optimizaciones se utilicen con más frecuencia. Por ejemplo, reemplazar la longitud de la matriz con una constante ahora ocurre con mucha más frecuencia.
Si estás interesado en este estilo de mejoras o eres un usuario de ARM64, es posible que te interese Vectorise BitArray para ARM64. Este cambio demuestra un gran enfoque en ARM64 en .NET 5.0.
Recolector de basura
- Card mark stealing – dotnet/coreclr #25986 – El servidor GC (en diferentes subprocesos) ahora puede robar el trabajo mientras marca los objetos gen0 / 1 mantenidos en vivo por objetos de generaciones anteriores. Esto significa que las pausas de GC efímeras son más breves para escenarios en los que algunos subprocesos de GC tardaron mucho más en marcarse que otros.
- Introducing Pinned Object Heap – dotnet/runtime #32283 (dotnet / runtime # 32283) : parte implementada de la función POH (montón de objetos anclados), la parte interna de GC. Este nuevo montón (esencialmente un par de LOH) permitirá al GC administrar los objetos anclados por separado y, como resultado, evitará los efectos negativos de los objetos anclados en los montones generacionales.
- Allow allocating large object from free list while background sweeping SOH – dotnet/runtime #2103 – Habilitado asignaciones de LOH usando la lista libre mientras BGC está barriendo SOH. Anteriormente, esto solo usaba el espacio del final del segmento en LOH. Esto permitió un mejor uso del montón.
- Background GC suspension fixes – dotnet/coreclr #27729 – Correcciones de suspensión para reducir el tiempo de suspensión de los hilos de BGC y de usuario. Esto reduce el tiempo total que se tarda en suspender los subprocesos administrados antes de que se produzca un GC. dotnet / coreclr # 27578 también contribuye al mismo resultado.
- Fix named cgroup handling in docker – dotnet/runtime #980 – Se agregó soporte para leer límites de cgroups con nombre. Anteriormente solo leíamos del global.
ASP.NET Core en .NET 5 Preview 2
No hubo muchos cambios y no se incluyen nuevas características por el momento. Podemos hacer algunos ajustes para actualizar la preview 1 a las versión preview 2 existente.
Actualizar un proyecto existente
Para actualizar una aplicación ASP.NET Core 5.0 Preview1 existente a ASP.NET Core 5.0 Preview2:
- Actualizar toda Microsoft.AspNetCore. * Paquete de referencias 5.0.0-preview.2.20167.3.
- Actualizar todos Microsoft.Extensions. * Paquete de referencias 5.0.0-preview.2.20160.3.
Podemos consultar la lista completa de cambios desde este link.
Conclusión
Por el momento no hemos tenido cambios, tampoco noticias sobre entity framework. Seguramente tendremos muchas novedades en el futuro. No te pierdas la lista de post. Haremos un seguimiento exhaustivo.