Build incremental .NET Core 2.1

Há menos de duas semanas saiu o primeiro preview público do dotnet core 2.1, chamado de preview 1. Este preview é o primeiro de uma série (que não sabemos o tamanho) antes da versão RTM.

Para saber mais: anúncio oficial: .NET Core Preview 1.

Vocês já podem começar a testar e experimentar as novidades hoje mesmo no Windows, Mac e Linux:
.NET Core 2.1 Preview 1 SDK — includes the Runtime
.NET Core 2.1 Preview 1 Runtime

As novidades podem ser percebidas em temas:

  • Faster Build Performance
  • Close gaps in ASP.NET Core and EF Core
  • Improve compatibility with .NET Framework
  • GDPR and Security
  • Microservices and Azure
  • More capable Engineering System

Vale uma nota do time do .NET Core de que nem todos estes temas estão disponíveis no Preview 1, mas são o foco do trabalho sendo executado.

Builds mais rápidos

A performance dos builds ficou melor para builds e builds incrementais, conforme pode ser vist no gráfico abaixo:

Build incremental .NET Core 2.1

Build incremental .NET Core 2.1

Minor-version Roll-forward

Agora as aplicações .NET Core serão executadas sempre na minor version mais recente disponível. Uma aplicação feita para rodar em 2.0 vai rodasr em 2.1 se a versão 2.1 estiver disponível.

Isso não é válido, no entanto, para major versions. Então a aplicação 2.0, que roda em 2.1 ou 2.5, não rodará em 3.0, mesmo que 3.0 esteja disponível na máquina.

A ideia é que minor versions geralmente contém melhorias, updates de segurança, etc.

Global tools

.NET Core global tools são ferramentas console que podem ser instaladas de maneira global e se tornam disponíveis independente da sessão do console/terminal, da máquina terr sido reiniciada, etc. O conceito foi inspirado nas global tools do npm.

Depois de instalar o .NET Core 2.1 preview1 você pode rodar:

dotnet install tool -g dotnetps

e então executar do seu terminal

dotnetps

Para ler mais ou contribuir com o dotnetps acesse o github do projeto, que é uma tool opensource mantida pela Lambda3.

Span<T>, friends e melhorias colaterais

Alguns novos tipos foram inseridos no .NET Core 2.0, dentre eles Span<T>. Estes tipos tem um papel fundamental em ajudar o .NET a ser mais rápido e eficiente em termos de uso e alocação de memória.

Utilizando Span<T> algumas melhorias vieram (e virão) para o preview1 como a reescrita de um HttpClientHandler utilizando esses benefícios. O uso de sockets passa a usar o próprio .NET em uma implementação mais rápida e eficiente e não mais implementações nativas, eliminando alguns problemas.

Docker

Algumas mudanças e novidades vieram nas imagens oficiais do .NET Core para Docker:

  • Added Alpine runtime and SDK images (x64).
  • Added Ubuntu Bionic/18.04, for runtime and SDK images (x64 and ARM32).
  • Switched from debian:stretch to debian:stretch-slim for runtime images. (x64 and ARM32).
  • Dropped debian:jessie (runtime and SDK).

Resumo

Tem bastante coisa bacana e interessante chegando no .NET Core 2.1 com o Preview 1. Estas melhorias se tornam ainda mais interessantes quando pensamos em ferramentas como o ASP.NET Core, que se beneficiam diretamente das melhorias de performance e para muitas de nós são o ambiente diário de desenvolvimento.

Entender e estudar mais Span<T> e os outros tipos relacionados de certo trará um grande benefício para os próximos anos no desenvolvimento de softwrae na plataforma .NET.

Para saber mais: anúncio oficial: .NET Core Preview 1.

Vinicius Quaiato