0

.Net 6 Preview 6

El 14 de julio se anunció  la vista previa 6. Esta es la penúltima vista previa antes de que lleguen los RC. Habrá dos RC. Esta versión en sí es relativamente pequeña. Después de eso, el siguiente preview, el equipo se ocupará de las correcciones de calidad hasta el lanzamiento final en noviembre. 

‎Puede ‎‎descargar .NET 6 Preview 6‎‎ para Linux, macOS y Windows.‎

Actualización de emulación x64‎

Se finalizó de implementar soporte para Apple Silicon para macOS y Arm64 para Windows. Lo que queda es ‎‎compatible con la emulación x64‎‎ en ‎‎macOS Apple Silicon‎‎ y ‎‎Windows Arm64‎‎. Hay que hacer dos cosas para permitir eso.‎

En un futuro existirán instaladores compatibles en paralelo disponibles (más adelante en .NET 6), por ahora, debemos instalar todas las compilaciones x64 o todas las de arm64. Si deseamos cambiar, debemos desinstalar/eliminar todas las versiones de .NET en la máquina Arm64. 

‎Herramientas: Mejoras en la carga de trabajo opcional del SDK de .NET‎

Se han agregado tres nuevos comandos ‎‎de carga de trabajo‎‎ que permiten un mejor uso y administración.‎

  • dotnet workload search‎ — enumerar las cargas de trabajo disponibles para instalar.‎
  • dotnet workload uninstall‎ : elimina la carga de trabajo especificada si ya no necesita una carga de trabajo. También es una buena opción para ahorrar espacio.‎
  • dotnet workload repair‎ : vuelva a instalar todas las cargas de trabajo que haya instalado anteriormente. ‎
    • ‎Esto es útil si la instalación falla en el medio debido a una conexión a Internet caída.‎
    • ‎Las cargas de trabajo opcionales se componen de varios paquetes de cargas de trabajo y es posible que haya llegado a un estado en el que algunos se instalaron correctamente pero otros no.‎

‎En vistas previas anteriores, agregamos los siguientes comandos:‎

  • dotnet workload install‎ — instala una carga de trabajo.‎
  • dotnet workload list‎ — enumera las cargas de trabajo instaladas.‎
  • dotnet workload update‎ — actualiza las cargas de trabajo instaladas.‎

‎Bibliotecas: compatibilidad con TLS para ‎System.DirectoryServices.Protocols

‎Se ha habilitado la compatibilidad con TLS‎‎ para ‎‎system‎‎.‎‎ ‎‎DirectoryServices‎‎.‎‎ ‎‎Protocolos‎‎ para Linux y macOS. Ya estaba habilitado para Windows. Los usuarios de .NET ahora podemos disfrutar de comunicaciones seguras con servidores LDAP.‎

‎Herramientas: Crossgen2 reemplaza a crossgen‎

‎Crossgen2‎‎ se ha habilitado para todos los escenarios de crossgen existentes. Se ha eliminado (el viejo) crossgen del SDK. Ya no es accesible y no se puede utilizar.‎

‎Crossgen (1 y 2) permite la precompilación de IL en código nativo como pasó de publicación. La pre-compilación es principalmente beneficiosa para mejorar el inicio. Crossgen2 es una implementación desde cero que está demostrando ser una plataforma superior para la innovación en la generación de código. Por ejemplo, crossgen2 puede generar código para un conjunto más amplio de patrones il que crossgen1.‎

‎Las siguientes propiedades de MSBuild muestran cómo habilitar la compilación previa con crossgen2.‎

   <!-- Enable pre-compiling native code (in ready-to-run format) with crossgen2 -->
      <PublishReadyToRun>true</PublishReadyToRun> 
      <!-- Enable generating a composite R2R image -->
      <PublishReadyToRunComposite>true</PublishReadyToRunComposite>

‎Bibliotecas: rendimiento mejorado de sincronización sobre sincronización‎

‎Sync-over-async‎‎ es un tipo común de trabajo de bloqueo. Puede provocar inanición cuando ocurre en los subprocesos de trabajo del grupo de subprocesos. La inyección lenta de subprocesos puede retrasar la ejecución de otros trabajos en cola y puede retrasar la inanición.‎

‎Este ‎‎cambio‎‎ mejoró la velocidad de inyección de subprocesos de forma predeterminada cuando la sincronización sobre asincrónica es el único tipo de trabajo de bloqueo que se realiza en los subprocesos de trabajo del grupo de subprocesos. Hay algunos ‎‎nuevos valores de configuración de ‎‎AppContext‎‎ que se pueden usar para configurar la velocidad de inyección de subprocesos en respuesta a la sincronización sobre asincrónica.‎

‎Tiempo de ejecución: directiva de memoria W^X‎

Se habilitó el soporte‎‎ para ‎‎la protección de memoria W^X‎‎. Es un requisito en las máquinas Apple Silicon y una medida de seguridad útil en otros sistemas operativos.‎

‎Esta característica tiene un nombre anormal. Debe leerse como «escribir ejecución exclusiva». Eso significa que una página de memoria se puede marcar para leer/escribir o leer/ejecutar, pero nunca cualquier combinación que incluya escritura y ejecución. Por ejemplo, las páginas de escritura/ejecución están sujetas a ser explotadas con ataques de desbordamiento de búfer.‎

‎Esta característica requiere cambios en todo el producto, dondequiera que se utilicen páginas de escritura/ejecución. Por ejemplo, la vista previa 6 incluye un cambio que requiere que el ‎‎JIT coopere con el esquema W^X que hemos adoptado‎‎.‎

‎W^X es un requisito de macOS en las máquinas Apple Silicon, opcional en todos los demás entornos para .NET 6 y probablemente será el modo predeterminado en todos los entornos para .NET 7.‎

‎Registro de cambios de CodeGen‎

‎Los siguientes cambios de codegen se incluyen en la vista previa 6.‎

‎PGO dinámico‎

  • ‎Agregar opción para elegir la clase devirt protegida al azar ver
  • ‎mejoras diagnósticas de pgo/devirt ver

LSRA

  • ‎Refactorizar la selección de heurísticas ‎‎de LSRA‎‎ ver
    • ‎Ahora, el modo DEBUG incluye una variable COMPlus que LsraOrdering permitirá al usuario establecer el orden heurístico.‎
    • ‎Ajuste la heurística para el registro para seleccionar el candidato óptimo de registro para derramar. ver

‎Las siguientes mejoras se basan en estos cambios.‎

‎Más mejoras:‎

‎Calidad del código‎

  • ‎Elimine las instrucciones redundantes de «prueba» ver

‎Cierre‎

Cada día estamos más cerca de la versión final de .Net 6. El equipo comenta que en la preview 7 tendremos una gran cantidad de cambios antes de ingresar a las versiones RC, así que no nos mate la ansiedad.

Fernando Sonego

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *