.NET 11 - Preview 1 : Novidades


   Neste artigo eu apresento um resumo das novidades do .NET 11 na sua versão Preview 1

Antes de mergulharmos nos detalhes, um aviso rápido: as versões Preview são de acesso antecipado. As APIs e comportamentos podem mudar até o lançamento final (GA), e elas geralmente não possuem suporte para ambiente de produção. Esta versão é a 11.0.100-preview.1 com o runtime 11.0.0-preview.1.

c



NET 11 Preview 1: O Que Você Precisa Saber Sobre o Futuro do Framework

Planejamento: Por que o .NET 11 é importante (mesmo que você use .NET 10 LTS)

A política de suporte da Microsoft é bem definida:

-   As versões principais do .NET saem anualmente em novembro.
-   STS (Standard Term Support) = anos ímpares; LTS (Long Term Support) = anos pares.
-   O .NET 11 (2026) será uma versão STS — focada em iteração rápida, com uma janela de
  suporte menor que a LTS (agora padronizada em 24 meses desde o .NET 9).

- Data Chave: O marco final do .NET 11.0.0 está previsto para 20 de novembro de 2026.

Mudança Importante: Novos Requisitos Mínimos de Hardware

Esta é a mudança de maior impacto operacional no Preview 1. O .NET 11 exige hardwares mais modernos:

-  Salto no x64: A base passa de x86–64-v1 para x86–64-v2.
ReadyToRun (R2R): Agora foca em bases mais novas, incluindo x86–64-v3 no Windows/Linux.
Windows no Arm64: Requisitos de base também ficaram mais rígidos.

Tradução prática: O .NET 11 pode falhar ao rodar em CPUs antigas, VMs legadas ou dispositivos de borda (edge hardware). Se você mantém infraestruturas antigas, valide a compatibilidade cedo.

Runtime: "Runtime Async" é o grande destaque

O Preview 1 introduz o Runtime Async — uma nova infraestrutura a nível de runtime para métodos assíncronos. O objetivo é destravar melhores ferramentas e performance para códigos intensivos em async/await.

- Suporte no CoreCLR habilitado por padrão.
- Suporte base para Native AOT.
- As bibliotecas principais ainda não foram compiladas com isso (esperado para depois).

Bibliotecas: Zstandard (zstd) chega à BCL

Se você manipula grandes volumes de dados, isso é excelente: APIs nativas de compressão Zstandard agora estão nas bibliotecas do .NET (ZstandardStream).
// Exemplo rápido de Compressão
using var compressStream = new ZstandardStream(outputStream, CompressionMode.Compress);
await inputStream.CopyToAsync(compressStream);

// Exemplo de Descompressão
using var decompressStream = new ZstandardStream(inputStream, CompressionMode.Decompress);
await decompressStream.DecompressAsync(outputStream);

O código utiliza o padrão using var para gerenciar automaticamente o ciclo de vida dos streams, garantindo que os recursos sejam liberados após a operação.

A compressão é realizada de forma assíncrona com CopyToAsync, enquanto a descompressão utiliza o método dedicado DecompressAsync para restaurar os dados originais.

Essa implementação nativa elimina a dependência de bibliotecas externas (NuGet), simplificando a arquitetura de aplicações que lidam com grandes volumes de dados.

O HttpClient também ganhou suporte automático com DecompressionMethods.Zstandard.

Melhorias no ZIP: Menos consumo de memória

1- Acesso Somente-Leitura: Novos overloads de ZipArchiveEntry.Open(FileAccess) permitem leitura sem carregar tudo em memória no modo de atualização.

2- Atenção: Há uma mudança de comportamento na criação assíncrona de ZIPs que pode gerar variações inesperadas de memória em cargas de trabalho reais.

Unicode: Suporte a Rune nas APIs de String

Finalmente, o suporte a System.Text.Rune foi expandido para operações comuns como Contains, StartsWith, Replace e Split. Se você já sofreu com emojis ou caracteres especiais (surrogate pairs), essa é a solução definitiva para a correção de testo.

Nota:. O System.Text.Rune é uma struct que representa um valor escalar do Unicode, garantindo que um caractere seja tratado como uma unidade única e válida.

Segurança: Verificação HMAC em uma única chamada

As APIs de criptografia ganharam helpers do tipo Verify para cenários HMAC/KMAC, reduzindo padrões propensos a erros e incentivando verificações seguras de tempo constante.

Networking: Happy Eyeballs + SOCKS5h

- Happy Eyeballs (RFC 8305): Reduz a latência em conexões dual-stack (IPv4/IPv6).
- SOCKS5h: Suporte para resolução de DNS no lado do proxy.

SDK e CLI: Melhores padrões e interatividade

- dotnet run: Agora permite seleção interativa de Target Framework e dispositivos (ótimo para multi-targeting).
- dotnet test: Suporte a argumentos posicionais.
- dotnet watch: Melhorias no Hot Reload ao alterar referências.

.NET MAUI e Blazor

MAUI: Geração de fonte XAML ligada por padrão e CoreCLR como runtime padrão para builds de Release no Android.

ASP.NET Core: Melhorias no OpenAPI para descrever corretamente respostas de arquivos binários e novas ergonomias de navegação no Blazor.

EF Core 11: Exclusivo para .NET 11

O EF Core 11 agora exige o SDK e Runtime do .NET 11. Não rodará em versões anteriores ou no .NET Framework.

Destaque: dotnet ef database update --add para criar e aplicar uma migração em um único passo.

C# 15: Argumentos em Expressões de Coleção

O C# continua evoluindo. Veja como ficou mais limpo definir capacidades ou comparadores:
string[] values = ["um", "dois", "três"];

// Define capacidade e propaga os valores
List<string> nomes = [with(capacity: values.Length * 2), .. values];

// Define o comparador diretamente na inicialização
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Ola", "OLA"];
Este código utiliza as Collection Expressions para criar coleções de forma concisa, substituindo a sintaxe tradicional de construtores por colchetes [].

O modificador with(capacity: ...) define a reserva de memória inicial, enquanto o operador .. (spread) insere eficientemente elementos de outra sequência.

A sintaxe permite configurar instâncias complexas, como um HashSet com comparador customizado, diretamente no ato da declaração dos dados.

O resultado é um código mais declarativo e legível, que centraliza a configuração de performance e comportamento em uma única linha.

Considerações Finais

O .NET 11 Preview 1 entrega melhorias imediatas (Zstandard, APIs de Rune, CLI) enquanto prepara o terreno para mudanças profundas no runtime. Se você está usando o .NET 10 LTS, continue com ele por segurança, mas comece a testar o Preview 1 para validar compatibilidade de hardware e de performance.

E estamos conversados...  

"O justo se informa da causa dos pobres, mas o ímpio nem sequer toma conhecimento."
Provérbios 29:7

Referências:


José Carlos Macoratti