Novidades no .NET 8.0

A Microsoft tem trabalhado na nova versão do .NET, a versão 8.0. São diversas novidades que vem para melhorar desempenho, facilidade, devops e muito mais! Confira as novidades:

Comandos ‘dotnet publish’ e ‘dotnet pack’

Por padrão, agora o publish e o pack gerarão artefatos em release. Para gerar os artefatos em debug, será necessário incluir um parâmetro “-p:PublishRelease=false“. Veja um exemplo:

/app# dotnet new console
/app# dotnet build
  app -> /app/bin/Debug/net8.0/app.dll
/app# dotnet publish
  app -> /app/bin/Release/net8.0/app.dll
  app -> /app/bin/Release/net8.0/publish/
/app# dotnet publish -p:PublishRelease=false
  app -> /app/bin/Debug/net8.0/app.dll
  app -> /app/bin/Debug/net8.0/publish/

System.Text.Json

O System.Text.Json recebeu várias melhorias para serialização e desserialização, tais como:

  • Melhorias de desempenho e confiabilidade do gerador de origem quando usados com o ASP.NET Core em aplicativos AOT nativos;
  • Agora o gerador de origem dá suporte à serialização de tipos com as propriedades required e init. Ambos já tinham suporte na serialização baseada em reflexão;
  • Possibilidade de personalizar o gerenciamento de membros que não estão no conteúdo JSON;
  • Suporte para serialização de propriedades de hierarquias de interface;
  • Novas políticas de nomenclaturas no JsonNamingPolicy para as conversões de nome de propriedades;
  • JsonSerializerOptions.MakeReadOnly() fornece controle explícito sobre quando uma instância JsonSerializerOptions é marcada como “somente leitura”.

Trabalhando com Aleatoriedade

Foram criados dois novos métodos em System.Random e System.Security.Cryptography.RandomNumberGenerator para trabalhar com aleatoriedade. Os métodos são:

  • GetItems<T>(): Este método permite que você escolha aleatoriamente um número especificado de itens de um conjunto de entrada;
  • Shuffle<T>(): Este método permite que você randomize a ordem de um intervalo. Esses métodos são úteis para reduzir o desvio de treinamento no machine learning (portanto, a primeira etapa nem sempre é o treinamento e a última é sempre um teste).

Tipos para Desempenho

Novos tipos foram criados com foco em depempenho, são eles:

  • O novo namespace System.Collections.Frozen inclui os tipos de coleção FrozenDictionary<TKey, TValue> e FrozenSet<T>. Esses tipos não permitem alterações em chaves e valores depois que uma coleção é criada. Esse requisito permite operações de leitura mais rápidas (por exemplo, TryGetValue());
  • O novo tipo System.Buffers.IndexOfAnyValues<T> foi projetado para ser passado para métodos que procuram a primeira ocorrência de qualquer valor na coleção passada;
  • O novo tipo System.Text.CompositeFormat é útil para otimizar cadeias de caracteres de formato que não são conhecidas no tempo de compilação (por exemplo, se a cadeia de caracteres de formato for carregada em um arquivo de recurso);
  • Novos tipos System.IO.Hashing.XxHash3 e System.IO.Hashing.XxHash128 fornecem implementações dos algoritmos de hash XXH3 e XXH128 rápidos.

Demais Novidades

Outras novidades incluem melhorias nos namespaces System.Numerics e System.Runtime.Intrinsics, Novos Atributos de validação de dados, Suporte à introspecção para ponteiros de função e AOT nativo.

Você pode conferir todas as novidades e mais detalhes e aprofundamentos aqui: https://learn.microsoft.com/pt-br/dotnet/core/whats-new/dotnet-8.

Até a próxima 🙂

Share