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
einit
. 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 🙂