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.
- Instaladores y binarios
- Imágenes de contenedores
- Paquetes de Linux
- Notas
- API diff
- Problemas conocidos
- Rastreador de problemas de GitHub
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.
- Instaladores compatibles en paralelo
- Segmentación de arquitectura de primera clase con la CLI de .NET para habilitar (principalmente) el uso del SDK de arquitectura nativa en todos los escenarios.
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.