NOTíCIAS DO SETOR

LeadByExample() : Jakub Chodounsky sobre Engenharia Pragmática, a Mentalidade YOLO e Por Que as Melhores Práticas Nem Sempre São as Melhores

O quarto preview do .NET 11 já está disponível e traz várias mudanças que afetam materialmente tanto autores de bibliotecas quanto equipes que operam serviços .NET em produção. Na Iron Software, mantemos um portfólio de bibliotecas .NET, o que significa que cada lançamento de preview causa duas avaliações: o que muda para nós como mantenedores e o que muda para os clientes que integram essas bibliotecas em suas aplicações. A seguir, estão as atualizações no Preview 4 que consideramos mais significativas.

API de Processo: a atualização mais significativa em anos

System.Diagnostics.Process recebe sua primeira atualização substancial em vários ciclos de lançamento, e aborda precisamente os pontos de dor que autores de bibliotecas têm contornado por anos. Isso é diretamente relevante para nosso trabalho. IronPDF envolve um processo de renderização Chromium internamente, o que significa que nossa equipe construiu e manteve soluções personalizadas na mesma área que a Microsoft agora padronizou: iniciação de processos, captura de saída sem deadlock, gerenciamento de tempo de vida multiplataforma e comportamento de término confiável.

A nova superfície da API lê como um catálogo de problemas que equipes de bibliotecas têm contornado por anos:

// 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 e stderr para eliminar deadlocks de buffer de tubo. KillOnParentExit e StartDetached fornecem controle multiplataforma sobre o tempo de vida do processo filho no Windows e Linux. InheritedHandles habilita a especificação explícita de quais handles um processo filho herda, substituindo o padrão histórico de herança ampla. A superfície leve SafeProcessHandle produz binários NativeAOT até 20% menores do que a API padrão.

Para qualquer equipe desenvolvendo software .NET que orquestra processos filhos, esta seção das notas de lançamento merece uma revisão cuidadosa.

Para equipes que preferem não construir e manter esta infraestrutura internamente, IronPDF fornece implementações testadas em produção desses padrões prontas: captura de saída sem deadlock, controle de tempo de vida e tratamento de falhas confiável. Inicie uma avaliação gratuita do Iron Suite, sem necessidade de cartão de crédito.

APIs Span-based Deflate, ZLib e GZip

Essa mudança é menos proeminente nas notas de versão, mas materialmente melhora qualquer carga de trabalho que processa dados comprimidos. Documentos PDF contêm streams de conteúdo comprimidos. Arquivos XLSX são arquivos ZIP de XML comprimido. DOCX segue o mesmo padrão. As novas APIs de codificação e decodificação baseadas em span reduzem alocações precisamente nas operações que bibliotecas como IronPDF e IronXL executam continuamente.

Estas são melhorias em nível de infraestrutura que raramente aparecem nos cabeçalhos de lançamento, mas reduzem o custo de cada byte processado através do framework.

Runtime Async, agora compilado nas bibliotecas do framework

O Preview 3 removeu a porta de recursos de preview em Runtime Async. O Preview 4 estende isso ainda mais: as bibliotecas de runtime (todo o BCL, incluindo System.IO e System.Net.Http) agora são compiladas com runtime-async. Cada chamada assíncrona para o framework agora usa a nova maquinaria de continuação, independentemente de o código consumidor ter ativado o recurso.

Para bibliotecas que realizam I/O substancial (leitura de arquivos, download de ativos remotos, streaming de bytes através de codecs), isso representa uma melhoria significativa de desempenho de dependência sem requerer quaisquer mudanças do lado do consumidor. Andy Gocke, da equipe de runtime, confirmou que DecompressAsync habilitado manualmente produz zero alocações adicionais quando suportado por um MemoryStream. A Microsoft ainda não publicou números oficiais de benchmark, citando a necessidade de completar seu conjunto completo de testes de desempenho, mas a mudança estrutural está em vigor.

MAUI se move para CoreCLR

Esta é a mudança arquitetônica mais significativa na versão, embora o impacto direto em nossa linha de produtos seja limitado. Começando com o Preview 4, aplicativos MAUI no Android, iOS e Mac Catalyst executam no CoreCLR por padrão, concluindo mais de quinze anos de Mono como o runtime móvel para .NET. O mesmo runtime agora alimenta ASP.NET Core, aplicativos de desktop e móveis. dotnet watch também agora está disponível para Android e iOS, abordando uma das lacunas mais citadas na experiência do desenvolvedor MAUI desde seu lançamento inicial.

Para equipes usando IronBarcode ou IronPDF dentro de um aplicativo MAUI, o runtime subjacente agora está unificado com o resto da pilha .NET.

Limitações e considerações conhecidas

  • O suporte do Visual Studio permanece limitado ao canal Insiders. Equipes em versões estáveis do Visual Studio ainda não estão integrando o .NET 11 no desenvolvimento principal.
  • Runtime Async foi inserido estruturalmente, mas carece de benchmarks oficiais. A figura amplamente divulgada de "10M awaits: 80ms para 32ms, 687MB para 94KB" origina-se de um trecho comunitário, não da Microsoft.
  • A transição do MAUI para CoreCLR é uma mudança de runtime que é enviada como padrão. Aplicativos MAUI existentes devem ser testados em dispositivos físicos em vez de presumir que é uma atualização transparente.
  • Como em qualquer versão de preview, a implantação em produção deve esperar pelo menos o primeiro candidato a lançamento.

Resumo

O Preview 4 representa o conjunto mais forte de mudanças no ciclo do .NET 11 até hoje. A reescrita da API de Processo é a atualização mais consequente para equipes que constroem ou operam software .NET que cria processos filhos. As melhorias de compressão e Runtime Async se acumulam em cargas de trabalho intensivas de I/O. A história do runtime do MAUI agora é consistente com o resto da plataforma.

Nossa equipe está ativamente acompanhando cada preview e preparando nossas bibliotecas para compatibilidade no primeiro dia, quando o .NET 11 alcançar disponibilidade geral em novembro.