Data de Atualização

Controllers no .NET 11: ShortCircuit, unions e validação
Os controllers no .NET 11 ganham o atributo ShortCircuit, que tira health checks do pipeline de middlewares, e suporte aos union types do C# 15. A validação assíncrona com AsyncValidationAttribute segue exclusiva das Minimal APIs. A recomendação é manter apps existentes no .NET 10, já que ambos perdem suporte em 2028, e usar Minimal APIs em projetos novos.

C# 15: union types e outras novidades
O C# 15 chega com o .NET 11 e traz union types, que fecham a lista de tipos de um valor e tornam o switch exaustivo, closed hierarchies, que limitam a herança ao assembly, extension indexers, argumentos with em collection expressions e labeled break e continue. No .NET 10, migrar raramente compensa, pois o suporte acaba no mesmo mês; projetos novos devem nascer no .NET 11.

Claude Sheets e Whiteboards: o que muda no Claude
O Claude Sheets é a planilha da Anthropic, em beta, que o Claude cria e edita com abas, fórmulas e listas suspensas. Chegou com o Claude Whiteboards, quadro para brainstorming em equipe, e o Claude Data, antigo Dashboards, com métricas certificadas e compartilhamento ao vivo. A tese é manter o trabalho no Claude e exportar para Excel, Miro ou parceiros só quando preciso.

Lançamento do .NET 11: o que chegou e como atualizar
A Microsoft concluiu o lançamento do .NET 11, versão STS com dois anos de suporte. Os destaques são union types e hierarquias fechadas no C# 15, CLI com Native AOT e MSBuild aquecido, Runtime Async em preview, Zstandard e FullJoin nas bibliotecas, validação assíncrona e OpenAPI 3.2 no ASP.NET Core e CoreCLR no MAUI. A recomendação é sair do .NET 8 e do 9, que perderam suporte.

Sintaxe do C#: guia rápido com exemplos do C# 14
A sintaxe do C# 14 com o .NET 10 elimina boa parte do código cerimonial. O guia mostra, com exemplos, top-level statements, csproj, namespaces, tipos, expressões de coleção, métodos, class, record e struct, a palavra-chave field, pattern matching, operadores de nulo, LINQ, async/await e extension members, e recomenda dominar o básico antes de records, LINQ e async.

WinApp CLI 0.8: o que muda com o WinUI DevTools
O WinApp CLI 0.8 traz o WinUI DevTools em preview, que inspeciona a árvore visual, testa propriedades ao vivo e salva comentários para agentes de código. Também chegam o profiling via ETW com winapp perf, suporte a projetos vcxproj e a opção unique-identity para checkouts paralelos. As edições do DevTools são temporárias e o profiling não mede GPU.

Async await no C#: o que acontece com um await eterno
Um async await sobre uma Task que nunca termina não bloqueia thread: a continuação fica numa ilha de referências que o GC coleta sem executar o finally. Só há vazamento quando uma raiz de vida longa, como um SemaphoreSlim estático, segura a espera. O runtime async do .NET 11 não muda isso. Recomenda-se completar todo TaskCompletionSource e usar timeouts e cancelamento.

Claude Fable 5.2: novidades, preços e benchmarks
O Claude Fable 5.2 é o novo modelo de classe Mythos da Anthropic, com o Mythos 5.2 como versão sem salvaguardas. Custa US$ 8 e US$ 40 por milhão de tokens, gera até 30% mais rápido e lidera quase todos os benchmarks, inclusive com nota de Opus Max pela metade do custo. As salvaguardas bloqueiam 55% menos. A recomendação: Opus 5.5 no dia a dia e Fable em tarefas longas.

Collection expression arguments: como usar no C# 15
Collection expression arguments, novidade do C# 15, permitem passar argumentos ao construtor ou ao método Create de uma coleção com um elemento with(...) no início dos colchetes. O recurso cobre capacidade em List, comparador em HashSet, tipos com CollectionBuilder e interfaces como IList, mas exige o with primeiro e não aceita dynamic, arrays nem spans.

Garbage collector no .NET: meça antes de ajustar
O garbage collector no .NET reaproveita a memória de objetos inalcançáveis, mas uso alto de memória tem causas distintas. A tese é medir antes de ajustar: medir alocações com GetAllocatedBytesForCurrentThread e dotnet-trace, reduzi-las com Span, ArrayPool e StringBuilder, controlar o tempo de vida com Dispose e eventos e só então avaliar server GC, DATAS, LOH e regiões sem GC.

Memória de agentes: componentes e dreaming no Claude
A memória de agentes é o conhecimento que o Claude guarda entre sessões. O estudo da Anthropic mostra que modelos novos fecham o ciclo de aprendizado e salvam só o essencial, que regras fixas como registrar só falhas reduzem o ganho e que o dreaming revisa transcrições para corrigir notas, criar wikis úteis quando a resposta cruza fontes e manter pequena a camada injetada.

Permissões do Claude Code: como proteger projetos .NET
No auto mode, um classificador decide o que é seguro, mas deixa passar ações incômodas em projetos .NET, como migrations do EF Core escritas à mão e o app rodando em segundo plano. As permissões do Claude Code resolvem isso com regras ask para dotnet ef migrations add e dotnet run, e deny para editar Migrations e atualizar o banco. Deny vence ask e allow em qualquer arquivo.

Queue-based load leveling: o que é e quando falha
O queue-based load leveling põe uma fila entre produtores e consumidores e nivela picos, mas não reduz o trabalho. Um pico de dez minutos gera 240 mil mensagens e 23 minutos de latência; com média acima da capacidade, a fila nunca drena. A recomendação é calcular média e headroom, limitar instâncias vezes concorrência, usar TimeToLive e descartar carga no produtor.

Render modes no Blazor: qual escolher em cada cenário
Os render modes no Blazor definem, desde o .NET 8, onde cada página ou componente executa. Static SSR atende conteúdo e SEO, Interactive Server serve sistemas internos, Interactive WebAssembly cobre offline e CDN, Interactive Auto une carga rápida e execução no cliente, e o Hybrid vai para apps nativos. A tese é começar estático e adicionar interatividade só onde importa.

Skills em pacotes NuGet: como entregar skills para agentes
Skills em pacotes NuGet são arquivos SKILL.md distribuídos ao lado das DLLs, que o dotnet restore entrega ao agente com instruções da versão exata. A Microsoft mostra a descoberta com dotnet-inspect e dotnet-package-skills, recomenda avaliar as skills com modelos de fronteira para não encarecer o uso e alerta que markdown lido por agentes é um novo vetor de ameaça.

Webhooks no .NET: o que são e como implementar
Webhooks invertem o polling: o sistema externo faz um POST para a sua URL quando o evento ocorre, sem atraso nem consultas repetidas. No .NET 10, o emissor usa IHttpClientFactory e PostAsJsonAsync; o receptor usa MapPost, um singleton com ConcurrentQueue e um evento que o Blazor trata com InvokeAsync. Em produção, use HTTPS, valide assinaturas e trate reenvios com idempotência.

Message threads no Claude: menos latência em agentes
Message threads da Claude API guardam a conversa no servidor por até 5 minutos, e cada turno envia só as mensagens novas e o id da resposta anterior. No Claude Code, sessões de 500 mil a 1 milhão de tokens tiveram queda de cerca de 35% no tempo até o primeiro token, sem mudar o consumo de tokens. O uso exige guardar a conversa, manter campos fixos e fazer replay após erro 404.

Lazy<T> no C#: modos de thread safety e exceções
O Lazy<T> adia a criação de objetos, e o LazyThreadSafetyMode define dois comportamentos juntos: None não protege threads, PublicationOnly deixa threads disputarem a fábrica e ExecutionAndPublication executa uma vez. Só PublicationOnly não guarda exceções. Para falhas transitórias, use retry na fábrica, PublicationOnly ou LazyInitializer.

Cache no .NET: FusionCache, Output Cache e qual escolher
O FusionCache usa L1 e L2 como o HybridCache, mas sincroniza instâncias com backplane no Redis e traz fail-safe, timeouts e eager refresh. O Output Cache guarda a resposta HTTP inteira e pula handler e banco. A escolha do cache no .NET depende de instâncias e tolerância a dado antigo: Output Cache na frente, cache híbrido nos handlers e IMemoryCache só para não serializáveis.

PostgreSQL no VS Code: como usar a extensão com Copilot
A extensão PostgreSQL da Microsoft leva conexão, SQL e diagnóstico para o VS Code. O artigo mostra como conectar com perfis e Entra ID, escrever e reescrever consultas com IntelliSense e plano de execução, mapear um banco herdado com o Schema Visualizer e o @pgsql, e investigar performance com evidências, modo somente leitura no Copilot e índice com plano de reversão.

Percorrer lista em C#: todas as formas, com benchmark
Para percorrer lista em C#, o foreach é o padrão, o for atende quando há índice ou substituição, e Index() une os dois no .NET 9. Remoções pedem RemoveAll ou for reverso, async pede await foreach ou Parallel.ForEachAsync. No benchmark, for e foreach empatam, AsSpan é até 26% mais rápido, List.ForEach 1,5 vez e Index() 5,6 vezes mais lentos.

ID gerado pelo banco: por que gerar o ID antes de salvar
O ID gerado pelo banco força APIs assíncronas a criar registros provisórios, IDs de operação e eventos gordos, pois o identificador só existe após o insert. Num caso de logística, a solução é gerar o ID no cliente antes da requisição, correlacionar o fluxo por ele, publicar eventos só com o ID e compor a tela por fronteira, com Guid.CreateVersion7 e ValueGeneratedNever no .NET.

Verificação formal com IA: como o Claude prova código
A Anthropic e a Theorem usaram o Claude para transformar fuzz tests do OSS-Fuzz em provas Rocq e provaram ausência de crash em 239 pontos de entrada de 123 bibliotecas. A verificação formal achou bugs que o fuzzing não pegava, ficou mais barata com modelos novos e reuso de provas, mas só vale para binários RISC-V e para a base confiável.

ValidateOnStart no .NET: como validar IOptions no startup
O ValidateOnStart faz o .NET validar as options na inicialização do host, e não no primeiro acesso a IOptions.Value. Sem ele, uma chave ausente só gera OptionsValidationException na primeira requisição. O artigo liga o appsettings.json a uma classe com Data Annotations e tipos anuláveis, ativa ValidateDataAnnotations e ValidateOnStart e cobre Validate e IValidateOptions.