NOTICIAS DEL SECTOR

LeadByExample() : Jakub Chodounsky habla sobre ingeniería pragmática, la mentalidad YOLO y por qué las mejores prácticas no siempre son las mejores

La cuarta vista previa de .NET 11 ahora está disponible, y trae varios cambios que afectan materialmente tanto a los autores de bibliotecas como a los equipos que operan servicios .NET en producción. En Iron Software, mantenemos un portafolio de bibliotecas .NET, lo que significa que cada lanzamiento de vista previa nos provoca dos evaluaciones: qué cambia para nosotros como mantenedores, y qué cambia para los clientes que integran estas bibliotecas en sus aplicaciones. Los siguientes son los cambios en la Vista Previa 4 que consideramos más trascendentales.

API de Proceso: la actualización más significativa en años

System.Diagnostics.Process recibe su primera actualización sustantiva en varios ciclos de lanzamiento, y aborda precisamente los puntos de dolor que los autores de bibliotecas han estado afrontando durante años. Esto es directamente relevante para nuestro trabajo. IronPDF envuelve un proceso de renderizado de Chromium internamente, lo que significa que nuestro equipo ha construido y mantenido soluciones personalizadas a través del mismo área de superficie que Microsoft ahora ha estandarizado: generación de procesos, captura de salida libre de bloqueo, administración de vida útil multiplataforma y comportamiento de terminación confiable.

La nueva superficie API se lee como un catálogo de problemas que los equipos de bibliotecas han eludido durante años:

// One-line execution with no deadlock risk
string output = await Process.RunAndCaptureTextAsync("git", ["log", "-5"]);

// Cross-platform parent-exit behavior
var psi = new ProcessStartInfo("renderer.exe")
{
    KillOnParentExit = true,
};
// One-line execution with no deadlock risk
string output = await Process.RunAndCaptureTextAsync("git", ["log", "-5"]);

// Cross-platform parent-exit behavior
var psi = new ProcessStartInfo("renderer.exe")
{
    KillOnParentExit = true,
};
Imports System.Diagnostics
Imports System.Threading.Tasks

' One-line execution with no deadlock risk
Dim output As String = Await Process.RunAndCaptureTextAsync("git", {"log", "-5"})

' Cross-platform parent-exit behavior
Dim psi As New ProcessStartInfo("renderer.exe") With {
    .KillOnParentExit = True
}
$vbLabelText   $csharpLabel

RunAndCaptureTextAsync multiplexa stdout y stderr para eliminar bloqueos de buffer de tubería. KillOnParentExit y StartDetached proporcionan control multiplataforma sobre la vida útil del proceso hijo en Windows y Linux. InheritedHandles permite la especificación explícita de qué handles hereda un proceso hijo, reemplazando el histórico estándar de amplias herencias. La superficie ligera de SafeProcessHandle produce binarios NativeAOT hasta un 20% más pequeños que la API estándar.

Para cualquier equipo que construya aplicaciones .NET que orquesten procesos secundarios, esta sección de las notas de lanzamiento merece una revisión cuidadosa.

Para equipos que prefieren no construir y mantener esta infraestructura internamente, IronPDF proporciona implementaciones probadas en producción de estos patrones fuera de la caja: captura de salida libre de bloqueo, control de vida útil, y manejo confiable de fallas. Inicia una prueba gratuita de la Iron Suite, no se requiere tarjeta de crédito.

APIs de Deflate, ZLib y GZip basadas en Span

Este cambio es menos prominente en las notas de lanzamiento, pero mejora materialmente cualquier carga de trabajo que procese datos comprimidos. Los documentos PDF contienen flujos de contenido comprimidos. Los archivos XLSX son archivos ZIP de XML comprimido. DOCX sigue el mismo patrón. Los nuevos APIs de codificador y decodificador basados en span reducen las asignaciones en precisamente las operaciones que bibliotecas como IronPDF y IronXL realizan continuamente.

Estas son mejoras a nivel de infraestructura que rara vez son titulares de lanzamiento, pero reducen el costo de cada byte procesado a través del marco.

Runtime Async, ahora compilado en las bibliotecas del marco

La Vista Previa 3 eliminó la puerta de características de vista previa en Runtime Async. La Vista Previa 4 extiende esto más: ahora las bibliotecas de tiempo de ejecución (todo el BCL, incluyendo System.IO y System.Net.Http) están compiladas con runtime-async. Cada llamada asíncrona al marco ahora usa la nueva maquinaria de continuación, independientemente de si el código consumido ha habilitado la función.

Para bibliotecas que realizan un sustancial I/O (lectura de archivos, descarga de activos remotos, flujo de bytes a través de códecs), esto representa una mejora significativa en el rendimiento de la dependencia sin requerir cambios del lado del consumidor. Andy Gocke del equipo de runtime ha confirmado que DecompressAsync habilitado manualmente produce cero asignaciones adicionales cuando es respaldado por un MemoryStream. Microsoft aún no ha publicado números de referencia oficiales, citando la necesidad de completar su suite completa de pruebas de rendimiento, pero el cambio estructural está en su lugar.

MAUI se traslada a CoreCLR

Este es el cambio arquitectónico más significativo en el lanzamiento, aunque el impacto directo en nuestra línea de productos es limitado. A partir de la Vista Previa 4, las aplicaciones MAUI en Android, iOS y Mac Catalyst se ejecutan en CoreCLR por defecto, concluyendo más de quince años de Mono como el entorno de ejecución móvil para .NET. El mismo entorno de ejecución ahora alimenta ASP.NET Core, aplicaciones de escritorio y móviles. dotnet watch también está disponible para Android e iOS, abordando una de las brechas más frecuentemente citadas en la experiencia del desarrollador de MAUI desde su lanzamiento inicial.

Para los equipos que usan IronBarcode o IronPDF dentro de una aplicación MAUI, el entorno de ejecución subyacente ahora está unificado con el resto del stack .NET.

Limitaciones conocidas y consideraciones

  • El soporte de Visual Studio sigue limitado al canal Insiders. Los equipos en versiones estables de Visual Studio aún no están integrando .NET 11 en el desarrollo principal.
  • Runtime Async ha llegado estructuralmente pero carece de benchmarks oficiales. La cifra ampliamente divulgada de "10M awaitables: 80ms a 32ms, 687MB a 94KB" proviene de un gist de la comunidad en lugar de Microsoft.
  • La transición de MAUI a CoreCLR es un cambio de entorno de ejecución que se envía como predeterminado. Las aplicaciones MAUI existentes deben probarse en dispositivos físicos en lugar de asumirse como una actualización transparente.
  • Como con cualquier vista previa, el despliegue en producción debe esperar al menos al primer candidato a lanzamiento.

Resumen

La Vista Previa 4 representa el conjunto más fuerte de cambios en el ciclo de .NET 11 hasta la fecha. La reescritura del API de Procesos es la actualización más importante para los equipos que construyen o operan software .NET que genera procesos secundarios. Las mejoras en la compresión y Runtime Async se acumulan en cargas de trabajo intensivas de I/O. La historia del entorno de ejecución de MAUI ahora es consistente con el resto de la plataforma.

Nuestro equipo está rastreando activamente cada vista previa y preparando nuestras bibliotecas para la compatibilidad desde el primer día cuando .NET 11 alcance disponibilidad general en noviembre.