.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.
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:
Este código utiliza as Collection Expressions para criar
coleções de forma concisa, substituindo a sintaxe tradicional de construtores
por colchetes [].
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"];
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:
NET - Unit of Work - Padrão Unidade de ...